From 0bb1ca24d1c8c5052f315f72eed72564e823f4ca Mon Sep 17 00:00:00 2001 From: felipebpl Date: Sun, 5 Jun 2022 20:55:35 -0300 Subject: [PATCH 01/23] adicionando pasta inicial --- .../ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo | Bin 0 -> 18944 bytes .../ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln | 22 + .../ACC_EXAMPLE1.componentinfo.xml | 4 + .../ACC_EXAMPLE1/ACC_EXAMPLE1.cproj | 1263 +++ .../src/ASF/common/boards/board.h | 453 ++ .../src/ASF/common/services/clock/genclk.h | 189 + .../src/ASF/common/services/clock/osc.h | 175 + .../src/ASF/common/services/clock/pll.h | 331 + .../ASF/common/services/clock/same70/genclk.h | 320 + .../ASF/common/services/clock/same70/osc.h | 237 + .../ASF/common/services/clock/same70/pll.h | 259 + .../ASF/common/services/clock/same70/sysclk.c | 258 + .../ASF/common/services/clock/same70/sysclk.h | 463 ++ .../src/ASF/common/services/clock/sysclk.h | 184 + .../src/ASF/common/services/gpio/gpio.h | 76 + .../common/services/gpio/sam_gpio/sam_gpio.h | 73 + .../src/ASF/common/services/ioport/ioport.h | 538 ++ .../common/services/ioport/sam/ioport_pio.h | 373 + .../services/serial/sam_uart/uart_serial.h | 679 ++ .../src/ASF/common/services/serial/serial.h | 269 + .../ASF/common/services/serial/usart_serial.c | 77 + .../common/services/sleepmgr/sam/sleepmgr.c | 44 + .../common/services/sleepmgr/sam/sleepmgr.h | 111 + .../ASF/common/services/sleepmgr/sleepmgr.h | 263 + .../src/ASF/common/utils/interrupt.h | 132 + .../utils/interrupt/interrupt_sam_nvic.c | 76 + .../utils/interrupt/interrupt_sam_nvic.h | 179 + .../ACC_EXAMPLE1/src/ASF/common/utils/parts.h | 1768 ++++ .../src/ASF/common/utils/stdio/read.c | 164 + .../utils/stdio/stdio_serial/stdio_serial.h | 119 + .../src/ASF/common/utils/stdio/write.c | 143 + .../src/ASF/sam/boards/same70_xplained/init.c | 600 ++ .../src/ASF/sam/boards/same70_xplained/led.h | 71 + .../boards/same70_xplained/same70_xplained.h | 659 ++ .../src/ASF/sam/drivers/acc/acc.c | 428 + .../src/ASF/sam/drivers/acc/acc.h | 372 + .../sam/drivers/acc/acc_example/acc_example.h | 101 + .../src/ASF/sam/drivers/afec/afec.c | 730 ++ .../src/ASF/sam/drivers/afec/afec.h | 797 ++ .../src/ASF/sam/drivers/dacc/dacc.c | 646 ++ .../src/ASF/sam/drivers/dacc/dacc.h | 140 + .../src/ASF/sam/drivers/mpu/mpu.c | 178 + .../src/ASF/sam/drivers/mpu/mpu.h | 190 + .../src/ASF/sam/drivers/pio/pio.c | 1173 +++ .../src/ASF/sam/drivers/pio/pio.h | 367 + .../src/ASF/sam/drivers/pio/pio_handler.c | 286 + .../src/ASF/sam/drivers/pio/pio_handler.h | 59 + .../src/ASF/sam/drivers/pmc/pmc.c | 1723 ++++ .../src/ASF/sam/drivers/pmc/pmc.h | 546 ++ .../src/ASF/sam/drivers/pmc/sleep.c | 381 + .../src/ASF/sam/drivers/pmc/sleep.h | 117 + .../src/ASF/sam/drivers/uart/uart.c | 552 ++ .../src/ASF/sam/drivers/uart/uart.h | 150 + .../src/ASF/sam/drivers/usart/usart.c | 2094 +++++ .../src/ASF/sam/drivers/usart/usart.h | 773 ++ .../cmsis/same70/include/component/acc.h | 141 + .../cmsis/same70/include/component/aes.h | 203 + .../cmsis/same70/include/component/afec.h | 495 ++ .../cmsis/same70/include/component/chipid.h | 128 + .../cmsis/same70/include/component/dacc.h | 217 + .../cmsis/same70/include/component/efc.h | 123 + .../cmsis/same70/include/component/gmac.h | 1307 +++ .../cmsis/same70/include/component/gpbr.h | 58 + .../cmsis/same70/include/component/hsmci.h | 347 + .../cmsis/same70/include/component/i2sc.h | 174 + .../cmsis/same70/include/component/icm.h | 229 + .../cmsis/same70/include/component/isi.h | 293 + .../cmsis/same70/include/component/matrix.h | 328 + .../cmsis/same70/include/component/mcan.h | 940 +++ .../cmsis/same70/include/component/pio.h | 1722 ++++ .../cmsis/same70/include/component/pmc.h | 774 ++ .../cmsis/same70/include/component/pwm.h | 656 ++ .../cmsis/same70/include/component/qspi.h | 235 + .../cmsis/same70/include/component/rstc.h | 84 + .../cmsis/same70/include/component/rswdt.h | 77 + .../cmsis/same70/include/component/rtc.h | 246 + .../cmsis/same70/include/component/rtt.h | 76 + .../cmsis/same70/include/component/sdramc.h | 185 + .../cmsis/same70/include/component/smc.h | 160 + .../cmsis/same70/include/component/spi.h | 178 + .../cmsis/same70/include/component/ssc.h | 292 + .../cmsis/same70/include/component/supc.h | 306 + .../utils/cmsis/same70/include/component/tc.h | 365 + .../cmsis/same70/include/component/trng.h | 85 + .../cmsis/same70/include/component/twihs.h | 275 + .../cmsis/same70/include/component/uart.h | 167 + .../cmsis/same70/include/component/usart.h | 492 ++ .../cmsis/same70/include/component/usbhs.h | 952 +++ .../cmsis/same70/include/component/utmi.h | 68 + .../cmsis/same70/include/component/wdt.h | 77 + .../cmsis/same70/include/component/xdmac.h | 633 ++ .../utils/cmsis/same70/include/instance/acc.h | 63 + .../utils/cmsis/same70/include/instance/aes.h | 77 + .../cmsis/same70/include/instance/afec0.h | 103 + .../cmsis/same70/include/instance/afec1.h | 103 + .../cmsis/same70/include/instance/chipid.h | 47 + .../cmsis/same70/include/instance/dacc.h | 73 + .../utils/cmsis/same70/include/instance/efc.h | 55 + .../cmsis/same70/include/instance/gmac.h | 385 + .../cmsis/same70/include/instance/gpbr.h | 45 + .../cmsis/same70/include/instance/hsmci.h | 85 + .../cmsis/same70/include/instance/i2sc0.h | 65 + .../cmsis/same70/include/instance/i2sc1.h | 65 + .../utils/cmsis/same70/include/instance/icm.h | 73 + .../utils/cmsis/same70/include/instance/isi.h | 95 + .../cmsis/same70/include/instance/matrix.h | 123 + .../cmsis/same70/include/instance/mcan0.h | 141 + .../cmsis/same70/include/instance/mcan1.h | 141 + .../cmsis/same70/include/instance/pioa.h | 171 + .../cmsis/same70/include/instance/piob.h | 171 + .../cmsis/same70/include/instance/pioc.h | 171 + .../cmsis/same70/include/instance/piod.h | 171 + .../cmsis/same70/include/instance/pioe.h | 171 + .../utils/cmsis/same70/include/instance/pmc.h | 123 + .../cmsis/same70/include/instance/pwm0.h | 259 + .../cmsis/same70/include/instance/pwm1.h | 259 + .../cmsis/same70/include/instance/qspi.h | 77 + .../cmsis/same70/include/instance/rstc.h | 49 + .../cmsis/same70/include/instance/rswdt.h | 48 + .../utils/cmsis/same70/include/instance/rtc.h | 71 + .../utils/cmsis/same70/include/instance/rtt.h | 51 + .../cmsis/same70/include/instance/sdramc.h | 71 + .../utils/cmsis/same70/include/instance/smc.h | 87 + .../cmsis/same70/include/instance/spi0.h | 67 + .../cmsis/same70/include/instance/spi1.h | 67 + .../utils/cmsis/same70/include/instance/ssc.h | 81 + .../cmsis/same70/include/instance/supc.h | 57 + .../utils/cmsis/same70/include/instance/tc0.h | 139 + .../utils/cmsis/same70/include/instance/tc1.h | 139 + .../utils/cmsis/same70/include/instance/tc2.h | 139 + .../utils/cmsis/same70/include/instance/tc3.h | 139 + .../cmsis/same70/include/instance/trng.h | 57 + .../cmsis/same70/include/instance/twihs0.h | 79 + .../cmsis/same70/include/instance/twihs1.h | 79 + .../cmsis/same70/include/instance/twihs2.h | 79 + .../cmsis/same70/include/instance/uart0.h | 67 + .../cmsis/same70/include/instance/uart1.h | 67 + .../cmsis/same70/include/instance/uart2.h | 67 + .../cmsis/same70/include/instance/uart3.h | 66 + .../cmsis/same70/include/instance/uart4.h | 67 + .../cmsis/same70/include/instance/usart0.h | 107 + .../cmsis/same70/include/instance/usart1.h | 107 + .../cmsis/same70/include/instance/usart2.h | 107 + .../cmsis/same70/include/instance/usbhs.h | 245 + .../cmsis/same70/include/instance/utmi.h | 47 + .../utils/cmsis/same70/include/instance/wdt.h | 49 + .../cmsis/same70/include/instance/xdmac.h | 751 ++ .../cmsis/same70/include/pio/same70j19.h | 398 + .../cmsis/same70/include/pio/same70j19b.h | 398 + .../cmsis/same70/include/pio/same70j20.h | 398 + .../cmsis/same70/include/pio/same70j20b.h | 398 + .../cmsis/same70/include/pio/same70j21.h | 398 + .../cmsis/same70/include/pio/same70j21b.h | 398 + .../cmsis/same70/include/pio/same70n19.h | 489 ++ .../cmsis/same70/include/pio/same70n19b.h | 495 ++ .../cmsis/same70/include/pio/same70n20.h | 489 ++ .../cmsis/same70/include/pio/same70n20b.h | 495 ++ .../cmsis/same70/include/pio/same70n21.h | 489 ++ .../cmsis/same70/include/pio/same70n21b.h | 495 ++ .../cmsis/same70/include/pio/same70q19.h | 685 ++ .../cmsis/same70/include/pio/same70q19b.h | 697 ++ .../cmsis/same70/include/pio/same70q20.h | 685 ++ .../cmsis/same70/include/pio/same70q20b.h | 697 ++ .../cmsis/same70/include/pio/same70q21.h | 685 ++ .../cmsis/same70/include/pio/same70q21b.h | 697 ++ .../sam/utils/cmsis/same70/include/same70.h | 77 + .../utils/cmsis/same70/include/same70j19.h | 611 ++ .../utils/cmsis/same70/include/same70j19b.h | 617 ++ .../utils/cmsis/same70/include/same70j20.h | 613 ++ .../utils/cmsis/same70/include/same70j20b.h | 618 ++ .../utils/cmsis/same70/include/same70j21.h | 618 ++ .../utils/cmsis/same70/include/same70j21b.h | 625 ++ .../utils/cmsis/same70/include/same70n19.h | 657 ++ .../utils/cmsis/same70/include/same70n19b.h | 670 ++ .../utils/cmsis/same70/include/same70n20.h | 659 ++ .../utils/cmsis/same70/include/same70n20b.h | 672 ++ .../utils/cmsis/same70/include/same70n21.h | 657 ++ .../utils/cmsis/same70/include/same70n21b.h | 670 ++ .../utils/cmsis/same70/include/same70q19.h | 715 ++ .../utils/cmsis/same70/include/same70q19b.h | 734 ++ .../utils/cmsis/same70/include/same70q20.h | 716 ++ .../utils/cmsis/same70/include/same70q20b.h | 735 ++ .../utils/cmsis/same70/include/same70q21.h | 716 ++ .../utils/cmsis/same70/include/same70q21b.h | 735 ++ .../source/templates/gcc/startup_same70.c | 432 + .../same70/source/templates/system_same70.c | 255 + .../same70/source/templates/system_same70.h | 75 + .../ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h | 1189 +++ .../ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h | 84 + .../src/ASF/sam/utils/header_files/io.h | 147 + .../same70/same70q21/gcc/flash.ld | 174 + .../src/ASF/sam/utils/make/Makefile.sam.in | 486 ++ .../src/ASF/sam/utils/preprocessor/mrepeat.h | 329 + .../ASF/sam/utils/preprocessor/preprocessor.h | 45 + .../src/ASF/sam/utils/preprocessor/stringz.h | 75 + .../src/ASF/sam/utils/preprocessor/tpaste.h | 95 + .../src/ASF/sam/utils/status_codes.h | 103 + .../src/ASF/sam/utils/syscalls/gcc/syscalls.c | 134 + .../ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt | 20 + .../CMSIS_END_USER_LICENCE_AGREEMENT.pdf | Bin 0 -> 179946 bytes .../CMSIS/Include/arm_common_tables.h | 121 + .../CMSIS/Include/arm_const_structs.h | 66 + .../ASF/thirdparty/CMSIS/Include/arm_math.h | 7157 +++++++++++++++++ .../thirdparty/CMSIS/Include/cmsis_compiler.h | 266 + .../ASF/thirdparty/CMSIS/Include/cmsis_gcc.h | 2085 +++++ .../thirdparty/CMSIS/Include/cmsis_version.h | 39 + .../ASF/thirdparty/CMSIS/Include/core_cm7.h | 2671 ++++++ .../ASF/thirdparty/CMSIS/Include/mpu_armv7.h | 270 + .../CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a | Bin 0 -> 3199620 bytes .../Lib/GCC/libarm_cortexM7lfsp_math_softfp.a | Bin 0 -> 3199824 bytes .../src/ASF/thirdparty/CMSIS/Lib/license.txt | 28 + .../src/ASF/thirdparty/CMSIS/README.txt | 42 + .../ACC_EXAMPLE1/src/acc_example_canopus.c | 378 + .../ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h | 121 + .../ACC_EXAMPLE1/src/config/conf_board.h | 46 + .../ACC_EXAMPLE1/src/config/conf_clock.h | 94 + .../ACC_EXAMPLE1/src/config/conf_sleepmgr.h | 42 + .../src/config/conf_uart_serial.h | 51 + 218 files changed, 80742 insertions(+) create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/boards/board.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/parts.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/acc_example_canopus.c create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_board.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_clock.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_sleepmgr.h create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_uart_serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo b/Perifericos-uC/ACC/ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..3ae884c137e80747eb7109e3c61714ca63a449fc GIT binary patch literal 18944 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�$A_EvIQjr2bc2SEx2==_Lk z0C19j?XvLZJo}$)j1Y=Ygj zVsyDIHlx*PcNkfVjW?RuRfm;#a8A}?f9=}H#*6-CNo>gVt!u)i&7^`uVVec1B2_n? zb+J{IYE5NRJ%{^VNZdcOfD)zV*A2PW@j!fB{Z$uTY$-A5`ITnqZ-F)1pcoQYg++VHx(iu0u z-mSO%TgjdER>I3~W$|4{+~5>n#J3@2`qg~Fyb^AjO-g)ih3!}RjqN_mI+pEnEzvD{ zyN-xO=o|9YbVzbr`=w5fZ%1mqgg3dIZ`B%7W2IAcXIeSuT3bm+>MJ>?p^&i`gEdRo zQ|bm{Y%It7ZHluW@zzp;C&+fqf^1H3wgR^i=$W%{6So=_S7*x==GUtRSKH9HB|2=O zV{@ik9&fecZb*^Lnnkpx{CWRM&F;?>g4QA%&m>9)k(WGMtzOzA@dlghVb@z;jy2T7 zfo9iMG>5i=7T(nNZ}e?W(@H$5_#BafE9SEWmUr9|SFClq0pEHzRqA;wp)_CPEuz3y zW5tb5Hsr8Wyvanat{BX*m8hp8G&S{8}}YT<=@mLLwKjxqYP_TPM^qXIQ103){0rXFC#<6Xj?mklL_x za^AIkHYj;aJAx}(51Itave(`6wj2JCJ!ajpMABl;Y|9v|)mDl3EQe!;<+{7swkB3$ ziruwl_9RT1@^-@3t=hM^t;}}1Aa_<`jg8e1DGaKc0<6H>@N3Z-m%N~EHYu4lWRN%(e>g|ao3HOb4lSTECvy18^JTS{7% zH!L=JM|2hoY)q)H+d2ksCng3v#kRo{EaaMQOHWP(!|}R1f>8o+Rosc~cq>{J1f7$p kK0eOSKl;-Db8GMl9%$e3a4U~NEysQRLF*U7!&=k-15RHd-v9sr literal 0 HcmV?d00001 diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln new file mode 100644 index 00000000..fd81924c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "ACC_EXAMPLE1", "ACC_EXAMPLE1\ACC_EXAMPLE1.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|ARM.ActiveCfg = Debug|ARM + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|ARM.Build.0 = Debug|ARM + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|ARM.ActiveCfg = Release|ARM + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml new file mode 100644 index 00000000..e2757552 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj new file mode 100644 index 00000000..7cee73e2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj @@ -0,0 +1,1263 @@ + + + + 2.0 + 7.0 + com.Atmel.ARMGCC.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATSAME70Q21B + same70 + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + ACC_EXAMPLE1 + ACC_EXAMPLE1 + ACC_EXAMPLE1 + Native + true + false + true + true + + + true + + 2 + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + True + True + True + + + NDEBUG + __SAME70Q21B__ + BOARD=SAME70_XPLAINED + scanf=iscanf + ARM_MATH_CM7=true + printf=iprintf + + + + + ../src/ASF/sam/drivers/acc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/ASF/sam/utils/fpu + ../src/ASF/common/utils + ../src/ASF/sam/utils/cmsis/same70/include + ../src/ASF/sam/utils/cmsis/same70/source/templates + ../src/ASF/sam/drivers/afec + ../src/ASF/common/services/sleepmgr + ../src/ASF/sam/drivers/pmc + ../src/ASF/common/services/clock + ../src/ASF/sam/drivers/dacc + ../src/ASF/common/utils/stdio/stdio_serial + ../src/ASF/common/services/serial/sam_uart + ../src/ASF/common/services/serial + ../src/ASF/sam/drivers/uart + ../src/ASF/sam/drivers/usart + ../src/ASF/sam/boards/same70_xplained + ../src/ASF/sam/boards + ../src/ASF/common/boards + ../src/ASF/common/services/ioport + ../src/ASF/common/services/gpio + ../src/ASF/sam/drivers/pio + ../src/ASF/sam/drivers/mpu + ../src + ../src/config + + + Optimize for size (-Os) + -fdata-sections + True + True + -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -mfloat-abi=softfp -mfpu=fpv5-sp-d16 + + + libarm_cortexM7lfsp_math_softfp + libm + + + + + ../src/ASF/thirdparty/CMSIS/Lib/GCC + + + True + -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld + + + ../src/ASF/sam/drivers/acc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/ASF/sam/utils/fpu + ../src/ASF/common/utils + ../src/ASF/sam/utils/cmsis/same70/include + ../src/ASF/sam/utils/cmsis/same70/source/templates + ../src/ASF/sam/drivers/afec + ../src/ASF/common/services/sleepmgr + ../src/ASF/sam/drivers/pmc + ../src/ASF/common/services/clock + ../src/ASF/sam/drivers/dacc + ../src/ASF/common/utils/stdio/stdio_serial + ../src/ASF/common/services/serial/sam_uart + ../src/ASF/common/services/serial + ../src/ASF/sam/drivers/uart + ../src/ASF/sam/drivers/usart + ../src/ASF/sam/boards/same70_xplained + ../src/ASF/sam/boards + ../src/ASF/common/boards + ../src/ASF/common/services/ioport + ../src/ASF/common/services/gpio + ../src/ASF/sam/drivers/pio + ../src/ASF/sam/drivers/mpu + ../src + ../src/config + + + -DARM_MATH_CM7=true -DBOARD=SAME70_XPLAINED -D__SAME70Q21B__ -Dprintf=iprintf -Dscanf=iscanf + + + ../src/ASF/sam/drivers/acc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/ASF/sam/utils/fpu + ../src/ASF/common/utils + ../src/ASF/sam/utils/cmsis/same70/include + ../src/ASF/sam/utils/cmsis/same70/source/templates + ../src/ASF/sam/drivers/afec + ../src/ASF/common/services/sleepmgr + ../src/ASF/sam/drivers/pmc + ../src/ASF/common/services/clock + ../src/ASF/sam/drivers/dacc + ../src/ASF/common/utils/stdio/stdio_serial + ../src/ASF/common/services/serial/sam_uart + ../src/ASF/common/services/serial + ../src/ASF/sam/drivers/uart + ../src/ASF/sam/drivers/usart + ../src/ASF/sam/boards/same70_xplained + ../src/ASF/sam/boards + ../src/ASF/common/boards + ../src/ASF/common/services/ioport + ../src/ASF/common/services/gpio + ../src/ASF/sam/drivers/pio + ../src/ASF/sam/drivers/mpu + ../src + ../src/config + + + + + + + + + True + True + True + True + True + + + DEBUG + __SAME70Q21B__ + BOARD=SAME70_XPLAINED + scanf=iscanf + ARM_MATH_CM7=true + printf=iprintf + + + + + ../src/ASF/sam/drivers/acc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/ASF/sam/utils/fpu + ../src/ASF/common/utils + ../src/ASF/sam/utils/cmsis/same70/include + ../src/ASF/sam/utils/cmsis/same70/source/templates + ../src/ASF/sam/drivers/afec + ../src/ASF/common/services/sleepmgr + ../src/ASF/sam/drivers/pmc + ../src/ASF/common/services/clock + ../src/ASF/sam/drivers/dacc + ../src/ASF/common/utils/stdio/stdio_serial + ../src/ASF/common/services/serial/sam_uart + ../src/ASF/common/services/serial + ../src/ASF/sam/drivers/uart + ../src/ASF/sam/drivers/usart + ../src/ASF/sam/boards/same70_xplained + ../src/ASF/sam/boards + ../src/ASF/common/boards + ../src/ASF/common/services/ioport + ../src/ASF/common/services/gpio + ../src/ASF/sam/drivers/pio + ../src/ASF/sam/drivers/mpu + ../src + ../src/config + + + Optimize (-O1) + -fdata-sections + True + Maximum (-g3) + True + -pipe -fno-strict-aliasing -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -std=gnu99 -ffunction-sections -fdata-sections -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int -Wmain -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef -Wshadow -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wmissing-declarations -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs -Wlong-long -Wunreachable-code -Wcast-align --param max-inline-insns-single=500 -mfloat-abi=softfp -mfpu=fpv5-sp-d16 + + + libarm_cortexM7lfsp_math_softfp + libm + + + + + ../src/ASF/thirdparty/CMSIS/Lib/GCC + + + True + -Wl,--entry=Reset_Handler -Wl,--cref -mthumb -T../src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld + + + ../src/ASF/sam/drivers/acc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/ASF/sam/utils/fpu + ../src/ASF/common/utils + ../src/ASF/sam/utils/cmsis/same70/include + ../src/ASF/sam/utils/cmsis/same70/source/templates + ../src/ASF/sam/drivers/afec + ../src/ASF/common/services/sleepmgr + ../src/ASF/sam/drivers/pmc + ../src/ASF/common/services/clock + ../src/ASF/sam/drivers/dacc + ../src/ASF/common/utils/stdio/stdio_serial + ../src/ASF/common/services/serial/sam_uart + ../src/ASF/common/services/serial + ../src/ASF/sam/drivers/uart + ../src/ASF/sam/drivers/usart + ../src/ASF/sam/boards/same70_xplained + ../src/ASF/sam/boards + ../src/ASF/common/boards + ../src/ASF/common/services/ioport + ../src/ASF/common/services/gpio + ../src/ASF/sam/drivers/pio + ../src/ASF/sam/drivers/mpu + ../src + ../src/config + + + Default (-g) + -DARM_MATH_CM7=true -DBOARD=SAME70_XPLAINED -D__SAME70Q21B__ -Dprintf=iprintf -Dscanf=iscanf + + + ../src/ASF/sam/drivers/acc + ../src/ASF/sam/utils + ../src/ASF/sam/utils/header_files + ../src/ASF/sam/utils/preprocessor + ../src/ASF/thirdparty/CMSIS/Include + ../src/ASF/thirdparty/CMSIS/Lib/GCC + ../src/ASF/sam/utils/fpu + ../src/ASF/common/utils + ../src/ASF/sam/utils/cmsis/same70/include + ../src/ASF/sam/utils/cmsis/same70/source/templates + ../src/ASF/sam/drivers/afec + ../src/ASF/common/services/sleepmgr + ../src/ASF/sam/drivers/pmc + ../src/ASF/common/services/clock + ../src/ASF/sam/drivers/dacc + ../src/ASF/common/utils/stdio/stdio_serial + ../src/ASF/common/services/serial/sam_uart + ../src/ASF/common/services/serial + ../src/ASF/sam/drivers/uart + ../src/ASF/sam/drivers/usart + ../src/ASF/sam/boards/same70_xplained + ../src/ASF/sam/boards + ../src/ASF/common/boards + ../src/ASF/common/services/ioport + ../src/ASF/common/services/gpio + ../src/ASF/sam/drivers/pio + ../src/ASF/sam/drivers/mpu + ../src + ../src/config + + + Default (-Wa,-g) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + \ No newline at end of file diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/boards/board.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/boards/board.h new file mode 100644 index 00000000..f6b0c32e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/boards/board.h @@ -0,0 +1,453 @@ +/** + * \file + * + * \brief Standard board header file. + * + * This file includes the appropriate board header file according to the + * defined board (parameter BOARD). + * + * Copyright (c) 2009-2020 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/** + * \defgroup group_common_boards Generic board support + * + * The generic board support module includes board-specific definitions + * and function prototypes, such as the board initialization function. + * + * \{ + */ + +#include "compiler.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/*! \name Base Boards + */ +//! @{ +#define EVK1100 1 //!< AT32UC3A EVK1100 board. +#define EVK1101 2 //!< AT32UC3B EVK1101 board. +#define UC3C_EK 3 //!< AT32UC3C UC3C-EK board. +#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. +#define EVK1105 5 //!< AT32UC3A EVK1105 board. +#define STK600_RCUC3L0 6 //!< STK600 RCUC3L0 board. +#define UC3L_EK 7 //!< AT32UC3L-EK board. +#define XPLAIN 8 //!< ATxmega128A1 Xplain board. +#define STK600_RC064X 10 //!< ATxmega256A3 STK600 board. +#define STK600_RC100X 11 //!< ATxmega128A1 STK600 board. +#define UC3_A3_XPLAINED 13 //!< ATUC3A3 UC3-A3 Xplained board. +#define UC3_L0_XPLAINED 15 //!< ATUC3L0 UC3-L0 Xplained board. +#define STK600_RCUC3D 16 //!< STK600 RCUC3D board. +#define STK600_RCUC3C0 17 //!< STK600 RCUC3C board. +#define XMEGA_B1_XPLAINED 18 //!< ATxmega128B1 Xplained board. +#define XMEGA_A1_XPLAINED 19 //!< ATxmega128A1 Xplain-A1 board. +#define XMEGA_A1U_XPLAINED_PRO 20 //!< ATxmega128A1U XMEGA-A1U Xplained Pro board. +#define STK600_RCUC3L4 21 //!< ATUCL4 STK600 board. +#define UC3_L0_XPLAINED_BC 22 //!< ATUC3L0 UC3-L0 Xplained board controller board. +#define MEGA1284P_XPLAINED_BC 23 //!< ATmega1284P-Xplained board controller board. +#define STK600_RC044X 24 //!< STK600 with RC044X routing card board. +#define STK600_RCUC3B0 25 //!< STK600 RCUC3B0 board. +#define UC3_L0_QT600 26 //!< QT600 UC3L0 MCU board. +#define XMEGA_A3BU_XPLAINED 27 //!< ATxmega256A3BU Xplained board. +#define STK600_RC064X_LCDX 28 //!< XMEGAB3 STK600 RC064X LCDX board. +#define STK600_RC100X_LCDX 29 //!< XMEGAB1 STK600 RC100X LCDX board. +#define UC3B_BOARD_CONTROLLER 30 //!< AT32UC3B1 board controller for Atmel boards. +#define RZ600 31 //!< AT32UC3A RZ600 MCU board. +#define SAM3S_EK 32 //!< SAM3S-EK board. +#define SAM3U_EK 33 //!< SAM3U-EK board. +#define SAM3X_EK 34 //!< SAM3X-EK board. +#define SAM3N_EK 35 //!< SAM3N-EK board. +#define SAM3S_EK2 36 //!< SAM3S-EK2 board. +#define SAM4S_EK 37 //!< SAM4S-EK board. +#define STK600_RCUC3A0 38 //!< STK600 RCUC3A0 board. +#define STK600_MEGA 39 //!< STK600 MEGA board. +#define MEGA_1284P_XPLAINED 40 //!< ATmega1284P Xplained board. +#define SAM4S_XPLAINED 41 //!< SAM4S Xplained board. +#define ATXMEGA128A1_QT600 42 //!< QT600 ATXMEGA128A1 MCU board. +#define ARDUINO_DUE_X 43 //!< Arduino Due/X board. +#define STK600_RCUC3L3 44 //!< ATUCL3 STK600 board. +#define SAM4L_EK 45 //!< SAM4L-EK board. +#define STK600_MEGA_RF 46 //!< STK600 MEGA RF EVK board. +#define XMEGA_C3_XPLAINED 47 //!< ATxmega384C3 Xplained board. +#define STK600_RC032X 48 //!< STK600 with RC032X routing card board. +#define SAM4S_EK2 49 //!< SAM4S-EK2 board. +#define XMEGA_E5_XPLAINED 50 //!< ATxmega32E5 Xplained board. +#define SAM4E_EK 51 //!< SAM4E-EK board. +#define ATMEGA256RFR2_XPLAINED_PRO 52 //!< ATmega256RFR2 Xplained Pro board. +#define SAM4S_XPLAINED_PRO 53 //!< SAM4S Xplained Pro board. +#define SAM4L_XPLAINED_PRO 54 //!< SAM4L Xplained Pro board. +#define ATMEGA256RFR2_ZIGBIT 55 //!< ATmega256RFR2 zigbit. +#define XMEGA_RF233_ZIGBIT 56 //!< ATxmega256A3U with AT86RF233 Zigbit. +#define XMEGA_RF212B_ZIGBIT 57 //!< ATxmega256A3U with AT86RF212B Zigbit. +#define SAM4S_WPIR_RD 58 //!< SAM4S-WPIR-RD board. +#define SAMD20_XPLAINED_PRO 59 //!< SAM D20 Xplained Pro board. +#define SAM4L8_XPLAINED_PRO 60 //!< SAM4L8 Xplained Pro board. +#define SAM4N_XPLAINED_PRO 61 //!< SAM4N Xplained Pro board. +#define XMEGA_A3_REB_CBB 62 //!< XMEGA REB Controller Base board. +#define ATMEGARFX_RCB 63 //!< RFR2 & RFA1 RCB. +#define SAM4C_EK 64 //!< SAM4C-EK board. +#define RCB256RFR2_XPRO 65 //!< RFR2 RCB Xplained Pro board. +#define SAMG53_XPLAINED_PRO 66 //!< SAMG53 Xplained Pro board. +#define SAM4CP16BMB 67 //!< SAM4CP16BMB board. +#define SAM4E_XPLAINED_PRO 68 //!< SAM4E Xplained Pro board. +#define SAMD21_XPLAINED_PRO 69 //!< SAM D21 Xplained Pro board. +#define SAMR21_XPLAINED_PRO 70 //!< SAM R21 Xplained Pro board. +#define SAM4CMP_DB 71 //!< SAM4CMP demo board. +#define SAM4CMS_DB 72 //!< SAM4CMS demo board. +#define ATPL230AMB 73 //!< ATPL230AMB board. +#define SAMD11_XPLAINED_PRO 74 //!< SAM D11 Xplained Pro board. +#define SAMG55_XPLAINED_PRO 75 //!< SAMG55 Xplained Pro board. +#define SAML21_XPLAINED_PRO 76 //!< SAM L21 Xplained Pro board. +#define SAMD10_XPLAINED_MINI 77 //!< SAM D10 Xplained Mini board. +#define SAMDA1_XPLAINED_PRO 78 //!< SAM DA1 Xplained Pro board. +#define SAMW25_XPLAINED_PRO 79 //!< SAMW25 Xplained Pro board. +#define SAMC21_XPLAINED_PRO 80 //!< SAM C21 Xplained Pro board. +#define SAMV71_XPLAINED_ULTRA 81 //!< SAMV71 Xplained Ultra board. +#define ATMEGA328P_XPLAINED_MINI 82 //!< ATMEGA328P Xplained MINI board. +#define ATMEGA328PB_XPLAINED_MINI 83 //!< ATMEGA328PB Xplained MINI board. +#define SAMB11_XPLAINED_PRO 84 //!< SAM B11 Xplained Pro board. +#define SAME70_XPLAINED 85 //!< SAME70 Xplained board. +#define SAML22_XPLAINED_PRO 86 //!< SAM L22 Xplained Pro board. +#define SAML22_XPLAINED_PRO_B 87 //!< SAM L22 Xplained Pro board. +#define SAMR21ZLL_EK 88 //!< SAMR21ZLL-EK board. +#define ATMEGA168PB_XPLAINED_MINI 89 //!< ATMEGA168PB Xplained MINI board. +#define ATMEGA324PB_XPLAINED_PRO 90 //!< ATMEGA324PB Xplained Pro board. +#define SAMB11ZR_XPLAINED_PRO 92 //!< SAM B11 ZR Xplained Pro board. +#define SAMR30_XPLAINED_PRO 93 //!< SAM R30 Xplained Pro board. +#define SAMHA1G16A_XPLAINED_PRO 94 //!< SAM HA1G16A Xplained Pro board. +#define SAMR34_XPLAINED_PRO 95 //!< SAM R34 Xplained Pro board. +#define SIMULATOR_XMEGA_A1 97 //!< Simulator for XMEGA A1 devices. +#define AVR_SIMULATOR_UC3 98 //!< Simulator for the AVR UC3 device family. +#define USER_BOARD 99 //!< User-reserved board (if any). +#define DUMMY_BOARD 100 //!< Dummy board to support board-independent applications (e.g. bootloader). +#define SAMB11ZR_SENSOR_TAG 101 //!< SAMB11ZR sensor tag board +#define SAMR30_MODULE_XPLAINED_PRO 102 //!< SAM R30 Module Xplained Pro board. +#define SAMR21G18_MODULE 103 //!< SAMR21G18-MR210UA Module. +#define SAMR21B18_MODULE 104 //!< SAMR21B18-MZ210PA Module. +#define WLR089_XPLAINED_PRO 105 //!< WLR089_XPLAINED_PRO board. +//! @} + +/*! \name Extension Boards + */ +//! @{ +#define EXT1102 1 //!< AT32UC3B EXT1102 board +#define MC300 2 //!< AT32UC3 MC300 board +#define SENSORS_XPLAINED_INERTIAL_1 3 //!< Xplained inertial sensor board 1 +#define SENSORS_XPLAINED_INERTIAL_2 4 //!< Xplained inertial sensor board 2 +#define SENSORS_XPLAINED_PRESSURE_1 5 //!< Xplained pressure sensor board +#define SENSORS_XPLAINED_LIGHTPROX_1 6 //!< Xplained light & proximity sensor board +#define SENSORS_XPLAINED_INERTIAL_A1 7 //!< Xplained inertial sensor board "A" +#define RZ600_AT86RF231 8 //!< AT86RF231 RF board in RZ600 +#define RZ600_AT86RF230B 9 //!< AT86RF230B RF board in RZ600 +#define RZ600_AT86RF212 10 //!< AT86RF212 RF board in RZ600 +#define SENSORS_XPLAINED_BREADBOARD 11 //!< Xplained sensor development breadboard +#define SECURITY_XPLAINED 12 //!< Xplained ATSHA204 board +#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). +//! @} + +#if BOARD == EVK1100 +# include "evk1100/evk1100.h" +#elif BOARD == EVK1101 +# include "evk1101/evk1101.h" +#elif BOARD == UC3C_EK +# include "uc3c_ek/uc3c_ek.h" +#elif BOARD == EVK1104 +# include "evk1104/evk1104.h" +#elif BOARD == EVK1105 +# include "evk1105/evk1105.h" +#elif BOARD == STK600_RCUC3L0 +# include "stk600/rcuc3l0/stk600_rcuc3l0.h" +#elif BOARD == UC3L_EK +# include "uc3l_ek/uc3l_ek.h" +#elif BOARD == STK600_RCUC3L4 +# include "stk600/rcuc3l4/stk600_rcuc3l4.h" +#elif BOARD == XPLAIN +# include "xplain/xplain.h" +#elif BOARD == STK600_MEGA + /*No header-file to include*/ +#elif BOARD == STK600_MEGA_RF +# include "stk600.h" +#elif BOARD == ATMEGA256RFR2_XPLAINED_PRO +# include "atmega256rfr2_xplained_pro/atmega256rfr2_xplained_pro.h" +#elif BOARD == ATMEGA256RFR2_ZIGBIT +# include "atmega256rfr2_zigbit/atmega256rfr2_zigbit.h" +#elif BOARD == STK600_RC032X +# include "stk600/rc032x/stk600_rc032x.h" +#elif BOARD == STK600_RC044X +# include "stk600/rc044x/stk600_rc044x.h" +#elif BOARD == STK600_RC064X +# include "stk600/rc064x/stk600_rc064x.h" +#elif BOARD == STK600_RC100X +# include "stk600/rc100x/stk600_rc100x.h" +#elif BOARD == UC3_A3_XPLAINED +# include "uc3_a3_xplained/uc3_a3_xplained.h" +#elif BOARD == UC3_L0_XPLAINED +# include "uc3_l0_xplained/uc3_l0_xplained.h" +#elif BOARD == STK600_RCUC3B0 +# include "stk600/rcuc3b0/stk600_rcuc3b0.h" +#elif BOARD == STK600_RCUC3D +# include "stk600/rcuc3d/stk600_rcuc3d.h" +#elif BOARD == STK600_RCUC3C0 +# include "stk600/rcuc3c0/stk600_rcuc3c0.h" +#elif BOARD == SAMG53_XPLAINED_PRO +# include "samg53_xplained_pro/samg53_xplained_pro.h" +#elif BOARD == SAMG55_XPLAINED_PRO +# include "samg55_xplained_pro/samg55_xplained_pro.h" +#elif BOARD == XMEGA_B1_XPLAINED +# include "xmega_b1_xplained/xmega_b1_xplained.h" +#elif BOARD == STK600_RC064X_LCDX +# include "stk600/rc064x_lcdx/stk600_rc064x_lcdx.h" +#elif BOARD == STK600_RC100X_LCDX +# include "stk600/rc100x_lcdx/stk600_rc100x_lcdx.h" +#elif BOARD == XMEGA_A1_XPLAINED +# include "xmega_a1_xplained/xmega_a1_xplained.h" +#elif BOARD == XMEGA_A1U_XPLAINED_PRO +# include "xmega_a1u_xplained_pro/xmega_a1u_xplained_pro.h" +#elif BOARD == UC3_L0_XPLAINED_BC +# include "uc3_l0_xplained_bc/uc3_l0_xplained_bc.h" +#elif BOARD == SAM3S_EK +# include "sam3s_ek/sam3s_ek.h" +# include "system_sam3s.h" +#elif BOARD == SAM3S_EK2 +# include "sam3s_ek2/sam3s_ek2.h" +# include "system_sam3sd8.h" +#elif BOARD == SAM3U_EK +# include "sam3u_ek/sam3u_ek.h" +# include "system_sam3u.h" +#elif BOARD == SAM3X_EK +# include "sam3x_ek/sam3x_ek.h" +# include "system_sam3x.h" +#elif BOARD == SAM3N_EK +# include "sam3n_ek/sam3n_ek.h" +# include "system_sam3n.h" +#elif BOARD == SAM4S_EK +# include "sam4s_ek/sam4s_ek.h" +# include "system_sam4s.h" +#elif BOARD == SAM4S_WPIR_RD +# include "sam4s_wpir_rd/sam4s_wpir_rd.h" +# include "system_sam4s.h" +#elif BOARD == SAM4S_XPLAINED +# include "sam4s_xplained/sam4s_xplained.h" +# include "system_sam4s.h" +#elif BOARD == SAM4S_EK2 +# include "sam4s_ek2/sam4s_ek2.h" +# include "system_sam4s.h" +#elif BOARD == MEGA_1284P_XPLAINED + /*No header-file to include*/ +#elif BOARD == ARDUINO_DUE_X +# include "arduino_due_x/arduino_due_x.h" +# include "system_sam3x.h" +#elif BOARD == SAM4L_EK +# include "sam4l_ek/sam4l_ek.h" +#elif BOARD == SAM4E_EK +# include "sam4e_ek/sam4e_ek.h" +#elif BOARD == SAMD20_XPLAINED_PRO +# include "samd20_xplained_pro/samd20_xplained_pro.h" +#elif BOARD == SAMD21_XPLAINED_PRO +# include "samd21_xplained_pro/samd21_xplained_pro.h" +#elif BOARD == SAMR21_XPLAINED_PRO +# include "samr21_xplained_pro/samr21_xplained_pro.h" +#elif BOARD == SAMR30_XPLAINED_PRO && defined(__SAMR30G18A__) +# include "samr30_xplained_pro/samr30_xplained_pro.h" +#elif BOARD == SAMR30_MODULE_XPLAINED_PRO && defined(__SAMR30E18A__) +# include "samr30_module_xplained_pro/samr30_module_xplained_pro.h" +#elif BOARD == SAMR21ZLL_EK +# include "samr21zll_ek/samr21zll_ek.h" +#elif BOARD == SAMD11_XPLAINED_PRO +# include "samd11_xplained_pro/samd11_xplained_pro.h" +#elif BOARD == SAML21_XPLAINED_PRO && defined(__SAML21J18A__) +# include "saml21_xplained_pro/saml21_xplained_pro.h" +#elif BOARD == SAML22_XPLAINED_PRO +# include "saml22_xplained_pro/saml22_xplained_pro.h" +#elif BOARD == SAML22_XPLAINED_PRO_B +# include "saml22_xplained_pro_b/saml22_xplained_pro_b.h" +#elif BOARD == SAML21_XPLAINED_PRO && defined(__SAML21J18B__) +# include "saml21_xplained_pro_b/saml21_xplained_pro.h" +#elif BOARD == SAMD10_XPLAINED_MINI +# include "samd10_xplained_mini/samd10_xplained_mini.h" +#elif BOARD == SAMDA1_XPLAINED_PRO +# include "samda1_xplained_pro/samda1_xplained_pro.h" +#elif BOARD == SAMHA1G16A_XPLAINED_PRO +# include "samha1g16a_xplained_pro/samha1g16a_xplained_pro.h" +#elif BOARD == SAMC21_XPLAINED_PRO +# include "samc21_xplained_pro/samc21_xplained_pro.h" +#elif BOARD == SAM4N_XPLAINED_PRO +# include "sam4n_xplained_pro/sam4n_xplained_pro.h" +#elif BOARD == SAMW25_XPLAINED_PRO +# include "samw25_xplained_pro/samw25_xplained_pro.h" +#elif BOARD == SAMV71_XPLAINED_ULTRA +# include "samv71_xplained_ultra/samv71_xplained_ultra.h" +#elif BOARD == MEGA1284P_XPLAINED_BC +# include "mega1284p_xplained_bc/mega1284p_xplained_bc.h" +#elif BOARD == UC3_L0_QT600 +# include "uc3_l0_qt600/uc3_l0_qt600.h" +#elif BOARD == XMEGA_A3BU_XPLAINED +# include "xmega_a3bu_xplained/xmega_a3bu_xplained.h" +#elif BOARD == XMEGA_E5_XPLAINED +# include "xmega_e5_xplained/xmega_e5_xplained.h" +#elif BOARD == UC3B_BOARD_CONTROLLER +# include "uc3b_board_controller/uc3b_board_controller.h" +#elif BOARD == RZ600 +# include "rz600/rz600.h" +#elif BOARD == STK600_RCUC3A0 +# include "stk600/rcuc3a0/stk600_rcuc3a0.h" +#elif BOARD == ATXMEGA128A1_QT600 +# include "atxmega128a1_qt600/atxmega128a1_qt600.h" +#elif BOARD == STK600_RCUC3L3 +# include "stk600/rcuc3l3/stk600_rcuc3l3.h" +#elif BOARD == SAM4S_XPLAINED_PRO +# include "sam4s_xplained_pro/sam4s_xplained_pro.h" +#elif BOARD == SAM4L_XPLAINED_PRO +# include "sam4l_xplained_pro/sam4l_xplained_pro.h" +#elif BOARD == SAM4L8_XPLAINED_PRO +# include "sam4l8_xplained_pro/sam4l8_xplained_pro.h" +#elif BOARD == SAM4C_EK +# include "sam4c_ek/sam4c_ek.h" +#elif BOARD == SAM4CMP_DB +# include "sam4cmp_db/sam4cmp_db.h" +#elif BOARD == SAM4CMS_DB +# include "sam4cms_db/sam4cms_db.h" +#elif BOARD == SAM4CP16BMB +# include "sam4cp16bmb/sam4cp16bmb.h" +#elif BOARD == ATPL230AMB +# include "atpl230amb/atpl230amb.h" +#elif BOARD == XMEGA_C3_XPLAINED +# include "xmega_c3_xplained/xmega_c3_xplained.h" +#elif BOARD == XMEGA_RF233_ZIGBIT +# include "xmega_rf233_zigbit/xmega_rf233_zigbit.h" +#elif BOARD == XMEGA_A3_REB_CBB +# include "xmega_a3_reb_cbb/xmega_a3_reb_cbb.h" +#elif BOARD == ATMEGARFX_RCB +# include "atmegarfx_rcb/atmegarfx_rcb.h" +#elif BOARD == RCB256RFR2_XPRO +# include "atmega256rfr2_rcb_xpro/atmega256rfr2_rcb_xpro.h" +#elif BOARD == XMEGA_RF212B_ZIGBIT +# include "xmega_rf212b_zigbit/xmega_rf212b_zigbit.h" +#elif BOARD == SAM4E_XPLAINED_PRO +# include "sam4e_xplained_pro/sam4e_xplained_pro.h" +#elif BOARD == ATMEGA328P_XPLAINED_MINI +# include "atmega328p_xplained_mini/atmega328p_xplained_mini.h" +#elif BOARD == ATMEGA328PB_XPLAINED_MINI +# include "atmega328pb_xplained_mini/atmega328pb_xplained_mini.h" +#elif BOARD == SAMB11_XPLAINED_PRO +# include "samb11_xplained_pro/samb11_xplained_pro.h" +#elif BOARD == SAME70_XPLAINED +# include "same70_xplained/same70_xplained.h" +#elif BOARD == ATMEGA168PB_XPLAINED_MINI +# include "atmega168pb_xplained_mini/atmega168pb_xplained_mini.h" +#elif BOARD == ATMEGA324PB_XPLAINED_PRO +# include "atmega324pb_xplained_pro/atmega324pb_xplained_pro.h" +#elif BOARD == SAMB11ZR_XPLAINED_PRO +# include "samb11zr_xplained_pro/samb11zr_xplained_pro.h" +#elif BOARD == SIMULATOR_XMEGA_A1 +# include "simulator/xmega_a1/simulator_xmega_a1.h" +#elif BOARD == AVR_SIMULATOR_UC3 +# include "avr_simulator_uc3/avr_simulator_uc3.h" +#elif BOARD == SAMR21G18_MODULE +# include "samr21g18_module/samr21g18_module.h" +#elif BOARD == SAMR21B18_MODULE +# include "samr21b18_module/samr21b18_module.h" +#elif BOARD == SAMR34_XPLAINED_PRO && defined(__SAMR34J18B__) +# include "samr34_xplained_pro/samr34_xplained_pro.h" +#elif BOARD == WLR089_XPLAINED_PRO && defined(__WLR089U0__) +# include "wlr089_xplained_pro/wlr089_xplained_pro.h" +#elif BOARD == USER_BOARD +// User-reserved area: #include the header file of your board here (if any). +# include "user_board.h" +#elif BOARD == DUMMY_BOARD +# include "dummy/dummy_board.h" +#elif BOARD == SAMB11ZR_SENSOR_TAG +# include "samb11zr_sensor_tag/samb11zr_sensor_tag.h" +#else +# error No known Atmel board defined +#endif + +#if (defined EXT_BOARD) +# if EXT_BOARD == MC300 +# include "mc300/mc300.h" +# elif (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_1) || \ + (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_2) || \ + (EXT_BOARD == SENSORS_XPLAINED_INERTIAL_A1) || \ + (EXT_BOARD == SENSORS_XPLAINED_PRESSURE_1) || \ + (EXT_BOARD == SENSORS_XPLAINED_LIGHTPROX_1) || \ + (EXT_BOARD == SENSORS_XPLAINED_BREADBOARD) +# include "sensors_xplained/sensors_xplained.h" +# elif EXT_BOARD == RZ600_AT86RF231 +# include "at86rf231/at86rf231.h" +# elif EXT_BOARD == RZ600_AT86RF230B +# include "at86rf230b/at86rf230b.h" +# elif EXT_BOARD == RZ600_AT86RF212 +# include "at86rf212/at86rf212.h" +# elif EXT_BOARD == SECURITY_XPLAINED +# include "security_xplained.h" +# elif EXT_BOARD == USER_EXT_BOARD + // User-reserved area: #include the header file of your extension board here + // (if any). +# endif +#endif + + +#if (defined(__GNUC__) && defined(__AVR32__)) || (defined(__ICCAVR32__) || defined(__AAVR32__)) +#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. + +/*! \brief This function initializes the board target resources + * + * This function should be called to ensure proper initialization of the target + * board hardware connected to the part. + */ +extern void board_init(void); + +#endif // #ifdef __AVR32_ABI_COMPILER__ +#else +/*! \brief This function initializes the board target resources + * + * This function should be called to ensure proper initialization of the target + * board hardware connected to the part. + */ +extern void board_init(void); +#endif + + +#ifdef __cplusplus +} +#endif + +/** + * \} + */ + +#endif // _BOARD_H_ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h new file mode 100644 index 00000000..882a577a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h @@ -0,0 +1,189 @@ +/** + * \file + * + * \brief Generic clock management + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef CLK_GENCLK_H_INCLUDED +#define CLK_GENCLK_H_INCLUDED + +#include "parts.h" + +#if SAM3S +# include "sam3s/genclk.h" +#elif SAM3U +# include "sam3u/genclk.h" +#elif SAM3N +# include "sam3n/genclk.h" +#elif SAM3XA +# include "sam3x/genclk.h" +#elif SAM4S +# include "sam4s/genclk.h" +#elif SAM4L +# include "sam4l/genclk.h" +#elif SAM4E +# include "sam4e/genclk.h" +#elif SAM4N +# include "sam4n/genclk.h" +#elif SAM4C +# include "sam4c/genclk.h" +#elif SAM4CM +# include "sam4cm/genclk.h" +#elif SAM4CP +# include "sam4cp/genclk.h" +#elif SAMG +# include "samg/genclk.h" +#elif SAMV71 +# include "samv71/genclk.h" +#elif SAMV70 +# include "samv70/genclk.h" +#elif SAME70 +# include "same70/genclk.h" +#elif SAMS70 +# include "sams70/genclk.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/genclk.h" +#elif UC3A3 +# include "uc3a3_a4/genclk.h" +#elif UC3B +# include "uc3b0_b1/genclk.h" +#elif UC3C +# include "uc3c/genclk.h" +#elif UC3D +# include "uc3d/genclk.h" +#elif UC3L +# include "uc3l/genclk.h" +#else +# error Unsupported chip type +#endif + +/** + * \ingroup clk_group + * \defgroup genclk_group Generic Clock Management + * + * Generic clocks are configurable clocks which run outside the system + * clock domain. They are often connected to peripherals which have an + * asynchronous component running independently of the bus clock, e.g. + * USB controllers, low-power timers and RTCs, etc. + * + * Note that not all platforms have support for generic clocks; on such + * platforms, this API will not be available. + * + * @{ + */ + +/** + * \def GENCLK_DIV_MAX + * \brief Maximum divider supported by the generic clock implementation + */ +/** + * \enum genclk_source + * \brief Generic clock source ID + * + * Each generic clock may be generated from a different clock source. + * These are the available alternatives provided by the chip. + */ + +//! \name Generic clock configuration +//@{ +/** + * \struct genclk_config + * \brief Hardware representation of a set of generic clock parameters + */ +/** + * \fn void genclk_config_defaults(struct genclk_config *cfg, + * unsigned int id) + * \brief Initialize \a cfg to the default configuration for the clock + * identified by \a id. + */ +/** + * \fn void genclk_config_read(struct genclk_config *cfg, unsigned int id) + * \brief Read the currently active configuration of the clock + * identified by \a id into \a cfg. + */ +/** + * \fn void genclk_config_write(const struct genclk_config *cfg, + * unsigned int id) + * \brief Activate the configuration \a cfg on the clock identified by + * \a id. + */ +/** + * \fn void genclk_config_set_source(struct genclk_config *cfg, + * enum genclk_source src) + * \brief Select a new source clock \a src in configuration \a cfg. + */ +/** + * \fn void genclk_config_set_divider(struct genclk_config *cfg, + * unsigned int divider) + * \brief Set a new \a divider in configuration \a cfg. + */ +/** + * \fn void genclk_enable_source(enum genclk_source src) + * \brief Enable the source clock \a src used by a generic clock. + */ + //@} + +//! \name Enabling and disabling Generic Clocks +//@{ +/** + * \fn void genclk_enable(const struct genclk_config *cfg, unsigned int id) + * \brief Activate the configuration \a cfg on the clock identified by + * \a id and enable it. + */ +/** + * \fn void genclk_disable(unsigned int id) + * \brief Disable the generic clock identified by \a id. + */ +//@} + +/** + * \brief Enable the configuration defined by \a src and \a divider + * for the generic clock identified by \a id. + * + * \param id The ID of the generic clock. + * \param src The source clock of the generic clock. + * \param divider The divider used to generate the generic clock. + */ +static inline void genclk_enable_config(unsigned int id, enum genclk_source src, unsigned int divider) +{ + struct genclk_config gcfg; + + genclk_config_defaults(&gcfg, id); + genclk_enable_source(src); + genclk_config_set_source(&gcfg, src); + genclk_config_set_divider(&gcfg, divider); + genclk_enable(&gcfg, id); +} + +//! @} + +#endif /* CLK_GENCLK_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h new file mode 100644 index 00000000..1547e065 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h @@ -0,0 +1,175 @@ +/** + * \file + * + * \brief Oscillator management + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef OSC_H_INCLUDED +#define OSC_H_INCLUDED + +#include "parts.h" +#include "conf_clock.h" + +#if SAM3S +# include "sam3s/osc.h" +#elif SAM3XA +# include "sam3x/osc.h" +#elif SAM3U +# include "sam3u/osc.h" +#elif SAM3N +# include "sam3n/osc.h" +#elif SAM4S +# include "sam4s/osc.h" +#elif SAM4E +# include "sam4e/osc.h" +#elif SAM4C +# include "sam4c/osc.h" +#elif SAM4CM +# include "sam4cm/osc.h" +#elif SAM4CP +# include "sam4cp/osc.h" +#elif SAM4L +# include "sam4l/osc.h" +#elif SAM4N +# include "sam4n/osc.h" +#elif SAMG +# include "samg/osc.h" +#elif SAMV71 +# include "samv71/osc.h" +#elif SAMV70 +# include "samv70/osc.h" +#elif SAME70 +# include "same70/osc.h" +#elif SAMS70 +# include "sams70/osc.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/osc.h" +#elif UC3A3 +# include "uc3a3_a4/osc.h" +#elif UC3B +# include "uc3b0_b1/osc.h" +#elif UC3C +# include "uc3c/osc.h" +#elif UC3D +# include "uc3d/osc.h" +#elif UC3L +# include "uc3l/osc.h" +#elif XMEGA +# include "xmega/osc.h" +#else +# error Unsupported chip type +#endif + +/** + * \ingroup clk_group + * \defgroup osc_group Oscillator Management + * + * This group contains functions and definitions related to configuring + * and enabling/disabling on-chip oscillators. Internal RC-oscillators, + * external crystal oscillators and external clock generators are + * supported by this module. What all of these have in common is that + * they swing at a fixed, nominal frequency which is normally not + * adjustable. + * + * \par Example: Enabling an oscillator + * + * The following example demonstrates how to enable the external + * oscillator on XMEGA A and wait for it to be ready to use. The + * oscillator identifiers are platform-specific, so while the same + * procedure is used on all platforms, the parameter to osc_enable() + * will be different from device to device. + * \code + osc_enable(OSC_ID_XOSC); + osc_wait_ready(OSC_ID_XOSC); \endcode + * + * \section osc_group_board Board-specific Definitions + * If external oscillators are used, the board code must provide the + * following definitions for each of those: + * - \b BOARD__HZ: The nominal frequency of the oscillator. + * - \b BOARD__STARTUP_US: The startup time of the + * oscillator in microseconds. + * - \b BOARD__TYPE: The type of oscillator connected, i.e. + * whether it's a crystal or external clock, and sometimes what kind + * of crystal it is. The meaning of this value is platform-specific. + * + * @{ + */ + +//! \name Oscillator Management +//@{ +/** + * \fn void osc_enable(uint8_t id) + * \brief Enable oscillator \a id + * + * The startup time and mode value is automatically determined based on + * definitions in the board code. + */ +/** + * \fn void osc_disable(uint8_t id) + * \brief Disable oscillator \a id + */ +/** + * \fn osc_is_ready(uint8_t id) + * \brief Determine whether oscillator \a id is ready. + * \retval true Oscillator \a id is running and ready to use as a clock + * source. + * \retval false Oscillator \a id is not running. + */ +/** + * \fn uint32_t osc_get_rate(uint8_t id) + * \brief Return the frequency of oscillator \a id in Hz + */ + +#ifndef __ASSEMBLY__ + +/** + * \brief Wait until the oscillator identified by \a id is ready + * + * This function will busy-wait for the oscillator identified by \a id + * to become stable and ready to use as a clock source. + * + * \param id A number identifying the oscillator to wait for. + */ +static inline void osc_wait_ready(uint8_t id) +{ + while (!osc_is_ready(id)) { + /* Do nothing */ + } +} + +#endif /* __ASSEMBLY__ */ + +//@} + +//! @} + +#endif /* OSC_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h new file mode 100644 index 00000000..0a223742 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h @@ -0,0 +1,331 @@ +/** + * \file + * + * \brief PLL management + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef CLK_PLL_H_INCLUDED +#define CLK_PLL_H_INCLUDED + +#include "parts.h" +#include "conf_clock.h" + +#if SAM3S +# include "sam3s/pll.h" +#elif SAM3XA +# include "sam3x/pll.h" +#elif SAM3U +# include "sam3u/pll.h" +#elif SAM3N +# include "sam3n/pll.h" +#elif SAM4S +# include "sam4s/pll.h" +#elif SAM4E +# include "sam4e/pll.h" +#elif SAM4C +# include "sam4c/pll.h" +#elif SAM4CM +# include "sam4cm/pll.h" +#elif SAM4CP +# include "sam4cp/pll.h" +#elif SAM4L +# include "sam4l/pll.h" +#elif SAM4N +# include "sam4n/pll.h" +#elif SAMG +# include "samg/pll.h" +#elif SAMV71 +# include "samv71/pll.h" +#elif SAMV70 +# include "samv70/pll.h" +#elif SAME70 +# include "same70/pll.h" +#elif SAMS70 +# include "sams70/pll.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/pll.h" +#elif UC3A3 +# include "uc3a3_a4/pll.h" +#elif UC3B +# include "uc3b0_b1/pll.h" +#elif UC3C +# include "uc3c/pll.h" +#elif UC3D +# include "uc3d/pll.h" +#elif (UC3L0128 || UC3L0256 || UC3L3_L4) +# include "uc3l/pll.h" +#elif XMEGA +# include "xmega/pll.h" +#else +# error Unsupported chip type +#endif + +/** + * \ingroup clk_group + * \defgroup pll_group PLL Management + * + * This group contains functions and definitions related to configuring + * and enabling/disabling on-chip PLLs. A PLL will take an input signal + * (the \em source), optionally divide the frequency by a configurable + * \em divider, and then multiply the frequency by a configurable \em + * multiplier. + * + * Some devices don't support input dividers; specifying any other + * divisor than 1 on these devices will result in an assertion failure. + * Other devices may have various restrictions to the frequency range of + * the input and output signals. + * + * \par Example: Setting up PLL0 with default parameters + * + * The following example shows how to configure and enable PLL0 using + * the default parameters specified using the configuration symbols + * listed above. + * \code + pll_enable_config_defaults(0); \endcode + * + * To configure, enable PLL0 using the default parameters and to disable + * a specific feature like Wide Bandwidth Mode (a UC3A3-specific + * PLL option.), you can use this initialization process. + * \code + struct pll_config pllcfg; + if (pll_is_locked(pll_id)) { + return; // Pll already running + } + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_defaults(&pllcfg, 0); + pll_config_set_option(&pllcfg, PLL_OPT_WBM_DISABLE); + pll_enable(&pllcfg, 0); + pll_wait_for_lock(0); \endcode + * + * When the last function call returns, PLL0 is ready to be used as the + * main system clock source. + * + * \section pll_group_config Configuration Symbols + * + * Each PLL has a set of default parameters determined by the following + * configuration symbols in the application's configuration file: + * - \b CONFIG_PLLn_SOURCE: The default clock source connected to the + * input of PLL \a n. Must be one of the values defined by the + * #pll_source enum. + * - \b CONFIG_PLLn_MUL: The default multiplier (loop divider) of PLL + * \a n. + * - \b CONFIG_PLLn_DIV: The default input divider of PLL \a n. + * + * These configuration symbols determine the result of calling + * pll_config_defaults() and pll_get_default_rate(). + * + * @{ + */ + +//! \name Chip-specific PLL characteristics +//@{ +/** + * \def PLL_MAX_STARTUP_CYCLES + * \brief Maximum PLL startup time in number of slow clock cycles + */ +/** + * \def NR_PLLS + * \brief Number of on-chip PLLs + */ + +/** + * \def PLL_MIN_HZ + * \brief Minimum frequency that the PLL can generate + */ +/** + * \def PLL_MAX_HZ + * \brief Maximum frequency that the PLL can generate + */ +/** + * \def PLL_NR_OPTIONS + * \brief Number of PLL option bits + */ +//@} + +/** + * \enum pll_source + * \brief PLL clock source + */ + +//! \name PLL configuration +//@{ + +/** + * \struct pll_config + * \brief Hardware-specific representation of PLL configuration. + * + * This structure contains one or more device-specific values + * representing the current PLL configuration. The contents of this + * structure is typically different from platform to platform, and the + * user should not access any fields except through the PLL + * configuration API. + */ + +/** + * \fn void pll_config_init(struct pll_config *cfg, + * enum pll_source src, unsigned int div, unsigned int mul) + * \brief Initialize PLL configuration from standard parameters. + * + * \note This function may be defined inline because it is assumed to be + * called very few times, and usually with constant parameters. Inlining + * it will in such cases reduce the code size significantly. + * + * \param cfg The PLL configuration to be initialized. + * \param src The oscillator to be used as input to the PLL. + * \param div PLL input divider. + * \param mul PLL loop divider (i.e. multiplier). + * + * \return A configuration which will make the PLL run at + * (\a mul / \a div) times the frequency of \a src + */ +/** + * \def pll_config_defaults(cfg, pll_id) + * \brief Initialize PLL configuration using default parameters. + * + * After this function returns, \a cfg will contain a configuration + * which will make the PLL run at (CONFIG_PLLx_MUL / CONFIG_PLLx_DIV) + * times the frequency of CONFIG_PLLx_SOURCE. + * + * \param cfg The PLL configuration to be initialized. + * \param pll_id Use defaults for this PLL. + */ +/** + * \def pll_get_default_rate(pll_id) + * \brief Get the default rate in Hz of \a pll_id + */ +/** + * \fn void pll_config_set_option(struct pll_config *cfg, + * unsigned int option) + * \brief Set the PLL option bit \a option in the configuration \a cfg. + * + * \param cfg The PLL configuration to be changed. + * \param option The PLL option bit to be set. + */ +/** + * \fn void pll_config_clear_option(struct pll_config *cfg, + * unsigned int option) + * \brief Clear the PLL option bit \a option in the configuration \a cfg. + * + * \param cfg The PLL configuration to be changed. + * \param option The PLL option bit to be cleared. + */ +/** + * \fn void pll_config_read(struct pll_config *cfg, unsigned int pll_id) + * \brief Read the currently active configuration of \a pll_id. + * + * \param cfg The configuration object into which to store the currently + * active configuration. + * \param pll_id The ID of the PLL to be accessed. + */ +/** + * \fn void pll_config_write(const struct pll_config *cfg, + * unsigned int pll_id) + * \brief Activate the configuration \a cfg on \a pll_id + * + * \param cfg The configuration object representing the PLL + * configuration to be activated. + * \param pll_id The ID of the PLL to be updated. + */ + +//@} + +//! \name Interaction with the PLL hardware +//@{ +/** + * \fn void pll_enable(const struct pll_config *cfg, + * unsigned int pll_id) + * \brief Activate the configuration \a cfg and enable PLL \a pll_id. + * + * \param cfg The PLL configuration to be activated. + * \param pll_id The ID of the PLL to be enabled. + */ +/** + * \fn void pll_disable(unsigned int pll_id) + * \brief Disable the PLL identified by \a pll_id. + * + * After this function is called, the PLL identified by \a pll_id will + * be disabled. The PLL configuration stored in hardware may be affected + * by this, so if the caller needs to restore the same configuration + * later, it should either do a pll_config_read() before disabling the + * PLL, or remember the last configuration written to the PLL. + * + * \param pll_id The ID of the PLL to be disabled. + */ +/** + * \fn bool pll_is_locked(unsigned int pll_id) + * \brief Determine whether the PLL is locked or not. + * + * \param pll_id The ID of the PLL to check. + * + * \retval true The PLL is locked and ready to use as a clock source + * \retval false The PLL is not yet locked, or has not been enabled. + */ +/** + * \fn void pll_enable_source(enum pll_source src) + * \brief Enable the source of the pll. + * The source is enabled, if the source is not already running. + * + * \param src The ID of the PLL source to enable. + */ +/** + * \fn void pll_enable_config_defaults(unsigned int pll_id) + * \brief Enable the pll with the default configuration. + * PLL is enabled, if the PLL is not already locked. + * + * \param pll_id The ID of the PLL to enable. + */ + +/** + * \brief Wait for PLL \a pll_id to become locked + * + * \todo Use a timeout to avoid waiting forever and hanging the system + * + * \param pll_id The ID of the PLL to wait for. + * + * \retval STATUS_OK The PLL is now locked. + * \retval ERR_TIMEOUT Timed out waiting for PLL to become locked. + */ +static inline int pll_wait_for_lock(unsigned int pll_id) +{ + Assert(pll_id < NR_PLLS); + + while (!pll_is_locked(pll_id)) { + /* Do nothing */ + } + + return 0; +} + +//@} +//! @} + +#endif /* CLK_PLL_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h new file mode 100644 index 00000000..0739a1de --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h @@ -0,0 +1,320 @@ +/** + * \file + * + * \brief Chip-specific generic clock management. + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CHIP_GENCLK_H_INCLUDED +#define CHIP_GENCLK_H_INCLUDED + +#include +#include +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup genclk_group + * @{ + */ + +//! \name Programmable Clock Identifiers (PCK) +//@{ +#define GENCLK_PCK_0 0 //!< PCK0 ID +#define GENCLK_PCK_1 1 //!< PCK1 ID +#define GENCLK_PCK_2 2 //!< PCK2 ID +//@} + +//! \name Programmable Clock Sources (PCK) +//@{ + +enum genclk_source { + GENCLK_PCK_SRC_SLCK_RC = 0,//!< Internal 32kHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_SLCK_XTAL = 1,//!< External 32kHz crystal oscillator as PCK source clock + GENCLK_PCK_SRC_SLCK_BYPASS = 2,//!< External 32kHz bypass oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_4M_RC = 3,//!< Internal 4MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_8M_RC = 4,//!< Internal 8MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_12M_RC = 5,//!< Internal 12MHz RC oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_XTAL = 6,//!< External crystal oscillator as PCK source clock + GENCLK_PCK_SRC_MAINCK_BYPASS = 7,//!< External bypass oscillator as PCK source clock + GENCLK_PCK_SRC_PLLACK = 8,//!< Use PLLACK as PCK source clock + GENCLK_PCK_SRC_MCK = 9,//!< Use Master Clk as PCK source clock +}; + +//@} + +//! \name Programmable Clock Prescalers (PCK) +//@{ + +enum genclk_divider { + GENCLK_PCK_PRES_1 = PMC_PCK_PRES(0), //!< Set PCK clock prescaler to 1 + GENCLK_PCK_PRES_2 = PMC_PCK_PRES(1), //!< Set PCK clock prescaler to 2 + GENCLK_PCK_PRES_4 = PMC_PCK_PRES(2), //!< Set PCK clock prescaler to 4 + GENCLK_PCK_PRES_8 = PMC_PCK_PRES(3), //!< Set PCK clock prescaler to 8 + GENCLK_PCK_PRES_16 = PMC_PCK_PRES(4), //!< Set PCK clock prescaler to 16 + GENCLK_PCK_PRES_32 = PMC_PCK_PRES(5), //!< Set PCK clock prescaler to 32 + GENCLK_PCK_PRES_64 = PMC_PCK_PRES(6), //!< Set PCK clock prescaler to 64 +}; + +//@} + +struct genclk_config { + uint32_t ctrl; +}; + +static inline void genclk_config_defaults(struct genclk_config *p_cfg, + uint32_t ul_id) +{ + ul_id = ul_id; + p_cfg->ctrl = 0; +} + +static inline void genclk_config_read(struct genclk_config *p_cfg, + uint32_t ul_id) +{ + p_cfg->ctrl = PMC->PMC_PCK[ul_id]; +} + +static inline void genclk_config_write(const struct genclk_config *p_cfg, + uint32_t ul_id) +{ + PMC->PMC_PCK[ul_id] = p_cfg->ctrl; +} + +//! \name Programmable Clock Source and Prescaler configuration +//@{ + +static inline void genclk_config_set_source(struct genclk_config *p_cfg, + enum genclk_source e_src) +{ + p_cfg->ctrl &= (~PMC_PCK_CSS_Msk); + + switch (e_src) { + case GENCLK_PCK_SRC_SLCK_RC: + case GENCLK_PCK_SRC_SLCK_XTAL: + case GENCLK_PCK_SRC_SLCK_BYPASS: + p_cfg->ctrl |= (PMC_PCK_CSS_SLOW_CLK); + break; + + case GENCLK_PCK_SRC_MAINCK_4M_RC: + case GENCLK_PCK_SRC_MAINCK_8M_RC: + case GENCLK_PCK_SRC_MAINCK_12M_RC: + case GENCLK_PCK_SRC_MAINCK_XTAL: + case GENCLK_PCK_SRC_MAINCK_BYPASS: + p_cfg->ctrl |= (PMC_PCK_CSS_MAIN_CLK); + break; + + case GENCLK_PCK_SRC_PLLACK: + p_cfg->ctrl |= (PMC_PCK_CSS_PLLA_CLK); + break; + + case GENCLK_PCK_SRC_MCK: + p_cfg->ctrl |= (PMC_PCK_CSS_MCK); + break; + + default: + break; + } +} + +static inline void genclk_config_set_divider(struct genclk_config *p_cfg, + uint32_t e_divider) +{ + p_cfg->ctrl &= ~PMC_PCK_PRES_Msk; + p_cfg->ctrl |= e_divider; +} + +//@} + +static inline void genclk_enable(const struct genclk_config *p_cfg, uint32_t ul_id) +{ + PMC->PMC_PCK[ul_id] = p_cfg->ctrl; + pmc_enable_pck(ul_id); +} + +static inline void genclk_disable(uint32_t ul_id) +{ + pmc_disable_pck(ul_id); +} + +static inline void genclk_enable_source(enum genclk_source e_src) +{ + switch (e_src) { + case GENCLK_PCK_SRC_SLCK_RC: + if (!osc_is_ready(OSC_SLCK_32K_RC)) { + osc_enable(OSC_SLCK_32K_RC); + osc_wait_ready(OSC_SLCK_32K_RC); + } + break; + + case GENCLK_PCK_SRC_SLCK_XTAL: + if (!osc_is_ready(OSC_SLCK_32K_XTAL)) { + osc_enable(OSC_SLCK_32K_XTAL); + osc_wait_ready(OSC_SLCK_32K_XTAL); + } + break; + + case GENCLK_PCK_SRC_SLCK_BYPASS: + if (!osc_is_ready(OSC_SLCK_32K_BYPASS)) { + osc_enable(OSC_SLCK_32K_BYPASS); + osc_wait_ready(OSC_SLCK_32K_BYPASS); + } + break; + + case GENCLK_PCK_SRC_MAINCK_4M_RC: + if (!osc_is_ready(OSC_MAINCK_4M_RC)) { + osc_enable(OSC_MAINCK_4M_RC); + osc_wait_ready(OSC_MAINCK_4M_RC); + } + break; + + case GENCLK_PCK_SRC_MAINCK_8M_RC: + if (!osc_is_ready(OSC_MAINCK_8M_RC)) { + osc_enable(OSC_MAINCK_8M_RC); + osc_wait_ready(OSC_MAINCK_8M_RC); + } + break; + + case GENCLK_PCK_SRC_MAINCK_12M_RC: + if (!osc_is_ready(OSC_MAINCK_12M_RC)) { + osc_enable(OSC_MAINCK_12M_RC); + osc_wait_ready(OSC_MAINCK_12M_RC); + } + break; + + case GENCLK_PCK_SRC_MAINCK_XTAL: + if (!osc_is_ready(OSC_MAINCK_XTAL)) { + osc_enable(OSC_MAINCK_XTAL); + osc_wait_ready(OSC_MAINCK_XTAL); + } + break; + + case GENCLK_PCK_SRC_MAINCK_BYPASS: + if (!osc_is_ready(OSC_MAINCK_BYPASS)) { + osc_enable(OSC_MAINCK_BYPASS); + osc_wait_ready(OSC_MAINCK_BYPASS); + } + break; + +#ifdef CONFIG_PLL0_SOURCE + case GENCLK_PCK_SRC_PLLACK: + pll_enable_config_defaults(0); + break; +#endif + + case GENCLK_PCK_SRC_MCK: + break; + + default: + Assert(false); + break; + } +} + +//! \name Retrieves the current rate in Hz of the Programmable Clock Source +//@{ +static inline uint32_t genclk_get_frequency_hz(uint32_t ul_id) +{ + uint32_t pck_source,clock_config; + uint32_t pck_freq = 0; + pck_source = (PMC->PMC_PCK[ul_id] & PMC_PCK_CSS_Msk) >> PMC_PCK_CSS_Pos; + switch(pck_source) + { + case PMC_PCK_CSS_SLOW_CLK: + if (pmc_get_slck_config()) + pck_freq = OSC_SLCK_32K_RC_HZ; + else + pck_freq = OSC_SLCK_32K_XTAL_HZ; + break; + case PMC_PCK_CSS_MAIN_CLK: + case PMC_PCK_CSS_PLLA_CLK: + clock_config = pmc_get_mainck_config(); + if (clock_config & CKGR_MOR_MOSCSEL) + { + switch(clock_config & CKGR_MOR_MOSCRCF_Msk) + { + case CKGR_MOR_MOSCRCF_4_MHz: + pck_freq = OSC_MAINCK_4M_RC_HZ; + break; + case CKGR_MOR_MOSCRCF_8_MHz: + pck_freq = OSC_MAINCK_8M_RC_HZ; + break; + case CKGR_MOR_MOSCRCF_12_MHz: + pck_freq = OSC_MAINCK_12M_RC_HZ; + break; + } + } + else + { + pck_freq = OSC_MAINCK_XTAL_HZ; + } + + if (pck_source == PMC_PCK_CSS_PLLA_CLK) + { + clock_config = pmc_get_pllack_config(); + if ((clock_config & CKGR_PLLAR_DIVA_Msk) == 0) + return 0; + pck_freq *= ((((clock_config & CKGR_PLLAR_MULA_Msk)>>CKGR_PLLAR_MULA_Pos) + 1)/(clock_config & CKGR_PLLAR_DIVA_Msk)); + } + break; + case PMC_PCK_CSS_UPLL_CLK: + pck_freq = pmc_get_upllckdiv_config() ? PLL_UPLL_HZ/2: PLL_UPLL_HZ; + break; + case PMC_PCK_CSS_MCK: + pck_freq = sysclk_get_main_hz(); + break; + default: + break; + } + pck_freq /= ((PMC->PMC_PCK[ul_id] & PMC_PCK_PRES_Msk) >> PMC_PCK_PRES_Pos)+1; + return pck_freq; +} +//! @} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_GENCLK_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h new file mode 100644 index 00000000..fe98a2cb --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h @@ -0,0 +1,237 @@ +/** + * \file + * + * \brief Chip-specific oscillator management functions. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CHIP_OSC_H_INCLUDED +#define CHIP_OSC_H_INCLUDED + +#include "board.h" +#include "pmc.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/* + * Below BOARD_XXX macros are related to the specific board, and + * should be defined by the board code, otherwise default value are used. + */ +#if !defined(BOARD_FREQ_SLCK_XTAL) +# warning The board slow clock xtal frequency has not been defined. +# define BOARD_FREQ_SLCK_XTAL (32768UL) +#endif + +#if !defined(BOARD_FREQ_SLCK_BYPASS) +# warning The board slow clock bypass frequency has not been defined. +# define BOARD_FREQ_SLCK_BYPASS (32768UL) +#endif + +#if !defined(BOARD_FREQ_MAINCK_XTAL) +# warning The board main clock xtal frequency has not been defined. +# define BOARD_FREQ_MAINCK_XTAL (12000000UL) +#endif + +#if !defined(BOARD_FREQ_MAINCK_BYPASS) +# warning The board main clock bypass frequency has not been defined. +# define BOARD_FREQ_MAINCK_BYPASS (12000000UL) +#endif + +#if !defined(BOARD_OSC_STARTUP_US) +# warning The board main clock xtal startup time has not been defined. +# define BOARD_OSC_STARTUP_US (15625UL) +#endif + +/** + * \weakgroup osc_group + * @{ + */ + +//! \name Oscillator identifiers +//@{ +#define OSC_SLCK_32K_RC 0 //!< Internal 32kHz RC oscillator. +#define OSC_SLCK_32K_XTAL 1 //!< External 32kHz crystal oscillator. +#define OSC_SLCK_32K_BYPASS 2 //!< External 32kHz bypass oscillator. +#define OSC_MAINCK_4M_RC 3 //!< Internal 4MHz RC oscillator. +#define OSC_MAINCK_8M_RC 4 //!< Internal 8MHz RC oscillator. +#define OSC_MAINCK_12M_RC 5 //!< Internal 12MHz RC oscillator. +#define OSC_MAINCK_XTAL 6 //!< External crystal oscillator. +#define OSC_MAINCK_BYPASS 7 //!< External bypass oscillator. +//@} + +//! \name Oscillator clock speed in hertz +//@{ +#define OSC_SLCK_32K_RC_HZ CHIP_FREQ_SLCK_RC //!< Internal 32kHz RC oscillator. +#define OSC_SLCK_32K_XTAL_HZ BOARD_FREQ_SLCK_XTAL //!< External 32kHz crystal oscillator. +#define OSC_SLCK_32K_BYPASS_HZ BOARD_FREQ_SLCK_BYPASS //!< External 32kHz bypass oscillator. +#define OSC_MAINCK_4M_RC_HZ CHIP_FREQ_MAINCK_RC_4MHZ //!< Internal 4MHz RC oscillator. +#define OSC_MAINCK_8M_RC_HZ CHIP_FREQ_MAINCK_RC_8MHZ //!< Internal 8MHz RC oscillator. +#define OSC_MAINCK_12M_RC_HZ CHIP_FREQ_MAINCK_RC_12MHZ //!< Internal 12MHz RC oscillator. +#define OSC_MAINCK_XTAL_HZ BOARD_FREQ_MAINCK_XTAL //!< External crystal oscillator. +#define OSC_MAINCK_BYPASS_HZ BOARD_FREQ_MAINCK_BYPASS //!< External bypass oscillator. +//@} + +static inline void osc_enable(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + break; + + case OSC_SLCK_32K_XTAL: + pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); + break; + + case OSC_SLCK_32K_BYPASS: + pmc_switch_sclk_to_32kxtal(PMC_OSC_BYPASS); + break; + + + case OSC_MAINCK_4M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + break; + + case OSC_MAINCK_8M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + break; + + case OSC_MAINCK_12M_RC: + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + break; + + + case OSC_MAINCK_XTAL: + pmc_switch_mainck_to_xtal(PMC_OSC_XTAL, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + OSC_SLCK_32K_RC_HZ)); + break; + + case OSC_MAINCK_BYPASS: + pmc_switch_mainck_to_xtal(PMC_OSC_BYPASS, + pmc_us_to_moscxtst(BOARD_OSC_STARTUP_US, + OSC_SLCK_32K_RC_HZ)); + break; + } +} + +static inline void osc_disable(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + case OSC_SLCK_32K_XTAL: + case OSC_SLCK_32K_BYPASS: + break; + + case OSC_MAINCK_4M_RC: + case OSC_MAINCK_8M_RC: + case OSC_MAINCK_12M_RC: + pmc_osc_disable_fastrc(); + break; + + case OSC_MAINCK_XTAL: + pmc_osc_disable_xtal(PMC_OSC_XTAL); + break; + + case OSC_MAINCK_BYPASS: + pmc_osc_disable_xtal(PMC_OSC_BYPASS); + break; + } +} + +static inline bool osc_is_ready(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + return 1; + + case OSC_SLCK_32K_XTAL: + case OSC_SLCK_32K_BYPASS: + return pmc_osc_is_ready_32kxtal(); + + case OSC_MAINCK_4M_RC: + case OSC_MAINCK_8M_RC: + case OSC_MAINCK_12M_RC: + case OSC_MAINCK_XTAL: + case OSC_MAINCK_BYPASS: + return pmc_osc_is_ready_mainck(); + } + + return 0; +} + +static inline uint32_t osc_get_rate(uint32_t ul_id) +{ + switch (ul_id) { + case OSC_SLCK_32K_RC: + return OSC_SLCK_32K_RC_HZ; + + case OSC_SLCK_32K_XTAL: + return BOARD_FREQ_SLCK_XTAL; + + case OSC_SLCK_32K_BYPASS: + return BOARD_FREQ_SLCK_BYPASS; + + case OSC_MAINCK_4M_RC: + return OSC_MAINCK_4M_RC_HZ; + + case OSC_MAINCK_8M_RC: + return OSC_MAINCK_8M_RC_HZ; + + case OSC_MAINCK_12M_RC: + return OSC_MAINCK_12M_RC_HZ; + + case OSC_MAINCK_XTAL: + return BOARD_FREQ_MAINCK_XTAL; + + case OSC_MAINCK_BYPASS: + return BOARD_FREQ_MAINCK_BYPASS; + } + + return 0; +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_OSC_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h new file mode 100644 index 00000000..e7c732e6 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h @@ -0,0 +1,259 @@ +/** + * \file + * + * \brief Chip-specific PLL definitions. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CHIP_PLL_H_INCLUDED +#define CHIP_PLL_H_INCLUDED + +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup pll_group + * @{ + */ + +#define PLL_OUTPUT_MIN_HZ 160000000 +#define PLL_OUTPUT_MAX_HZ 500000000 + +#define PLL_INPUT_MIN_HZ 3000000 +#define PLL_INPUT_MAX_HZ 32000000 + +#define NR_PLLS 2 +#define PLLA_ID 0 +#define UPLL_ID 1 //!< USB UTMI PLL. + +#define PLL_UPLL_HZ 480000000 + +#define PLL_COUNT 0x3fU + +enum pll_source { + PLL_SRC_MAINCK_4M_RC = OSC_MAINCK_4M_RC, //!< Internal 4MHz RC oscillator. + PLL_SRC_MAINCK_8M_RC = OSC_MAINCK_8M_RC, //!< Internal 8MHz RC oscillator. + PLL_SRC_MAINCK_12M_RC = OSC_MAINCK_12M_RC, //!< Internal 12MHz RC oscillator. + PLL_SRC_MAINCK_XTAL = OSC_MAINCK_XTAL, //!< External crystal oscillator. + PLL_SRC_MAINCK_BYPASS = OSC_MAINCK_BYPASS, //!< External bypass oscillator. + PLL_NR_SOURCES, //!< Number of PLL sources. +}; + +struct pll_config { + uint32_t ctrl; +}; + +#define pll_get_default_rate(pll_id) \ + ((osc_get_rate(CONFIG_PLL##pll_id##_SOURCE) \ + * CONFIG_PLL##pll_id##_MUL) \ + / CONFIG_PLL##pll_id##_DIV) + +/* Force UTMI PLL parameters (Hardware defined) */ +#ifdef CONFIG_PLL1_SOURCE +# undef CONFIG_PLL1_SOURCE +#endif +#ifdef CONFIG_PLL1_MUL +# undef CONFIG_PLL1_MUL +#endif +#ifdef CONFIG_PLL1_DIV +# undef CONFIG_PLL1_DIV +#endif +#define CONFIG_PLL1_SOURCE PLL_SRC_MAINCK_XTAL +#define CONFIG_PLL1_MUL 0 +#define CONFIG_PLL1_DIV 0 + +/** + * \note The SAMV71 PLL hardware interprets mul as mul+1. For readability the + * hardware mul+1 is hidden in this implementation. Use mul as mul effective + * value. + */ +static inline void pll_config_init(struct pll_config *p_cfg, + enum pll_source e_src, uint32_t ul_div, uint32_t ul_mul) +{ + uint32_t vco_hz; + + Assert(e_src < PLL_NR_SOURCES); + + if (ul_div == 0 && ul_mul == 0) { /* Must only be true for UTMI PLL */ + p_cfg->ctrl = CKGR_UCKR_UPLLCOUNT(PLL_COUNT); + } else { /* PLLA */ + /* Calculate internal VCO frequency */ + vco_hz = osc_get_rate(e_src) / ul_div; + Assert(vco_hz >= PLL_INPUT_MIN_HZ); + Assert(vco_hz <= PLL_INPUT_MAX_HZ); + + vco_hz *= ul_mul; + Assert(vco_hz >= PLL_OUTPUT_MIN_HZ); + Assert(vco_hz <= PLL_OUTPUT_MAX_HZ); + + /* PMC hardware will automatically make it mul+1 */ + p_cfg->ctrl = CKGR_PLLAR_MULA(ul_mul - 1) | CKGR_PLLAR_DIVA(ul_div) \ + | CKGR_PLLAR_PLLACOUNT(PLL_COUNT); + } +} + +#define pll_config_defaults(cfg, pll_id) \ + pll_config_init(cfg, \ + CONFIG_PLL##pll_id##_SOURCE, \ + CONFIG_PLL##pll_id##_DIV, \ + CONFIG_PLL##pll_id##_MUL) + +static inline void pll_config_read(struct pll_config *p_cfg, uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + p_cfg->ctrl = PMC->CKGR_PLLAR; + } else { + p_cfg->ctrl = PMC->CKGR_UCKR; + } +} + +static inline void pll_config_write(const struct pll_config *p_cfg, uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); // Always stop PLL first! + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; + } else { + PMC->CKGR_UCKR = p_cfg->ctrl; + } +} + +static inline void pll_enable(const struct pll_config *p_cfg, uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); // Always stop PLL first! + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | p_cfg->ctrl; + } else { + PMC->CKGR_UCKR = p_cfg->ctrl | CKGR_UCKR_UPLLEN; + } +} + +/** + * \note This will only disable the selected PLL, not the underlying oscillator (mainck). + */ +static inline void pll_disable(uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + pmc_disable_pllack(); + } else { + PMC->CKGR_UCKR &= ~CKGR_UCKR_UPLLEN; + } +} + +static inline uint32_t pll_is_locked(uint32_t ul_pll_id) +{ + Assert(ul_pll_id < NR_PLLS); + + if (ul_pll_id == PLLA_ID) { + return pmc_is_locked_pllack(); + } else { + return pmc_is_locked_upll(); + } +} + +static inline void pll_enable_source(enum pll_source e_src) +{ + switch (e_src) { + case PLL_SRC_MAINCK_4M_RC: + case PLL_SRC_MAINCK_8M_RC: + case PLL_SRC_MAINCK_12M_RC: + case PLL_SRC_MAINCK_XTAL: + case PLL_SRC_MAINCK_BYPASS: + osc_enable(e_src); + osc_wait_ready(e_src); + break; + + default: + Assert(false); + break; + } +} + +static inline void pll_enable_config_defaults(unsigned int ul_pll_id) +{ + struct pll_config pllcfg; + + if (pll_is_locked(ul_pll_id)) { + return; // Pll already running + } + switch (ul_pll_id) { +#ifdef CONFIG_PLL0_SOURCE + case 0: + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_init(&pllcfg, + CONFIG_PLL0_SOURCE, + CONFIG_PLL0_DIV, + CONFIG_PLL0_MUL); + break; +#endif +#ifdef CONFIG_PLL1_SOURCE + case 1: + pll_enable_source(CONFIG_PLL1_SOURCE); + pll_config_init(&pllcfg, + CONFIG_PLL1_SOURCE, + CONFIG_PLL1_DIV, + CONFIG_PLL1_MUL); + break; +#endif + default: + Assert(false); + break; + } + pll_enable(&pllcfg, ul_pll_id); + while (!pll_is_locked(ul_pll_id)); +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_PLL_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c new file mode 100644 index 00000000..5a5dc015 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c @@ -0,0 +1,258 @@ +/** + * \file + * + * \brief Chip-specific system clock management functions. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup sysclk_group + * @{ + */ + +#if defined(CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) +/** + * \brief boolean signalling that the sysclk_init is done. + */ +uint32_t sysclk_initialized = 0; +#endif + +/** + * \brief Set system clock prescaler configuration + * + * This function will change the system clock prescaler configuration to + * match the parameters. + * + * \note The parameters to this function are device-specific. + * + * \param ul_pres The CPU clock will be divided by \f$2^{mck\_pres}\f$ + */ +void sysclk_set_prescalers(uint32_t ul_pres) +{ + pmc_mck_set_prescaler(ul_pres); + SystemCoreClockUpdate(); +} + +/** + * \brief Change the source of the main system clock. + * + * \param ul_src The new system clock source. Must be one of the constants + * from the System Clock Sources section. + */ +void sysclk_set_source(uint32_t ul_src) +{ + switch (ul_src) { + case SYSCLK_SRC_SLCK_RC: + case SYSCLK_SRC_SLCK_XTAL: + case SYSCLK_SRC_SLCK_BYPASS: + pmc_mck_set_source(PMC_MCKR_CSS_SLOW_CLK); + break; + + case SYSCLK_SRC_MAINCK_4M_RC: + case SYSCLK_SRC_MAINCK_8M_RC: + case SYSCLK_SRC_MAINCK_12M_RC: + case SYSCLK_SRC_MAINCK_XTAL: + case SYSCLK_SRC_MAINCK_BYPASS: + pmc_mck_set_source(PMC_MCKR_CSS_MAIN_CLK); + break; + + case SYSCLK_SRC_PLLACK: + pmc_mck_set_source(PMC_MCKR_CSS_PLLA_CLK); + break; + + case SYSCLK_SRC_UPLLCK: + pmc_mck_set_source(PMC_MCKR_CSS_UPLL_CLK); + break; + } + + SystemCoreClockUpdate(); +} + +#if defined(CONFIG_USBCLK_SOURCE) || defined(__DOXYGEN__) +/** + * \brief Enable USB clock. + * + * \note The SAMV71 UDP hardware interprets div as div+1. For readability the hardware div+1 + * is hidden in this implementation. Use div as div effective value. + * + * \param pll_id Source of the USB clock. + * \param div Actual clock divisor. Must be superior to 0. + */ +void sysclk_enable_usb(void) +{ + Assert(CONFIG_USBCLK_DIV > 0); + +#ifdef CONFIG_PLL0_SOURCE + if (CONFIG_USBCLK_SOURCE == USBCLK_SRC_PLL0) { + struct pll_config pllcfg; + + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_defaults(&pllcfg, 0); + pll_enable(&pllcfg, 0); + pll_wait_for_lock(0); + pmc_switch_udpck_to_pllack(CONFIG_USBCLK_DIV - 1); + pmc_enable_udpck(); + return; + } +#endif + + if (CONFIG_USBCLK_SOURCE == USBCLK_SRC_UPLL) { + + pmc_enable_upll_clock(); + pmc_switch_udpck_to_upllck(CONFIG_USBCLK_DIV - 1); + pmc_enable_udpck(); + return; + } +} + +/** + * \brief Disable the USB clock. + * + * \note This implementation does not switch off the PLL, it just turns off the USB clock. + */ +void sysclk_disable_usb(void) +{ + pmc_disable_udpck(); +} +#endif // CONFIG_USBCLK_SOURCE + +void sysclk_init(void) +{ + struct pll_config pllcfg; + + /* Set flash wait state to max in case the below clock switching. */ + system_init_flash(CHIP_FREQ_CPU_MAX/2); + + /* Config system clock setting */ + if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_RC) { + osc_enable(OSC_SLCK_32K_RC); + osc_wait_ready(OSC_SLCK_32K_RC); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_XTAL) { + osc_enable(OSC_SLCK_32K_XTAL); + osc_wait_ready(OSC_SLCK_32K_XTAL); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_BYPASS) { + osc_enable(OSC_SLCK_32K_BYPASS); + osc_wait_ready(OSC_SLCK_32K_BYPASS); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_sclk(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_4M_RC) { + /* Already running from SYSCLK_SRC_MAINCK_4M_RC */ + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_8M_RC) { + osc_enable(OSC_MAINCK_8M_RC); + osc_wait_ready(OSC_MAINCK_8M_RC); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_12M_RC) { + osc_enable(OSC_MAINCK_12M_RC); + osc_wait_ready(OSC_MAINCK_12M_RC); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_XTAL) { + osc_enable(OSC_MAINCK_XTAL); + osc_wait_ready(OSC_MAINCK_XTAL); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_BYPASS) { + osc_enable(OSC_MAINCK_BYPASS); + osc_wait_ready(OSC_MAINCK_BYPASS); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_mainck(CONFIG_SYSCLK_PRES); + } + +#ifdef CONFIG_PLL0_SOURCE + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) { + pll_enable_source(CONFIG_PLL0_SOURCE); + pll_config_defaults(&pllcfg, 0); + pll_enable(&pllcfg, 0); + pll_wait_for_lock(0); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_pllack(CONFIG_SYSCLK_PRES); + } +#endif + + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_UPLLCK) { + pll_enable_source(CONFIG_PLL1_SOURCE); + pll_config_defaults(&pllcfg, 1); + pll_enable(&pllcfg, 1); + pll_wait_for_lock(1); + pmc_mck_set_division(CONFIG_SYSCLK_DIV); + pmc_switch_mck_to_upllck(CONFIG_SYSCLK_PRES); + } + /* Update the SystemFrequency variable */ + SystemCoreClockUpdate(); + + /* Set a flash wait state depending on the master clock frequency */ + system_init_flash(sysclk_get_cpu_hz() / CONFIG_SYSCLK_DIV); + +#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) + /* Signal that the internal frequencies are setup */ + sysclk_initialized = 1; +#endif +} + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h new file mode 100644 index 00000000..1abb28ca --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h @@ -0,0 +1,463 @@ +/** + * \file + * + * \brief Chip-specific system clock management functions. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CHIP_SYSCLK_H_INCLUDED +#define CHIP_SYSCLK_H_INCLUDED + +#include +#include + +/** + * \page sysclk_quickstart Quick Start Guide for the System Clock Management + * service (SAMV71) + * + * This is the quick start guide for the \ref sysclk_group "System Clock + * Management" service, with step-by-step instructions on how to configure and + * use the service for specific use cases. + * + * \section sysclk_quickstart_usecases System Clock Management use cases + * - \ref sysclk_quickstart_basic + * - \ref sysclk_quickstart_use_case_2 + * + * \section sysclk_quickstart_basic Basic usage of the System Clock Management + * service + * This section will present a basic use case for the System Clock Management + * service. This use case will configure the main system clock to 120MHz, + * using an internal PLL module to multiply the frequency of a crystal attached + * to the microcontroller. + * + * \subsection sysclk_quickstart_use_case_1_prereq Prerequisites + * - None + * + * \subsection sysclk_quickstart_use_case_1_setup_steps Initialization code + * Add to the application initialization code: + * \code + sysclk_init(); +\endcode + * + * \subsection sysclk_quickstart_use_case_1_setup_steps_workflow Workflow + * -# Configure the system clocks according to the settings in conf_clock.h: + * \code sysclk_init(); \endcode + * + * \subsection sysclk_quickstart_use_case_1_example_code Example code + * Add or uncomment the following in your conf_clock.h header file, + * commenting out all other definitions of the same symbol(s): + * \code + #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK + + // Fpll0 = (Fclk * PLL_mul) / PLL_div + #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL + #define CONFIG_PLL0_MUL (120000000UL / BOARD_FREQ_MAINCK_XTAL) + #define CONFIG_PLL0_DIV 1 + + // Fbus = Fsys / BUS_div + #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 +\endcode + * + * \subsection sysclk_quickstart_use_case_1_example_workflow Workflow + * -# Configure the main system clock to use the output of the PLL module as + * its source: + * \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK \endcode + * -# Configure the PLL module to use the fast external fast crystal + * oscillator as its source: + * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode + * -# Configure the PLL module to multiply the external fast crystal + * oscillator frequency up to 120MHz: + * \code + #define CONFIG_PLL0_MUL (120000000UL / BOARD_FREQ_MAINCK_XTAL) + #define CONFIG_PLL0_DIV 1 +\endcode + * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the + * board \c conf_board.h configuration + * file as the frequency of the fast crystal attached to the microcontroller. + * -# Configure the main clock to run at the full 120MHz, disable scaling of + * the main system clock speed: + * \code + #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 +\endcode + * \note Some dividers are powers of two, while others are integer division + * factors. Refer to the formulas in the conf_clock.h template commented + * above each division define. + */ + +/** + * \page sysclk_quickstart_use_case_2 Advanced use case - Peripheral Bus Clock + * Management (SAMV71) + * + * \section sysclk_quickstart_use_case_2 Advanced use case - Peripheral Bus + * Clock Management + * This section will present a more advanced use case for the System Clock + * Management service. This use case will configure the main system clock to + * 96MHz, using an internal PLL module to multiply the frequency of a crystal + * attached to the microcontroller. The USB clock will be configured via the + * same PLL module. + * + * \subsection sysclk_quickstart_use_case_2_prereq Prerequisites + * - None + * + * \subsection sysclk_quickstart_use_case_2_setup_steps Initialization code + * Add to the application initialization code: + * \code + sysclk_init(); +\endcode + * + * \subsection sysclk_quickstart_use_case_2_setup_steps_workflow Workflow + * -# Configure the system clocks according to the settings in conf_clock.h: + * \code sysclk_init(); \endcode + * + * \subsection sysclk_quickstart_use_case_2_example_code Example code + * Add or uncomment the following in your conf_clock.h header file, + * commenting out all other definitions of the same symbol(s): + * \code + #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK + + // Fpll0 = (Fclk * PLL_mul) / PLL_div + #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL + #define CONFIG_PLL0_MUL (96000000UL / BOARD_FREQ_MAINCK_XTAL) + #define CONFIG_PLL0_DIV 1 + + // Fbus = Fsys / BUS_div + #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 + + // Fusb = Fsys / USB_div + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 + #define CONFIG_USBCLK_DIV 2 +\endcode + * + * \subsection sysclk_quickstart_use_case_2_example_workflow Workflow + * -# Configure the main system clock to use the output of the PLL0 module as + * its source: + * \code #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK \endcode + * -# Configure the PLL0 module to use the fast external fast crystal + * oscillator as its source: + * \code #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL \endcode + * -# Configure the PLL0 module to multiply the external fast crystal + * oscillator frequency up to 96MHz: + * \code + #define CONFIG_PLL0_MUL (96000000UL / BOARD_FREQ_MAINCK_XTAL) + #define CONFIG_PLL0_DIV 1 +\endcode + * \note For user boards, \c BOARD_FREQ_MAINCK_XTAL should be defined in the + * board \c conf_board.h configuration file as the frequency of the fast + * crystal attached to the microcontroller. + * -# Configure the main clock to run at the full 96MHz, disable scaling of + * the main system clock speed: + * \code + #define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 +\endcode + * \note Some dividers are powers of two, while others are integer division + * factors. Refer to the formulas in the conf_clock.h template commented + * above each division define. + * -# Configure the USB module clock to use the output of the PLL0 module as + * its source with division 2: + * \code + #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 + #define CONFIG_USBCLK_DIV 2 +\endcode + */ + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \weakgroup sysclk_group + * @{ + */ + +//! \name Configuration Symbols +//@{ +/** + * \def CONFIG_SYSCLK_SOURCE + * \brief Initial/static main system clock source + * + * The main system clock will be configured to use this clock during + * initialization. + */ +#ifndef CONFIG_SYSCLK_SOURCE +# define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC +#endif +/** + * \def CONFIG_SYSCLK_PRES + * \brief Initial CPU clock divider (mck) + * + * The MCK will run at + * \f[ + * f_{MCK} = \frac{f_{sys}}{\mathrm{CONFIG\_SYSCLK\_PRES}}\,\mbox{Hz} + * \f] + * after initialization. + */ +#ifndef CONFIG_SYSCLK_PRES +# define CONFIG_SYSCLK_PRES 0 +#endif + +//@} + +//! \name Master Clock Sources (MCK) +//@{ +#define SYSCLK_SRC_SLCK_RC 0 //!< Internal 32kHz RC oscillator as master source clock +#define SYSCLK_SRC_SLCK_XTAL 1 //!< External 32kHz crystal oscillator as master source clock +#define SYSCLK_SRC_SLCK_BYPASS 2 //!< External 32kHz bypass oscillator as master source clock +#define SYSCLK_SRC_MAINCK_4M_RC 3 //!< Internal 4MHz RC oscillator as master source clock +#define SYSCLK_SRC_MAINCK_8M_RC 4 //!< Internal 8MHz RC oscillator as master source clock +#define SYSCLK_SRC_MAINCK_12M_RC 5 //!< Internal 12MHz RC oscillator as master source clock +#define SYSCLK_SRC_MAINCK_XTAL 6 //!< External crystal oscillator as master source clock +#define SYSCLK_SRC_MAINCK_BYPASS 7 //!< External bypass oscillator as master source clock +#define SYSCLK_SRC_PLLACK 8 //!< Use PLLACK as master source clock +#define SYSCLK_SRC_UPLLCK 9 //!< Use UPLLCK as master source clock +//@} + +//! \name Master Clock Prescalers (MCK) +//@{ +#define SYSCLK_PRES_1 PMC_MCKR_PRES_CLK_1 //!< Set master clock prescaler to 1 +#define SYSCLK_PRES_2 PMC_MCKR_PRES_CLK_2 //!< Set master clock prescaler to 2 +#define SYSCLK_PRES_4 PMC_MCKR_PRES_CLK_4 //!< Set master clock prescaler to 4 +#define SYSCLK_PRES_8 PMC_MCKR_PRES_CLK_8 //!< Set master clock prescaler to 8 +#define SYSCLK_PRES_16 PMC_MCKR_PRES_CLK_16 //!< Set master clock prescaler to 16 +#define SYSCLK_PRES_32 PMC_MCKR_PRES_CLK_32 //!< Set master clock prescaler to 32 +#define SYSCLK_PRES_64 PMC_MCKR_PRES_CLK_64 //!< Set master clock prescaler to 64 +#define SYSCLK_PRES_3 PMC_MCKR_PRES_CLK_3 //!< Set master clock prescaler to 3 +//@} + +//! \name Master Clock Division (MCK) +//@{ +#define SYSCLK_DIV_1 PMC_MCKR_MDIV_EQ_PCK //!< Set master clock division to 1 +#define SYSCLK_DIV_2 PMC_MCKR_MDIV_PCK_DIV2 //!< Set master clock division to 2 +#define SYSCLK_DIV_4 PMC_MCKR_MDIV_PCK_DIV4 //!< Set master clock division to 4 +#define SYSCLK_DIV_3 PMC_MCKR_MDIV_PCK_DIV3 //!< Set master clock division to 3 +//@} + +//! \name USB Clock Sources +//@{ +#define USBCLK_SRC_PLL0 0 //!< Use PLLA +#define USBCLK_SRC_UPLL 1 //!< Use UPLL +//@} + +/** + * \def CONFIG_USBCLK_SOURCE + * \brief Configuration symbol for the USB generic clock source + * + * Sets the clock source to use for the USB. The source must also be properly + * configured. + * + * Define this to one of the \c USBCLK_SRC_xxx settings. Leave it undefined if + * USB is not required. + */ +#ifdef __DOXYGEN__ +# define CONFIG_USBCLK_SOURCE +#endif + +/** + * \def CONFIG_USBCLK_DIV + * \brief Configuration symbol for the USB generic clock divider setting + * + * Sets the clock division for the USB generic clock. If a USB clock source is + * selected with CONFIG_USBCLK_SOURCE, this configuration symbol must also be + * defined. + */ +#ifdef __DOXYGEN__ +# define CONFIG_USBCLK_DIV +#endif + +/** + * \name Querying the system clock + * + * The following functions may be used to query the current frequency of + * the system clock and the CPU and bus clocks derived from it. + * sysclk_get_main_hz() and sysclk_get_cpu_hz() can be assumed to be + * available on all platforms, although some platforms may define + * additional accessors for various chip-internal bus clocks. These are + * usually not intended to be queried directly by generic code. + */ +//@{ + +/** + * \brief Return the current rate in Hz of the main system clock + * + * \todo This function assumes that the main clock source never changes + * once it's been set up, and that PLL0 always runs at the compile-time + * configured default rate. While this is probably the most common + * configuration, which we want to support as a special case for + * performance reasons, we will at some point need to support more + * dynamic setups as well. + */ +#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) +extern uint32_t sysclk_initialized; +#endif +static inline uint32_t sysclk_get_main_hz(void) +{ +#if (defined CONFIG_SYSCLK_DEFAULT_RETURNS_SLOW_OSC) + if (!sysclk_initialized ) { + return OSC_MAINCK_4M_RC_HZ; + } +#endif + + /* Config system clock setting */ + if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_RC) { + return OSC_SLCK_32K_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_XTAL) { + return OSC_SLCK_32K_XTAL_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_SLCK_BYPASS) { + return OSC_SLCK_32K_BYPASS_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_4M_RC) { + return OSC_MAINCK_4M_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_8M_RC) { + return OSC_MAINCK_8M_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_12M_RC) { + return OSC_MAINCK_12M_RC_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_XTAL) { + return OSC_MAINCK_XTAL_HZ; + } else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_MAINCK_BYPASS) { + return OSC_MAINCK_BYPASS_HZ; + } +#ifdef CONFIG_PLL0_SOURCE + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_PLLACK) { + return pll_get_default_rate(0); + } +#endif + +#ifdef CONFIG_PLL1_SOURCE + else if (CONFIG_SYSCLK_SOURCE == SYSCLK_SRC_UPLLCK) { + return PLL_UPLL_HZ; + } +#endif + else { + /* unhandled_case(CONFIG_SYSCLK_SOURCE); */ + return 0; + } +} + +/** + * \brief Return the current rate in Hz of the CPU clock + * + * \todo This function assumes that the CPU always runs at the system + * clock frequency. We want to support at least two more scenarios: + * Fixed CPU/bus clock dividers (config symbols) and dynamic CPU/bus + * clock dividers (which may change at run time). Ditto for all the bus + * clocks. + * + * \return Frequency of the CPU clock, in Hz. + */ +static inline uint32_t sysclk_get_cpu_hz(void) +{ + /* CONFIG_SYSCLK_PRES is the register value for setting the expected */ + /* prescaler, not an immediate value. */ + return sysclk_get_main_hz() / + ((CONFIG_SYSCLK_PRES == SYSCLK_PRES_3) ? 3 : + (1 << (CONFIG_SYSCLK_PRES >> PMC_MCKR_PRES_Pos))); +} + +/** + * \brief Retrieves the current rate in Hz of the peripheral clocks. + * + * \return Frequency of the peripheral clocks, in Hz. + */ +static inline uint32_t sysclk_get_peripheral_hz(void) +{ + /* CONFIG_SYSCLK_PRES is the register value for setting the expected */ + /* prescaler, not an immediate value. */ + return sysclk_get_main_hz() / + (((CONFIG_SYSCLK_PRES == SYSCLK_PRES_3) ? 3 : (1 << (CONFIG_SYSCLK_PRES >> PMC_MCKR_PRES_Pos))) * CONFIG_SYSCLK_DIV); +} + +/** + * \brief Retrieves the current rate in Hz of the Peripheral Bus clock attached + * to the specified peripheral. + * + * \param module Pointer to the module's base address. + * + * \return Frequency of the bus attached to the specified peripheral, in Hz. + */ +static inline uint32_t sysclk_get_peripheral_bus_hz(const volatile void *module) +{ + UNUSED(module); + return sysclk_get_peripheral_hz(); +} +//@} + +//! \name Enabling and disabling synchronous clocks +//@{ + +/** + * \brief Enable a peripheral's clock. + * + * \param ul_id Id (number) of the peripheral clock. + */ +static inline void sysclk_enable_peripheral_clock(uint32_t ul_id) +{ + pmc_enable_periph_clk(ul_id); +} + +/** + * \brief Disable a peripheral's clock. + * + * \param ul_id Id (number) of the peripheral clock. + */ +static inline void sysclk_disable_peripheral_clock(uint32_t ul_id) +{ + pmc_disable_periph_clk(ul_id); +} + +//@} + +//! \name System Clock Source and Prescaler configuration +//@{ + +extern void sysclk_set_prescalers(uint32_t ul_pres); +extern void sysclk_set_source(uint32_t ul_src); + +//@} + +extern void sysclk_enable_usb(void); +extern void sysclk_disable_usb(void); + +extern void sysclk_init(void); + +//! @} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* CHIP_SYSCLK_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h new file mode 100644 index 00000000..fda18ec4 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h @@ -0,0 +1,184 @@ +/** + * \file + * + * \brief System clock management + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef SYSCLK_H_INCLUDED +#define SYSCLK_H_INCLUDED + +#include "parts.h" +#include "conf_clock.h" + +#if SAM3S +# include "sam3s/sysclk.h" +#elif SAM3U +# include "sam3u/sysclk.h" +#elif SAM3N +# include "sam3n/sysclk.h" +#elif SAM3XA +# include "sam3x/sysclk.h" +#elif SAM4S +# include "sam4s/sysclk.h" +#elif SAM4E +# include "sam4e/sysclk.h" +#elif SAM4C +# include "sam4c/sysclk.h" +#elif SAM4CM +# include "sam4cm/sysclk.h" +#elif SAM4CP +# include "sam4cp/sysclk.h" +#elif SAM4L +# include "sam4l/sysclk.h" +#elif SAM4N +# include "sam4n/sysclk.h" +#elif SAMG +# include "samg/sysclk.h" +#elif SAMV71 +# include "samv71/sysclk.h" +#elif SAMV70 +# include "samv70/sysclk.h" +#elif SAME70 +# include "same70/sysclk.h" +#elif SAMS70 +# include "sams70/sysclk.h" +#elif (UC3A0 || UC3A1) +# include "uc3a0_a1/sysclk.h" +#elif UC3A3 +# include "uc3a3_a4/sysclk.h" +#elif UC3B +# include "uc3b0_b1/sysclk.h" +#elif UC3C +# include "uc3c/sysclk.h" +#elif UC3D +# include "uc3d/sysclk.h" +#elif UC3L +# include "uc3l/sysclk.h" +#elif XMEGA +# include "xmega/sysclk.h" +#elif MEGA +# include "mega/sysclk.h" +#else +# error Unsupported chip type +#endif + +/** + * \defgroup clk_group Clock Management + */ + +/** + * \ingroup clk_group + * \defgroup sysclk_group System Clock Management + * + * See \ref sysclk_quickstart. + * + * The sysclk API covers the system clock and all + * clocks derived from it. The system clock is a chip-internal clock on + * which all synchronous clocks, i.e. CPU and bus/peripheral + * clocks, are based. The system clock is typically generated from one + * of a variety of sources, which may include crystal and RC oscillators + * as well as PLLs. The clocks derived from the system clock are + * sometimes also known as synchronous clocks, since they + * always run synchronously with respect to each other, as opposed to + * generic clocks which may run from different oscillators or + * PLLs. + * + * Most applications should simply call sysclk_init() to initialize + * everything related to the system clock and its source (oscillator, + * PLL or DFLL), and leave it at that. More advanced applications, and + * platform-specific drivers, may require additional services from the + * clock system, some of which may be platform-specific. + * + * \section sysclk_group_platform Platform Dependencies + * + * The sysclk API is partially chip- or platform-specific. While all + * platforms provide mostly the same functionality, there are some + * variations around how different bus types and clock tree structures + * are handled. + * + * The following functions are available on all platforms with the same + * parameters and functionality. These functions may be called freely by + * portable applications, drivers and services: + * - sysclk_init() + * - sysclk_set_source() + * - sysclk_get_main_hz() + * - sysclk_get_cpu_hz() + * - sysclk_get_peripheral_bus_hz() + * + * The following functions are available on all platforms, but there may + * be variations in the function signature (i.e. parameters) and + * behavior. These functions are typically called by platform-specific + * parts of drivers, and applications that aren't intended to be + * portable: + * - sysclk_enable_peripheral_clock() + * - sysclk_disable_peripheral_clock() + * - sysclk_enable_module() + * - sysclk_disable_module() + * - sysclk_module_is_enabled() + * - sysclk_set_prescalers() + * + * All other functions should be considered platform-specific. + * Enabling/disabling clocks to specific peripherals as well as + * determining the speed of these clocks should be done by calling + * functions provided by the driver for that peripheral. + * + * @{ + */ + +//! \name System Clock Initialization +//@{ +/** + * \fn void sysclk_init(void) + * \brief Initialize the synchronous clock system. + * + * This function will initialize the system clock and its source. This + * includes: + * - Mask all synchronous clocks except for any clocks which are + * essential for normal operation (for example internal memory + * clocks). + * - Set up the system clock prescalers as specified by the + * application's configuration file. + * - Enable the clock source specified by the application's + * configuration file (oscillator or PLL) and wait for it to become + * stable. + * - Set the main system clock source to the clock specified by the + * application's configuration file. + * + * Since all non-essential peripheral clocks are initially disabled, it + * is the responsibility of the peripheral driver to re-enable any + * clocks that are needed for normal operation. + */ +//@} + +//! @} + +#endif /* SYSCLK_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h new file mode 100644 index 00000000..cb9ef97a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h @@ -0,0 +1,76 @@ +/** + * \file + * + * \brief Common GPIO API. + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _GPIO_H_ +#define _GPIO_H_ + +#include + +#if (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) +# include "sam_gpio/sam_gpio.h" +#elif XMEGA +# include "xmega_gpio/xmega_gpio.h" +#elif MEGA || MEGA_RF +# include "mega_gpio/mega_gpio.h" +#else +# error Unsupported chip type +#endif + +/** + * \defgroup gpio_group General Purpose Input/Output + * + * This is the common API for GPIO. Additional features are available + * in the documentation of the specific modules. + * + * \section io_group_platform Platform Dependencies + * + * The following functions are available on all platforms, but there may + * be variations in the function signature (i.e. parameters) and + * behaviour. These functions are typically called by platform-specific + * parts of drivers, and applications that aren't intended to be + * portable: + * - gpio_pin_is_low() + * - gpio_pin_is_high() + * - gpio_set_pin_high() + * - gpio_set_pin_group_high() + * - gpio_set_pin_low() + * - gpio_set_pin_group_low() + * - gpio_toggle_pin() + * - gpio_toggle_pin_group() + * - gpio_configure_pin() + * - gpio_configure_group() + */ + +#endif /* _GPIO_H_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h new file mode 100644 index 00000000..27d7489c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h @@ -0,0 +1,73 @@ +/** + * \file + * + * \brief GPIO service for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef SAM_GPIO_H_INCLUDED +#define SAM_GPIO_H_INCLUDED + +#include "compiler.h" +#include "pio.h" + +#define gpio_pin_is_low(io_id) \ + (pio_get_pin_value(io_id) ? 0 : 1) + +#define gpio_pin_is_high(io_id) \ + (pio_get_pin_value(io_id) ? 1 : 0) + +#define gpio_set_pin_high(io_id) \ + pio_set_pin_high(io_id) + +#define gpio_set_pin_low(io_id) \ + pio_set_pin_low(io_id) + +#define gpio_toggle_pin(io_id) \ + pio_toggle_pin(io_id) + +#define gpio_configure_pin(io_id,io_flags) \ + pio_configure_pin(io_id,io_flags) + +#define gpio_configure_group(port_id,port_mask,io_flags) \ + pio_configure_pin_group(port_id,port_mask,io_flags) + +#define gpio_set_pin_group_high(port_id,mask) \ + pio_set_pin_group_high(port_id,mask) + +#define gpio_set_pin_group_low(port_id,mask) \ + pio_set_pin_group_low(port_id,mask) + +#define gpio_toggle_pin_group(port_id,mask) \ + pio_toggle_pin_group(port_id,mask) + +#endif /* SAM_GPIO_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h new file mode 100644 index 00000000..d392457c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h @@ -0,0 +1,538 @@ +/** + * \file + * + * \brief Common IOPORT service main header file for AVR, UC3 and ARM + * architectures. + * + * Copyright (c) 2012-2020 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef IOPORT_H +#define IOPORT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/** + * \defgroup ioport_group Common IOPORT API + * + * See \ref ioport_quickstart. + * + * This is common IOPORT service for GPIO pin configuration and control in a + * standardized manner across the MEGA, MEGA_RF, XMEGA, UC3 and ARM devices. + * + * Port pin control code is optimized for each platform, and should produce + * both compact and fast execution times when used with constant values. + * + * \section dependencies Dependencies + * This driver depends on the following modules: + * - \ref sysclk_group for clock speed and functions. + * @{ + */ + +/** + * \def IOPORT_CREATE_PIN(port, pin) + * \brief Create IOPORT pin number + * + * Create a IOPORT pin number for use with the IOPORT functions. + * + * \param port IOPORT port (e.g. PORTA, PA or PIOA depending on chosen + * architecture) + * \param pin IOPORT zero-based index of the I/O pin + */ + +/** \brief IOPORT pin directions */ +enum ioport_direction { + IOPORT_DIR_INPUT, /*!< IOPORT input direction */ + IOPORT_DIR_OUTPUT, /*!< IOPORT output direction */ +}; + +/** \brief IOPORT levels */ +enum ioport_value { + IOPORT_PIN_LEVEL_LOW, /*!< IOPORT pin value low */ + IOPORT_PIN_LEVEL_HIGH, /*!< IOPORT pin value high */ +}; + +#if MEGA_RF +/** \brief IOPORT edge sense modes */ +enum ioport_sense { + IOPORT_SENSE_LEVEL, /*!< IOPORT sense low level */ + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ +}; +#elif SAM && !SAM4L +/** \brief IOPORT edge sense modes */ +enum ioport_sense { + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ + IOPORT_SENSE_LEVEL_LOW, /*!< IOPORT sense low level */ + IOPORT_SENSE_LEVEL_HIGH,/*!< IOPORT sense High level */ +}; +#elif XMEGA +enum ioport_sense { + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ + IOPORT_SENSE_LEVEL_LOW, /*!< IOPORT sense low level */ +}; +#else +enum ioport_sense { + IOPORT_SENSE_BOTHEDGES, /*!< IOPORT sense both rising and falling edges */ + IOPORT_SENSE_RISING, /*!< IOPORT sense rising edges */ + IOPORT_SENSE_FALLING, /*!< IOPORT sense falling edges */ +}; +#endif + + +#if XMEGA +# include "xmega/ioport.h" +# if defined(IOPORT_XMEGA_COMPAT) +# include "xmega/ioport_compat.h" +# endif +#elif MEGA +# include "mega/ioport.h" +#elif UC3 +# include "uc3/ioport.h" +#elif SAM +# if SAM4L +# include "sam/ioport_gpio.h" +# elif (SAMD20 | SAMD21 | SAML21| SAMR34 |SAMR35 | WLR089) +# include "sam0/ioport.h" +# else +# include "sam/ioport_pio.h" +# endif +#endif + +/** + * \brief Initializes the IOPORT service, ready for use. + * + * This function must be called before using any other functions in the IOPORT + * service. + */ +static inline void ioport_init(void) +{ + arch_ioport_init(); +} + +/** + * \brief Enable an IOPORT pin, based on a pin created with \ref + * IOPORT_CREATE_PIN(). + * + * \param pin IOPORT pin to enable + */ +static inline void ioport_enable_pin(ioport_pin_t pin) +{ + arch_ioport_enable_pin(pin); +} + +/** + * \brief Enable multiple pins in a single IOPORT port. + * + * \param port IOPORT port to enable + * \param mask Mask of pins within the port to enable + */ +static inline void ioport_enable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_enable_port(port, mask); +} + +/** + * \brief Disable IOPORT pin, based on a pin created with \ref + * IOPORT_CREATE_PIN(). + * + * \param pin IOPORT pin to disable + */ +static inline void ioport_disable_pin(ioport_pin_t pin) +{ + arch_ioport_disable_pin(pin); +} + +/** + * \brief Disable multiple pins in a single IOPORT port. + * + * \param port IOPORT port to disable + * \param mask Pin mask of pins to disable + */ +static inline void ioport_disable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_disable_port(port, mask); +} + +/** + * \brief Set multiple pin modes in a single IOPORT port, such as pull-up, + * pull-down, etc. configuration. + * + * \param port IOPORT port to configure + * \param mask Pin mask of pins to configure + * \param mode Mode masks to configure for the specified pins (\ref + * ioport_modes) + */ +static inline void ioport_set_port_mode(ioport_port_t port, + ioport_port_mask_t mask, ioport_mode_t mode) +{ + arch_ioport_set_port_mode(port, mask, mode); +} + +/** + * \brief Set pin mode for one single IOPORT pin. + * + * \param pin IOPORT pin to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + */ +static inline void ioport_set_pin_mode(ioport_pin_t pin, ioport_mode_t mode) +{ + arch_ioport_set_pin_mode(pin, mode); +} + +/** + * \brief Reset multiple pin modes in a specified IOPORT port to defaults. + * + * \param port IOPORT port to configure + * \param mask Mask of pins whose mode configuration is to be reset + */ +static inline void ioport_reset_port_mode(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_set_port_mode(port, mask, 0); +} + +/** + * \brief Reset pin mode configuration for a single IOPORT pin + * + * \param pin IOPORT pin to configure + */ +static inline void ioport_reset_pin_mode(ioport_pin_t pin) +{ + arch_ioport_set_pin_mode(pin, 0); +} + +/** + * \brief Set I/O direction for a group of pins in a single IOPORT. + * + * \param port IOPORT port to configure + * \param mask Pin mask of pins to configure + * \param dir Direction to set for the specified pins (\ref ioport_direction) + */ +static inline void ioport_set_port_dir(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_direction dir) +{ + arch_ioport_set_port_dir(port, mask, dir); +} + +/** + * \brief Set direction for a single IOPORT pin. + * + * \param pin IOPORT pin to configure + * \param dir Direction to set for the specified pin (\ref ioport_direction) + */ +static inline void ioport_set_pin_dir(ioport_pin_t pin, + enum ioport_direction dir) +{ + arch_ioport_set_pin_dir(pin, dir); +} + +/** + * \brief Set an IOPORT pin to a specified logical value. + * + * \param pin IOPORT pin to configure + * \param level Logical value of the pin + */ +static inline void ioport_set_pin_level(ioport_pin_t pin, bool level) +{ + arch_ioport_set_pin_level(pin, level); +} + +/** + * \brief Set a group of IOPORT pins in a single port to a specified logical + * value. + * + * \param port IOPORT port to write to + * \param mask Pin mask of pins to modify + * \param level Level of the pins to be modified + */ +static inline void ioport_set_port_level(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_value level) +{ + arch_ioport_set_port_level(port, mask, level); +} + +/** + * \brief Get current value of an IOPORT pin, which has been configured as an + * input. + * + * \param pin IOPORT pin to read + * \return Current logical value of the specified pin + */ +static inline bool ioport_get_pin_level(ioport_pin_t pin) +{ + return arch_ioport_get_pin_level(pin); +} + +/** + * \brief Get current value of several IOPORT pins in a single port, which have + * been configured as an inputs. + * + * \param port IOPORT port to read + * \param mask Pin mask of pins to read + * \return Logical levels of the specified pins from the read port, returned as + * a mask. + */ +static inline ioport_port_mask_t ioport_get_port_level(ioport_pin_t port, + ioport_port_mask_t mask) +{ + return arch_ioport_get_port_level(port, mask); +} + +/** + * \brief Toggle the value of an IOPORT pin, which has previously configured as + * an output. + * + * \param pin IOPORT pin to toggle + */ +static inline void ioport_toggle_pin_level(ioport_pin_t pin) +{ + arch_ioport_toggle_pin_level(pin); +} + +/** + * \brief Toggle the values of several IOPORT pins located in a single port. + * + * \param port IOPORT port to modify + * \param mask Pin mask of pins to toggle + */ +static inline void ioport_toggle_port_level(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_toggle_port_level(port, mask); +} + +/** + * \brief Set the pin sense mode of a single IOPORT pin. + * + * \param pin IOPORT pin to configure + * \param pin_sense Edge to sense for the pin (\ref ioport_sense) + */ +static inline void ioport_set_pin_sense_mode(ioport_pin_t pin, + enum ioport_sense pin_sense) +{ + arch_ioport_set_pin_sense_mode(pin, pin_sense); +} + +/** + * \brief Set the pin sense mode of a multiple IOPORT pins on a single port. + * + * \param port IOPORT port to configure + * \param mask Bitmask if pins whose edge sense is to be configured + * \param pin_sense Edge to sense for the pins (\ref ioport_sense) + */ +static inline void ioport_set_port_sense_mode(ioport_port_t port, + ioport_port_mask_t mask, + enum ioport_sense pin_sense) +{ + arch_ioport_set_port_sense_mode(port, mask, pin_sense); +} + +/** + * \brief Convert a pin ID into a its port ID. + * + * \param pin IOPORT pin ID to convert + * \retval Port ID for the given pin ID + */ +static inline ioport_port_t ioport_pin_to_port_id(ioport_pin_t pin) +{ + return arch_ioport_pin_to_port_id(pin); +} + +/** + * \brief Convert a pin ID into a bitmask mask for the given pin on its port. + * + * \param pin IOPORT pin ID to convert + * \retval Bitmask with a bit set that corresponds to the given pin ID in its port + */ +static inline ioport_port_mask_t ioport_pin_to_mask(ioport_pin_t pin) +{ + return arch_ioport_pin_to_mask(pin); +} + +/** @} */ + +/** + * \page ioport_quickstart Quick start guide for the common IOPORT service + * + * This is the quick start guide for the \ref ioport_group, with + * step-by-step instructions on how to configure and use the service in a + * selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section ioport_quickstart_basic Basic use case + * In this use case we will configure one IO pin for button input and one for + * LED control. Then it will read the button state and output it on the LED. + * + * \section ioport_quickstart_basic_setup Setup steps + * + * \subsection ioport_quickstart_basic_setup_code Example code + * \code + #define MY_LED IOPORT_CREATE_PIN(PORTA, 5) + #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6) + + ioport_init(); + + ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); + ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); + ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); +\endcode + * + * \subsection ioport_quickstart_basic_setup_flow Workflow + * -# It's useful to give the GPIOs symbolic names and this can be done with + * the \ref IOPORT_CREATE_PIN macro. We define one for a LED and one for a + * button. + * - \code + #define MY_LED IOPORT_CREATE_PIN(PORTA, 5) + #define MY_BUTTON IOPORT_CREATE_PIN(PORTA, 6) +\endcode + * - \note The usefulness of the \ref IOPORT_CREATE_PIN macro and port names + * differ between architectures: + * - MEGA, MEGA_RF and XMEGA: Use \ref IOPORT_CREATE_PIN macro with port definitions + * PORTA, PORTB ... + * - UC3: Most convenient to pick up the device header file pin definition + * and us it directly. E.g.: AVR32_PIN_PB06 + * - SAM: Most convenient to pick up the device header file pin definition + * and us it directly. E.g.: PIO_PA5_IDX
+ * \ref IOPORT_CREATE_PIN can also be used with port definitions + * PIOA, PIOB ... + * -# Initialize the ioport service. This typically enables the IO module if + * needed. + * - \code ioport_init(); \endcode + * -# Set the LED GPIO as output: + * - \code ioport_set_pin_dir(MY_LED, IOPORT_DIR_OUTPUT); \endcode + * -# Set the button GPIO as input: + * - \code ioport_set_pin_dir(MY_BUTTON, IOPORT_DIR_INPUT); \endcode + * -# Enable pull-up for the button GPIO: + * - \code ioport_set_pin_mode(MY_BUTTON, IOPORT_MODE_PULLUP); \endcode + * + * \section ioport_quickstart_basic_usage Usage steps + * + * \subsection ioport_quickstart_basic_usage_code Example code + * \code + bool value; + + value = ioport_get_pin_level(MY_BUTTON); + ioport_set_pin_level(MY_LED, value); +\endcode + * + * \subsection ioport_quickstart_basic_usage_flow Workflow + * -# Define a boolean variable for state storage: + * - \code bool value; \endcode + * -# Read out the button level into variable value: + * - \code value = ioport_get_pin_level(MY_BUTTON); \endcode + * -# Set the LED to read out value from the button: + * - \code ioport_set_pin_level(MY_LED, value); \endcode + * + * \section ioport_quickstart_advanced Advanced use cases + * - \subpage ioport_quickstart_use_case_1 : Port access + */ + +/** + * \page ioport_quickstart_use_case_1 Advanced use case doing port access + * + * In this case we will read out the pins from one whole port and write the + * read value to another port. + * + * \section ioport_quickstart_use_case_1_setup Setup steps + * + * \subsection ioport_quickstart_use_case_1_setup_code Example code + * \code + #define IN_PORT IOPORT_PORTA + #define OUT_PORT IOPORT_PORTB + #define MASK 0x00000060 + + ioport_init(); + + ioport_set_port_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); + ioport_set_port_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); +\endcode + * + * \subsection ioport_quickstart_basic_setup_flow Workflow + * -# It's useful to give the ports symbolic names: + * - \code + #define IN_PORT IOPORT_PORTA + #define OUT_PORT IOPORT_PORTB +\endcode + * - \note The port names differ between architectures: + * - MEGA_RF, MEGA and XMEGA: There are predefined names for ports: IOPORT_PORTA, + * IOPORT_PORTB ... + * - UC3: Use the index value of the different IO blocks: 0, 1 ... + * - SAM: There are predefined names for ports: IOPORT_PIOA, IOPORT_PIOB + * ... + * -# Also useful to define a mask for the bits to work with: + * - \code #define MASK 0x00000060 \endcode + * -# Initialize the ioport service. This typically enables the IO module if + * needed. + * - \code ioport_init(); \endcode + * -# Set one of the ports as input: + * - \code ioport_set_pin_dir(IN_PORT, MASK, IOPORT_DIR_INPUT); \endcode + * -# Set the other port as output: + * - \code ioport_set_pin_dir(OUT_PORT, MASK, IOPORT_DIR_OUTPUT); \endcode + * + * \section ioport_quickstart_basic_usage Usage steps + * + * \subsection ioport_quickstart_basic_usage_code Example code + * \code + ioport_port_mask_t value; + + value = ioport_get_port_level(IN_PORT, MASK); + ioport_set_port_level(OUT_PORT, MASK, value); +\endcode + * + * \subsection ioport_quickstart_basic_usage_flow Workflow + * -# Define a variable for port date storage: + * - \code ioport_port_mask_t value; \endcode + * -# Read out from one port: + * - \code value = ioport_get_port_level(IN_PORT, MASK); \endcode + * -# Put the read data out on the other port: + * - \code ioport_set_port_level(OUT_PORT, MASK, value); \endcode + */ + +#ifdef __cplusplus +} +#endif + +#endif /* IOPORT_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h new file mode 100644 index 00000000..76b4d066 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h @@ -0,0 +1,373 @@ +/** + * \file + * + * \brief SAM architecture specific IOPORT service implementation header file. + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef IOPORT_SAM_H +#define IOPORT_SAM_H + +#include + +#define IOPORT_CREATE_PIN(port, pin) ((IOPORT_ ## port) * 32 + (pin)) +#define IOPORT_BASE_ADDRESS (uintptr_t)PIOA +#define IOPORT_PIO_OFFSET ((uintptr_t)PIOB - (uintptr_t)PIOA) + +#define IOPORT_PIOA 0 +#define IOPORT_PIOB 1 +#define IOPORT_PIOC 2 +#define IOPORT_PIOD 3 +#define IOPORT_PIOE 4 +#define IOPORT_PIOF 5 + +/** + * \weakgroup ioport_group + * \section ioport_modes IOPORT Modes + * + * For details on these please see the SAM Manual. + * + * @{ + */ + +/** \name IOPORT Mode bit definitions */ +/** @{ */ +#define IOPORT_MODE_MUX_MASK (0x7 << 0) /*!< MUX bits mask */ +#define IOPORT_MODE_MUX_BIT0 ( 1 << 0) /*!< MUX BIT0 mask */ + +#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70 +#define IOPORT_MODE_MUX_BIT1 ( 1 << 1) /*!< MUX BIT1 mask */ +#endif + +#define IOPORT_MODE_MUX_A ( 0 << 0) /*!< MUX function A */ +#define IOPORT_MODE_MUX_B ( 1 << 0) /*!< MUX function B */ + +#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70 +#define IOPORT_MODE_MUX_C ( 2 << 0) /*!< MUX function C */ +#define IOPORT_MODE_MUX_D ( 3 << 0) /*!< MUX function D */ +#endif + +#define IOPORT_MODE_PULLUP ( 1 << 3) /*!< Pull-up */ + +#if SAM3N || SAM3S || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70 +#define IOPORT_MODE_PULLDOWN ( 1 << 4) /*!< Pull-down */ +#endif + +#define IOPORT_MODE_OPEN_DRAIN ( 1 << 5) /*!< Open drain */ + +#define IOPORT_MODE_GLITCH_FILTER ( 1 << 6) /*!< Glitch filter */ +#define IOPORT_MODE_DEBOUNCE ( 1 << 7) /*!< Input debounce */ +/** @} */ + +/** @} */ + +typedef uint32_t ioport_mode_t; +typedef uint32_t ioport_pin_t; +typedef uint32_t ioport_port_t; +typedef uint32_t ioport_port_mask_t; + +__always_inline static ioport_port_t arch_ioport_pin_to_port_id(ioport_pin_t pin) +{ + return pin >> 5; +} + +__always_inline static Pio *arch_ioport_port_to_base(ioport_port_t port) +{ +#if (SAM4C || SAM4CM || SAM4CP) + if (port == IOPORT_PIOC) { + return (Pio *)(uintptr_t)PIOC; +# ifdef ID_PIOD + } else if (port == IOPORT_PIOD) { + return (Pio *)(uintptr_t)PIOD; +# endif + } else { + return (Pio *)((uintptr_t)IOPORT_BASE_ADDRESS + + (IOPORT_PIO_OFFSET * port)); + } +#else + return (Pio *)((uintptr_t)IOPORT_BASE_ADDRESS + + (IOPORT_PIO_OFFSET * port)); +#endif +} + +__always_inline static Pio *arch_ioport_pin_to_base(ioport_pin_t pin) +{ + return arch_ioport_port_to_base(arch_ioport_pin_to_port_id(pin)); +} + +__always_inline static ioport_port_mask_t arch_ioport_pin_to_mask(ioport_pin_t pin) +{ + return 1U << (pin & 0x1F); +} + +__always_inline static void arch_ioport_init(void) +{ +#ifdef ID_PIOA + sysclk_enable_peripheral_clock(ID_PIOA); +#endif +#ifdef ID_PIOB + sysclk_enable_peripheral_clock(ID_PIOB); +#endif +#ifdef ID_PIOC + sysclk_enable_peripheral_clock(ID_PIOC); +#endif +#ifdef ID_PIOD + sysclk_enable_peripheral_clock(ID_PIOD); +#endif +#ifdef ID_PIOE + sysclk_enable_peripheral_clock(ID_PIOE); +#endif +#ifdef ID_PIOF + sysclk_enable_peripheral_clock(ID_PIOF); +#endif +} + +__always_inline static void arch_ioport_enable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_port_to_base(port)->PIO_PER = mask; +} + +__always_inline static void arch_ioport_disable_port(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_port_to_base(port)->PIO_PDR = mask; +} + +__always_inline static void arch_ioport_enable_pin(ioport_pin_t pin) +{ + arch_ioport_enable_port(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin)); +} + +__always_inline static void arch_ioport_disable_pin(ioport_pin_t pin) +{ + arch_ioport_disable_port(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin)); +} + +__always_inline static void arch_ioport_set_port_mode(ioport_port_t port, + ioport_port_mask_t mask, ioport_mode_t mode) +{ + Pio *base = arch_ioport_port_to_base(port); + + if (mode & IOPORT_MODE_PULLUP) { + base->PIO_PUER = mask; + } else { + base->PIO_PUDR = mask; + } + +#if defined(IOPORT_MODE_PULLDOWN) + if (mode & IOPORT_MODE_PULLDOWN) { + base->PIO_PPDER = mask; + } else { + base->PIO_PPDDR = mask; + } +#endif + + if (mode & IOPORT_MODE_OPEN_DRAIN) { + base->PIO_MDER = mask; + } else { + base->PIO_MDDR = mask; + } + + if (mode & (IOPORT_MODE_GLITCH_FILTER | IOPORT_MODE_DEBOUNCE)) { + base->PIO_IFER = mask; + } else { + base->PIO_IFDR = mask; + } + + if (mode & IOPORT_MODE_DEBOUNCE) { +#if SAM3U || SAM3XA + base->PIO_DIFSR = mask; +#else + base->PIO_IFSCER = mask; +#endif + } else { +#if SAM3U || SAM3XA + base->PIO_SCIFSR = mask; +#else + base->PIO_IFSCDR = mask; +#endif + } + +#if !defined(IOPORT_MODE_MUX_BIT1) + if (mode & IOPORT_MODE_MUX_BIT0) { + base->PIO_ABSR |= mask; + } else { + base->PIO_ABSR &= ~mask; + } +#else + if (mode & IOPORT_MODE_MUX_BIT0) { + base->PIO_ABCDSR[0] |= mask; + } else { + base->PIO_ABCDSR[0] &= ~mask; + } + + if (mode & IOPORT_MODE_MUX_BIT1) { + base->PIO_ABCDSR[1] |= mask; + } else { + base->PIO_ABCDSR[1] &= ~mask; + } +#endif +} + +__always_inline static void arch_ioport_set_pin_mode(ioport_pin_t pin, + ioport_mode_t mode) +{ + arch_ioport_set_port_mode(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin), mode); +} + +__always_inline static void arch_ioport_set_port_dir(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_direction group_direction) +{ + Pio *base = arch_ioport_port_to_base(port); + + if (group_direction == IOPORT_DIR_OUTPUT) { + base->PIO_OER = mask; + } else if (group_direction == IOPORT_DIR_INPUT) { + base->PIO_ODR = mask; + } + + base->PIO_OWER = mask; +} + +__always_inline static void arch_ioport_set_pin_dir(ioport_pin_t pin, + enum ioport_direction dir) +{ + Pio *base = arch_ioport_pin_to_base(pin); + + if (dir == IOPORT_DIR_OUTPUT) { + base->PIO_OER = arch_ioport_pin_to_mask(pin); + } else if (dir == IOPORT_DIR_INPUT) { + base->PIO_ODR = arch_ioport_pin_to_mask(pin); + } + + base->PIO_OWER = arch_ioport_pin_to_mask(pin); +} + +__always_inline static void arch_ioport_set_pin_level(ioport_pin_t pin, + bool level) +{ + Pio *base = arch_ioport_pin_to_base(pin); + + if (level) { + base->PIO_SODR = arch_ioport_pin_to_mask(pin); + } else { + base->PIO_CODR = arch_ioport_pin_to_mask(pin); + } +} + +__always_inline static void arch_ioport_set_port_level(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_value level) +{ + Pio *base = arch_ioport_port_to_base(port); + + if (level){ + base->PIO_SODR = mask; + } else { + base->PIO_CODR = mask; + } +} + +__always_inline static bool arch_ioport_get_pin_level(ioport_pin_t pin) +{ + return arch_ioport_pin_to_base(pin)->PIO_PDSR & arch_ioport_pin_to_mask(pin); +} + +__always_inline static ioport_port_mask_t arch_ioport_get_port_level( + ioport_port_t port, ioport_port_mask_t mask) +{ + return arch_ioport_port_to_base(port)->PIO_PDSR & mask; +} + +__always_inline static void arch_ioport_toggle_pin_level(ioport_pin_t pin) +{ + Pio *port = arch_ioport_pin_to_base(pin); + ioport_port_mask_t mask = arch_ioport_pin_to_mask(pin); + + if (port->PIO_PDSR & arch_ioport_pin_to_mask(pin)) { + port->PIO_CODR = mask; + } else { + port->PIO_SODR = mask; + } +} + +__always_inline static void arch_ioport_toggle_port_level(ioport_port_t port, + ioport_port_mask_t mask) +{ + arch_ioport_port_to_base(port)->PIO_ODSR ^= mask; +} + +__always_inline static void arch_ioport_set_port_sense_mode(ioport_port_t port, + ioport_port_mask_t mask, enum ioport_sense pin_sense) +{ + Pio *base = arch_ioport_port_to_base(port); + /* AIMMR ELSR FRLHSR + * 0 X X IOPORT_SENSE_BOTHEDGES (Default) + * 1 0 0 IOPORT_SENSE_FALLING + * 1 0 1 IOPORT_SENSE_RISING + * 1 1 0 IOPORT_SENSE_LEVEL_LOW + * 1 1 1 IOPORT_SENSE_LEVEL_HIGH + */ + switch(pin_sense) { + case IOPORT_SENSE_LEVEL_LOW: + base->PIO_LSR = mask; + base->PIO_FELLSR = mask; + break; + case IOPORT_SENSE_LEVEL_HIGH: + base->PIO_LSR = mask; + base->PIO_REHLSR = mask; + break; + case IOPORT_SENSE_FALLING: + base->PIO_ESR = mask; + base->PIO_FELLSR = mask; + break; + case IOPORT_SENSE_RISING: + base->PIO_ESR = mask; + base->PIO_REHLSR = mask; + break; + default: + base->PIO_AIMDR = mask; + return; + } + base->PIO_AIMER = mask; +} + +__always_inline static void arch_ioport_set_pin_sense_mode(ioport_pin_t pin, + enum ioport_sense pin_sense) +{ + arch_ioport_set_port_sense_mode(arch_ioport_pin_to_port_id(pin), + arch_ioport_pin_to_mask(pin), pin_sense); +} + +#endif /* IOPORT_SAM_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h new file mode 100644 index 00000000..fa3fd71e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h @@ -0,0 +1,679 @@ +/** + * \file + * + * \brief Uart Serial for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _UART_SERIAL_H_ +#define _UART_SERIAL_H_ + +#include "compiler.h" +#include "sysclk.h" +#if (SAMG55) +#include "flexcom.h" +#endif +#if ((!SAM4L) && (!SAMG55)) +#include "uart.h" +#endif +#include "usart.h" + +/** + * \name Serial Management Configuration + */ +//! @{ +#include "conf_uart_serial.h" + +//! @} + +/** Input parameters when initializing RS232 and similar modes. */ +typedef struct uart_rs232_options { + /** Set baud rate of the USART (unused in slave modes). */ + uint32_t baudrate; + + /** Number of bits to transmit as a character (5-bit to 9-bit). */ + uint32_t charlength; + + /** + * Parity type: USART_PMODE_DISABLED_gc, USART_PMODE_EVEN_gc, + * USART_PMODE_ODD_gc. + */ + uint32_t paritytype; + + /** 1, 1.5 or 2 stop bits. */ + uint32_t stopbits; + +} usart_rs232_options_t; + +typedef usart_rs232_options_t usart_serial_options_t; + +typedef Usart *usart_if; + +/** + * \brief Initializes the Usart in master mode. + * + * \param p_usart Base address of the USART instance. + * \param opt Options needed to set up RS232 communication (see + * \ref usart_options_t). + */ +static inline void usart_serial_init(usart_if p_usart, + usart_serial_options_t *opt) +{ +#if ((!SAM4L) && (!SAMG55)) + sam_uart_opt_t uart_settings; + uart_settings.ul_mck = sysclk_get_peripheral_hz(); + uart_settings.ul_baudrate = opt->baudrate; + uart_settings.ul_mode = opt->paritytype; +#endif + + sam_usart_opt_t usart_settings; + usart_settings.baudrate = opt->baudrate; + usart_settings.char_length = opt->charlength; + usart_settings.parity_type = opt->paritytype; + usart_settings.stop_bits= opt->stopbits; + usart_settings.channel_mode= US_MR_CHMODE_NORMAL; + +#ifdef UART + if (UART == (Uart*)p_usart) { + sysclk_enable_peripheral_clock(ID_UART); + /* Configure UART */ + uart_init((Uart*)p_usart, &uart_settings); + } +#else +# ifdef UART0 + if (UART0 == (Uart*)p_usart) { + sysclk_enable_peripheral_clock(ID_UART0); + /* Configure UART */ + uart_init((Uart*)p_usart, &uart_settings); + } +# endif +# ifdef UART1 + if (UART1 == (Uart*)p_usart) { + sysclk_enable_peripheral_clock(ID_UART1); + /* Configure UART */ + uart_init((Uart*)p_usart, &uart_settings); + } +# endif +# ifdef UART2 + if (UART2 == (Uart*)p_usart) { + sysclk_enable_peripheral_clock(ID_UART2); + /* Configure UART */ + uart_init((Uart*)p_usart, &uart_settings); + } +# endif +# ifdef UART3 + if (UART3 == (Uart*)p_usart) { + sysclk_enable_peripheral_clock(ID_UART3); + /* Configure UART */ + uart_init((Uart*)p_usart, &uart_settings); + } +# endif +# ifdef UART4 + if (UART4 == (Uart*)p_usart) { + sysclk_enable_peripheral_clock(ID_UART4); + /* Configure UART */ + uart_init((Uart*)p_usart, &uart_settings); + } +# endif +#endif /* ifdef UART */ + + +#ifdef USART + if (USART == p_usart) { +#if (!SAM4L) + sysclk_enable_peripheral_clock(ID_USART); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +#else +# ifdef USART0 + if (USART0 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM0); + flexcom_set_opmode(FLEXCOM0, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART0); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART1 + if (USART1 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM1); + flexcom_set_opmode(FLEXCOM1, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART1); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART2 + if (USART2 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM2); + flexcom_set_opmode(FLEXCOM2, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART2); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART3 + if (USART3 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM3); + flexcom_set_opmode(FLEXCOM3, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART3); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART4 + if (USART4 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM4); + flexcom_set_opmode(FLEXCOM4, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART4); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART5 + if (USART5 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM5); + flexcom_set_opmode(FLEXCOM5, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART5); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART6 + if (USART6 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM6); + flexcom_set_opmode(FLEXCOM6, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART6); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif +# ifdef USART7 + if (USART7 == p_usart) { +#if (!SAM4L) +#if (SAMG55) + flexcom_enable(FLEXCOM7); + flexcom_set_opmode(FLEXCOM7, FLEXCOM_USART); +#else + sysclk_enable_peripheral_clock(ID_USART7); +#endif + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_hz()); +#endif +#if (SAM4L) + sysclk_enable_peripheral_clock(p_usart); + /* Configure USART */ + usart_init_rs232(p_usart, &usart_settings, + sysclk_get_peripheral_bus_hz(p_usart)); +#endif + /* Enable the receiver and transmitter. */ + usart_enable_tx(p_usart); + usart_enable_rx(p_usart); + } +# endif + +#endif /* ifdef USART */ + +} + +/** + * \brief Sends a character with the USART. + * + * \param p_usart Base address of the USART instance. + * \param c Character to write. + * + * \return Status. + * \retval 1 The character was written. + * \retval 0 The function timed out before the USART transmitter became + * ready to send. + */ +static inline int usart_serial_putchar(usart_if p_usart, const uint8_t c) +{ +#ifdef UART + if (UART == (Uart*)p_usart) { + while (uart_write((Uart*)p_usart, c)!=0); + return 1; + } +#else +# ifdef UART0 + if (UART0 == (Uart*)p_usart) { + while (uart_write((Uart*)p_usart, c)!=0); + return 1; + } +# endif +# ifdef UART1 + if (UART1 == (Uart*)p_usart) { + while (uart_write((Uart*)p_usart, c)!=0); + return 1; + } +# endif +# ifdef UART2 + if (UART2 == (Uart*)p_usart) { + while (uart_write((Uart*)p_usart, c)!=0); + return 1; + } +# endif +# ifdef UART3 + if (UART3 == (Uart*)p_usart) { + while (uart_write((Uart*)p_usart, c)!=0); + return 1; + } +# endif +#endif /* ifdef UART */ + + +#ifdef USART + if (USART == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +#else +# ifdef USART0 + if (USART0 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART1 + if (USART1 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART2 + if (USART2 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART3 + if (USART3 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART4 + if (USART4 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART5 + if (USART5 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART6 + if (USART6 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +# ifdef USART7 + if (USART7 == p_usart) { + while (usart_write(p_usart, c)!=0); + return 1; + } +# endif +#endif /* ifdef USART */ + + return 0; +} +/** + * \brief Waits until a character is received, and returns it. + * + * \param p_usart Base address of the USART instance. + * \param data Data to read + * + */ +static inline void usart_serial_getchar(usart_if p_usart, uint8_t *data) +{ + uint32_t val = 0; + + /* Avoid Cppcheck Warning */ + UNUSED(val); + +#ifdef UART + if (UART == (Uart*)p_usart) { + while (uart_read((Uart*)p_usart, data)); + } +#else +# ifdef UART0 + if (UART0 == (Uart*)p_usart) { + while (uart_read((Uart*)p_usart, data)); + } +# endif +# ifdef UART1 + if (UART1 == (Uart*)p_usart) { + while (uart_read((Uart*)p_usart, data)); + } +# endif +# ifdef UART2 + if (UART2 == (Uart*)p_usart) { + while (uart_read((Uart*)p_usart, data)); + } +# endif +# ifdef UART3 + if (UART3 == (Uart*)p_usart) { + while (uart_read((Uart*)p_usart, data)); + } +# endif +#endif /* ifdef UART */ + + +#ifdef USART + if (USART == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +#else +# ifdef USART0 + if (USART0 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART1 + if (USART1 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART2 + if (USART2 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART3 + if (USART3 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART4 + if (USART4 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART5 + if (USART5 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART6 + if (USART6 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +# ifdef USART7 + if (USART7 == p_usart) { + while (usart_read(p_usart, &val)); + *data = (uint8_t)(val & 0xFF); + } +# endif +#endif /* ifdef USART */ + +} + +/** + * \brief Check if Received data is ready. + * + * \param p_usart Base address of the USART instance. + * + * \retval 1 One data has been received. + * \retval 0 No data has been received. + */ +static inline uint32_t usart_serial_is_rx_ready(usart_if p_usart) +{ +#ifdef UART + if (UART == (Uart*)p_usart) { + return uart_is_rx_ready((Uart*)p_usart); + } +#else +# ifdef UART0 + if (UART0 == (Uart*)p_usart) { + return uart_is_rx_ready((Uart*)p_usart); + } +# endif +# ifdef UART1 + if (UART1 == (Uart*)p_usart) { + return uart_is_rx_ready((Uart*)p_usart); + } +# endif +# ifdef UART2 + if (UART2 == (Uart*)p_usart) { + return uart_is_rx_ready((Uart*)p_usart); + } +# endif +# ifdef UART3 + if (UART3 == (Uart*)p_usart) { + return uart_is_rx_ready((Uart*)p_usart); + } +# endif +#endif /* ifdef UART */ + + +#ifdef USART + if (USART == p_usart) { + return usart_is_rx_ready(p_usart); + } +#else +# ifdef USART0 + if (USART0 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART1 + if (USART1 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART2 + if (USART2 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART3 + if (USART3 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART4 + if (USART4 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART5 + if (USART5 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART6 + if (USART6 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +# ifdef USART7 + if (USART7 == p_usart) { + return usart_is_rx_ready(p_usart); + } +# endif +#endif /* ifdef USART */ + + return 0; +} + +/** + * \brief Send a sequence of bytes to a USART device + * + * \param usart Base address of the USART instance. + * \param data data buffer to write + * \param len Length of data + * + */ +status_code_t usart_serial_write_packet(usart_if usart, const uint8_t *data, + size_t len); + +/** + * \brief Receive a sequence of bytes to a USART device + * + * \param usart Base address of the USART instance. + * \param data data buffer to write + * \param len Length of data + * + */ +status_code_t usart_serial_read_packet(usart_if usart, uint8_t *data, + size_t len); + +#endif /* _UART_SERIAL_H_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h new file mode 100644 index 00000000..21bb1552 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h @@ -0,0 +1,269 @@ +/** + * \file + * + * \brief Serial Mode management + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef SERIAL_H_INCLUDED +#define SERIAL_H_INCLUDED + +#include +#include "status_codes.h" + +/** + * \typedef usart_if + * + * This type can be used independently to refer to USART module for the + * architecture used. It refers to the correct type definition for the + * architecture, ie. USART_t* for XMEGA or avr32_usart_t* for UC3. + */ + +#if XMEGA +# include "xmega_usart/usart_serial.h" +#elif MEGA_RF +# include "megarf_usart/usart_serial.h" +#elif UC3 +# include "uc3_usart/usart_serial.h" +#elif (SAMB) +#include "samb_uart/uart_serial.h" +#elif (SAM0) +#include "sam0_usart/usart_serial.h" +#elif SAM +# include "sam_uart/uart_serial.h" +#else +# error Unsupported chip type +#endif + +/** + * + * \defgroup serial_group Serial Interface (Serial) + * + * See \ref serial_quickstart. + * + * This is the common API for serial interface. Additional features are available + * in the documentation of the specific modules. + * + * \section serial_group_platform Platform Dependencies + * + * The serial API is partially chip- or platform-specific. While all + * platforms provide mostly the same functionality, there are some + * variations around how different bus types and clock tree structures + * are handled. + * + * The following functions are available on all platforms, but there may + * be variations in the function signature (i.e. parameters) and + * behaviour. These functions are typically called by platform-specific + * parts of drivers, and applications that aren't intended to be + * portable: + * - usart_serial_init() + * - usart_serial_putchar() + * - usart_serial_getchar() + * - usart_serial_write_packet() + * - usart_serial_read_packet() + * + * + * @{ + */ + +//! @} + +/** + * \page serial_quickstart Quick start guide for Serial Interface service + * + * This is the quick start guide for the \ref serial_group "Serial Interface module", with + * step-by-step instructions on how to configure and use the serial in a + * selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section serial_use_cases Serial use cases + * - \ref serial_basic_use_case + * - \subpage serial_use_case_1 + * + * \section serial_basic_use_case Basic use case - transmit a character + * In this use case, the serial module is configured for: + * - Using USARTD0 + * - Baudrate: 9600 + * - Character length: 8 bit + * - Parity mode: Disabled + * - Stop bit: None + * - RS232 mode + * + * The use case waits for a received character on the configured USART and + * echoes the character back to the same USART. + * + * \section serial_basic_use_case_setup Setup steps + * + * \subsection serial_basic_use_case_setup_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (sysclk)" + * + * \subsection serial_basic_use_case_setup_code Example code + * The following configuration must be added to the project (typically to a + * conf_uart_serial.h file, but it can also be added to your main application file.) + * + * \note The following takes SAM3X configuration for example, other devices have similar + * configuration, but their parameters may be different, refer to corresponding header files. + * + * \code + #define USART_SERIAL &USARTD0 + #define USART_SERIAL_BAUDRATE 9600 + #define USART_SERIAL_CHAR_LENGTH US_MR_CHRL_8_BIT + #define USART_SERIAL_PARITY US_MR_PAR_NO + #define USART_SERIAL_STOP_BIT false +\endcode + * + * A variable for the received byte must be added: + * \code uint8_t received_byte; \endcode + * + * Add to application initialization: + * \code + sysclk_init(); + + static usart_serial_options_t usart_options = { + .baudrate = USART_SERIAL_BAUDRATE, + .charlength = USART_SERIAL_CHAR_LENGTH, + .paritytype = USART_SERIAL_PARITY, + .stopbits = USART_SERIAL_STOP_BIT + }; + + usart_serial_init(USART_SERIAL, &usart_options); +\endcode + * + * \subsection serial_basic_use_case_setup_flow Workflow + * -# Initialize system clock: + * - \code sysclk_init(); \endcode + * -# Create serial USART options struct: + * - \code + static usart_serial_options_t usart_options = { + .baudrate = USART_SERIAL_BAUDRATE, + .charlength = USART_SERIAL_CHAR_LENGTH, + .paritytype = USART_SERIAL_PARITY, + .stopbits = USART_SERIAL_STOP_BIT + }; +\endcode + * -# Initialize the serial service: + * - \code usart_serial_init(USART_SERIAL, &usart_options);\endcode + * + * \section serial_basic_use_case_usage Usage steps + * + * \subsection serial_basic_use_case_usage_code Example code + * Add to application C-file: + * \code + usart_serial_getchar(USART_SERIAL, &received_byte); + usart_serial_putchar(USART_SERIAL, received_byte); +\endcode + * + * \subsection serial_basic_use_case_usage_flow Workflow + * -# Wait for reception of a character: + * - \code usart_serial_getchar(USART_SERIAL, &received_byte); \endcode + * -# Echo the character back: + * - \code usart_serial_putchar(USART_SERIAL, received_byte); \endcode + */ + +/** + * \page serial_use_case_1 Advanced use case - Send a packet of serial data + * + * In this use case, the USART module is configured for: + * - Using USARTD0 + * - Baudrate: 9600 + * - Character length: 8 bit + * - Parity mode: Disabled + * - Stop bit: None + * - RS232 mode + * + * The use case sends a string of text through the USART. + * + * \section serial_use_case_1_setup Setup steps + * + * \subsection serial_use_case_1_setup_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (sysclk)" + * + * \subsection serial_use_case_1_setup_code Example code + * The following configuration must be added to the project (typically to a + * conf_uart_serial.h file, but it can also be added to your main application file.): + * + * \note The following takes SAM3X configuration for example, other devices have similar + * configuration, but their parameters may be different, refer to corresponding header files. + * + * \code + #define USART_SERIAL &USARTD0 + #define USART_SERIAL_BAUDRATE 9600 + #define USART_SERIAL_CHAR_LENGTH US_MR_CHRL_8_BIT + #define USART_SERIAL_PARITY US_MR_PAR_NO + #define USART_SERIAL_STOP_BIT false +\endcode + * + * Add to application initialization: + * \code + sysclk_init(); + + static usart_serial_options_t usart_options = { + .baudrate = USART_SERIAL_BAUDRATE, + .charlength = USART_SERIAL_CHAR_LENGTH, + .paritytype = USART_SERIAL_PARITY, + .stopbits = USART_SERIAL_STOP_BIT + }; + + usart_serial_init(USART_SERIAL, &usart_options); +\endcode + * + * \subsection serial_use_case_1_setup_flow Workflow + * -# Initialize system clock: + * - \code sysclk_init(); \endcode + * -# Create USART options struct: + * - \code + static usart_serial_options_t usart_options = { + .baudrate = USART_SERIAL_BAUDRATE, + .charlength = USART_SERIAL_CHAR_LENGTH, + .paritytype = USART_SERIAL_PARITY, + .stopbits = USART_SERIAL_STOP_BIT + }; +\endcode + * -# Initialize in RS232 mode: + * - \code usart_serial_init(USART_SERIAL_EXAMPLE, &usart_options); \endcode + * + * \section serial_use_case_1_usage Usage steps + * + * \subsection serial_use_case_1_usage_code Example code + * Add to, e.g., main loop in application C-file: + * \code + usart_serial_write_packet(USART_SERIAL, "Test String", strlen("Test String")); +\endcode + * + * \subsection serial_use_case_1_usage_flow Workflow + * -# Write a string of text to the USART: + * - \code usart_serial_write_packet(USART_SERIAL, "Test String", strlen("Test String")); \endcode + */ + +#endif /* SERIAL_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c new file mode 100644 index 00000000..df022e43 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c @@ -0,0 +1,77 @@ +/** + * + * \file + * + * \brief USART Serial driver functions. + * + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#include "serial.h" + +/** + * \brief Send a sequence of bytes to USART device + * + * \param usart Base address of the USART instance. + * \param data Data buffer to read + * \param len Length of data + * + */ +status_code_t usart_serial_write_packet(usart_if usart, const uint8_t *data, + size_t len) +{ + while (len) { + usart_serial_putchar(usart, *data); + len--; + data++; + } + return STATUS_OK; +} + + +/** + * \brief Receive a sequence of bytes from USART device + * + * \param usart Base address of the USART instance. + * \param data Data buffer to write + * \param len Length of data + * + */ +status_code_t usart_serial_read_packet(usart_if usart, uint8_t *data, + size_t len) +{ + while (len) { + usart_serial_getchar(usart, data); + len--; + data++; + } + return STATUS_OK; +} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c new file mode 100644 index 00000000..f64fe1e5 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c @@ -0,0 +1,44 @@ +/** + * \file + * + * \brief SAM3/SAM4 Sleep manager implementation. + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include +#include + +#if defined(CONFIG_SLEEPMGR_ENABLE) || defined(__DOXYGEN__) + +uint8_t sleepmgr_locks[SLEEPMGR_NR_OF_MODES]; + +#endif /* CONFIG_SLEEPMGR_ENABLE */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h new file mode 100644 index 00000000..e32f0ed8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h @@ -0,0 +1,111 @@ +/** + * \file + * + * \brief SAM3/SAM4 Sleep manager implementation. + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef SAM_SLEEPMGR_INCLUDED +#define SAM_SLEEPMGR_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + +/** + * \weakgroup sleepmgr_group + * @{ + */ +enum sleepmgr_mode { + //! Active mode. + SLEEPMGR_ACTIVE = 0, + /*! WFE sleep mode. + * Potential Wake Up sources: + * fast startup events (USB, RTC, RTT, WKUPs), + * interrupt, and events. */ + SLEEPMGR_SLEEP_WFE, + /*! WFI sleep mode. + * Potential Wake Up sources: fast startup events and interrupt. */ + SLEEPMGR_SLEEP_WFI, + /*! Wait mode, wakeup fast (in 3ms). + * XTAL is not disabled when sleep. + * Potential Wake Up sources: fast startup events */ + SLEEPMGR_WAIT_FAST, + /*! Wait mode. + * Potential Wake Up sources: fast startup events */ + SLEEPMGR_WAIT, +#if (!(SAMG51 || SAMG53 || SAMG54)) + //! Backup mode. Potential Wake Up sources: WKUPs, SM, RTT, RTC. + SLEEPMGR_BACKUP, +#endif + SLEEPMGR_NR_OF_MODES, +}; + +/** + * \internal + * \name Internal arrays + * @{ + */ +#if defined(CONFIG_SLEEPMGR_ENABLE) || defined(__DOXYGEN__) +//! Sleep mode lock counters +extern uint8_t sleepmgr_locks[]; +#endif /* CONFIG_SLEEPMGR_ENABLE */ +//! @} + + +static inline void sleepmgr_sleep(const enum sleepmgr_mode sleep_mode) +{ + Assert(sleep_mode != SLEEPMGR_ACTIVE); +#ifdef CONFIG_SLEEPMGR_ENABLE + cpu_irq_disable(); + + // Atomically enable the global interrupts and enter the sleep mode. + pmc_sleep(sleep_mode); +#else + UNUSED(sleep_mode); + cpu_irq_enable(); +#endif /* CONFIG_SLEEPMGR_ENABLE */ + +} + +//! @} + +#ifdef __cplusplus +} +#endif + +#endif /* SAM_SLEEPMGR_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h new file mode 100644 index 00000000..054be7f8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h @@ -0,0 +1,263 @@ +/** + * \file + * + * \brief Sleep manager + * + * Copyright (c) 2010-2020 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef SLEEPMGR_H +#define SLEEPMGR_H + +#include +#include + +#if (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAMS70 || SAME70) +# include "sam/sleepmgr.h" +#elif XMEGA +# include "xmega/sleepmgr.h" +#elif UC3 +# include "uc3/sleepmgr.h" +#elif SAM4L +# include "sam4l/sleepmgr.h" +#elif MEGA +# include "mega/sleepmgr.h" +#elif (SAMD20 || SAMD21 || SAMR21 || SAMD11 || SAMDA1) +# include "samd/sleepmgr.h" +#elif (SAML21 || SAML22 || SAMR30 || SAMR34 || SAMR35 || WLR089) +# include "saml/sleepmgr.h" +#elif (SAMC21) +# include "samc/sleepmgr.h" +#else +# error Unsupported device. +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup sleepmgr_group Sleep manager + * + * The sleep manager is a service for ensuring that the device is not put to + * sleep in deeper sleep modes than the system (e.g., peripheral drivers, + * services or the application) allows at any given time. + * + * It is based on the use of lock counting for the individual sleep modes, and + * will put the device to sleep in the shallowest sleep mode that has a non-zero + * lock count. The drivers/services/application can change these counts by use + * of \ref sleepmgr_lock_mode and \ref sleepmgr_unlock_mode. + * Refer to \ref sleepmgr_mode for a list of the sleep modes available for + * locking, and the device datasheet for information on their effect. + * + * The application must supply the file \ref conf_sleepmgr.h. + * + * For the sleep manager to be enabled, the symbol \ref CONFIG_SLEEPMGR_ENABLE + * must be defined, e.g., in \ref conf_sleepmgr.h. If this symbol is not + * defined, the functions are replaced with dummy functions and no RAM is used. + * + * @{ + */ + +/** + * \def CONFIG_SLEEPMGR_ENABLE + * \brief Configuration symbol for enabling the sleep manager + * + * If this symbol is not defined, the functions of this service are replaced + * with dummy functions. This is useful for reducing code size and execution + * time if the sleep manager is not needed in the application. + * + * This symbol may be defined in \ref conf_sleepmgr.h. + */ +#if defined(__DOXYGEN__) && !defined(CONFIG_SLEEPMGR_ENABLE) +# define CONFIG_SLEEPMGR_ENABLE +#endif + +/** + * \enum sleepmgr_mode + * \brief Sleep mode locks + * + * Identifiers for the different sleep mode locks. + */ + +/** + * \brief Initialize the lock counts + * + * Sets all lock counts to 0, except the very last one, which is set to 1. This + * is done to simplify the algorithm for finding the deepest allowable sleep + * mode in \ref sleepmgr_enter_sleep. + */ +static inline void sleepmgr_init(void) +{ +#ifdef CONFIG_SLEEPMGR_ENABLE + uint8_t i; + + for (i = 0; i < SLEEPMGR_NR_OF_MODES - 1; i++) { + sleepmgr_locks[i] = 0; + } + sleepmgr_locks[SLEEPMGR_NR_OF_MODES - 1] = 1; +#endif /* CONFIG_SLEEPMGR_ENABLE */ +} + +/** + * \brief Increase lock count for a sleep mode + * + * Increases the lock count for \a mode to ensure that the sleep manager does + * not put the device to sleep in the deeper sleep modes. + * + * \param mode Sleep mode to lock. + */ +static inline void sleepmgr_lock_mode(enum sleepmgr_mode mode) +{ +#ifdef CONFIG_SLEEPMGR_ENABLE + irqflags_t flags; + + if(sleepmgr_locks[mode] >= 0xff) { + while (true) { + // Warning: maximum value of sleepmgr_locks buffer is no more than 255. + // Check APP or change the data type to uint16_t. + } + } + + // Enter a critical section + flags = cpu_irq_save(); + + ++sleepmgr_locks[mode]; + + // Leave the critical section + cpu_irq_restore(flags); +#else + UNUSED(mode); +#endif /* CONFIG_SLEEPMGR_ENABLE */ +} + +/** + * \brief Decrease lock count for a sleep mode + * + * Decreases the lock count for \a mode. If the lock count reaches 0, the sleep + * manager can put the device to sleep in the deeper sleep modes. + * + * \param mode Sleep mode to unlock. + */ +static inline void sleepmgr_unlock_mode(enum sleepmgr_mode mode) +{ +#ifdef CONFIG_SLEEPMGR_ENABLE + irqflags_t flags; + + if(sleepmgr_locks[mode] == 0) { + while (true) { + // Warning: minimum value of sleepmgr_locks buffer is no less than 0. + // Check APP. + } + } + + // Enter a critical section + flags = cpu_irq_save(); + + --sleepmgr_locks[mode]; + + // Leave the critical section + cpu_irq_restore(flags); +#else + UNUSED(mode); +#endif /* CONFIG_SLEEPMGR_ENABLE */ +} + + /** + * \brief Retrieves the deepest allowable sleep mode + * + * Searches through the sleep mode lock counts, starting at the shallowest sleep + * mode, until the first non-zero lock count is found. The deepest allowable + * sleep mode is then returned. + */ +static inline enum sleepmgr_mode sleepmgr_get_sleep_mode(void) +{ + enum sleepmgr_mode sleep_mode = SLEEPMGR_ACTIVE; + +#ifdef CONFIG_SLEEPMGR_ENABLE + uint8_t *lock_ptr = sleepmgr_locks; + + // Find first non-zero lock count, starting with the shallowest modes. + while (!(*lock_ptr)) { + lock_ptr++; + sleep_mode = (enum sleepmgr_mode)(sleep_mode + 1); + } + + // Catch the case where one too many sleepmgr_unlock_mode() call has been + // performed on the deepest sleep mode. + Assert((uintptr_t)(lock_ptr - sleepmgr_locks) < SLEEPMGR_NR_OF_MODES); + +#endif /* CONFIG_SLEEPMGR_ENABLE */ + + return sleep_mode; +} + +/** + * \fn sleepmgr_enter_sleep + * \brief Go to sleep in the deepest allowed mode + * + * Searches through the sleep mode lock counts, starting at the shallowest sleep + * mode, until the first non-zero lock count is found. The device is then put to + * sleep in the sleep mode that corresponds to the lock. + * + * \note This function enables interrupts before going to sleep, and will leave + * them enabled upon return. This also applies if sleep is skipped due to ACTIVE + * mode being locked. + */ + +static inline void sleepmgr_enter_sleep(void) +{ +#ifdef CONFIG_SLEEPMGR_ENABLE + enum sleepmgr_mode sleep_mode; + + cpu_irq_disable(); + + // Find the deepest allowable sleep mode + sleep_mode = sleepmgr_get_sleep_mode(); + // Return right away if first mode (ACTIVE) is locked. + if (sleep_mode==SLEEPMGR_ACTIVE) { + cpu_irq_enable(); + return; + } + // Enter the deepest allowable sleep mode with interrupts enabled + sleepmgr_sleep(sleep_mode); +#else + cpu_irq_enable(); +#endif /* CONFIG_SLEEPMGR_ENABLE */ +} + + +//! @} + +#ifdef __cplusplus +} +#endif + +#endif /* SLEEPMGR_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h new file mode 100644 index 00000000..450d0f99 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h @@ -0,0 +1,132 @@ +/** + * \file + * + * \brief Global interrupt management for 8- and 32-bit AVR + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef UTILS_INTERRUPT_H +#define UTILS_INTERRUPT_H + +#include + +#if XMEGA || MEGA +# include "interrupt/interrupt_avr8.h" +#elif UC3 +# include "interrupt/interrupt_avr32.h" +#elif SAM || SAMB +# include "interrupt/interrupt_sam_nvic.h" +#else +# error Unsupported device. +#endif + +/** + * \defgroup interrupt_group Global interrupt management + * + * This is a driver for global enabling and disabling of interrupts. + * + * @{ + */ + +#if defined(__DOXYGEN__) +/** + * \def CONFIG_INTERRUPT_FORCE_INTC + * \brief Force usage of the ASF INTC driver + * + * Predefine this symbol when preprocessing to force the use of the ASF INTC driver. + * This is useful to ensure compatibility across compilers and shall be used only when required + * by the application needs. + */ +# define CONFIG_INTERRUPT_FORCE_INTC +#endif + +//! \name Global interrupt flags +//@{ +/** + * \typedef irqflags_t + * \brief Type used for holding state of interrupt flag + */ + +/** + * \def cpu_irq_enable + * \brief Enable interrupts globally + */ + +/** + * \def cpu_irq_disable + * \brief Disable interrupts globally + */ + +/** + * \fn irqflags_t cpu_irq_save(void) + * \brief Get and clear the global interrupt flags + * + * Use in conjunction with \ref cpu_irq_restore. + * + * \return Current state of interrupt flags. + * + * \note This function leaves interrupts disabled. + */ + +/** + * \fn void cpu_irq_restore(irqflags_t flags) + * \brief Restore global interrupt flags + * + * Use in conjunction with \ref cpu_irq_save. + * + * \param flags State to set interrupt flag to. + */ + +/** + * \fn bool cpu_irq_is_enabled_flags(irqflags_t flags) + * \brief Check if interrupts are globally enabled in supplied flags + * + * \param flags Currents state of interrupt flags. + * + * \return True if interrupts are enabled. + */ + +/** + * \def cpu_irq_is_enabled + * \brief Check if interrupts are globally enabled + * + * \return True if interrupts are enabled. + */ +//@} + +//! @} + +/** + * \ingroup interrupt_group + * \defgroup interrupt_deprecated_group Deprecated interrupt definitions + */ + +#endif /* UTILS_INTERRUPT_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c new file mode 100644 index 00000000..269b4cea --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c @@ -0,0 +1,76 @@ +/** + * \file + * + * \brief Global interrupt management for SAM D20, SAM3 and SAM4 (NVIC based) + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "interrupt_sam_nvic.h" + +#if !defined(__DOXYGEN__) +/* Deprecated - global flag to determine the global interrupt state. Required by + * QTouch library, however new applications should use cpu_irq_is_enabled() + * which probes the true global interrupt state from the CPU special registers. + */ +volatile bool g_interrupt_enabled = true; +#endif + +void cpu_irq_enter_critical(void) +{ + if (cpu_irq_critical_section_counter == 0) { + if (cpu_irq_is_enabled()) { + cpu_irq_disable(); + cpu_irq_prev_interrupt_state = true; + } else { + /* Make sure the to save the prev state as false */ + cpu_irq_prev_interrupt_state = false; + } + + } + + cpu_irq_critical_section_counter++; +} + +void cpu_irq_leave_critical(void) +{ + /* Check if the user is trying to leave a critical section when not in a critical section */ + Assert(cpu_irq_critical_section_counter > 0); + + cpu_irq_critical_section_counter--; + + /* Only enable global interrupts when the counter reaches 0 and the state of the global interrupt flag + was enabled when entering critical state */ + if ((cpu_irq_critical_section_counter == 0) && (cpu_irq_prev_interrupt_state)) { + cpu_irq_enable(); + } +} + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h new file mode 100644 index 00000000..7d215cf6 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h @@ -0,0 +1,179 @@ +/** + * \file + * + * \brief Global interrupt management for SAM D20, SAM3 and SAM4 (NVIC based) + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef UTILS_INTERRUPT_INTERRUPT_H +#define UTILS_INTERRUPT_INTERRUPT_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \weakgroup interrupt_group + * + * @{ + */ + +/** + * \name Interrupt Service Routine definition + * + * @{ + */ + +/** + * \brief Define service routine + * + * \note For NVIC devices the interrupt service routines are predefined to + * add to vector table in binary generation, so there is no service + * register at run time. The routine collections are in exceptions.h. + * + * Usage: + * \code + ISR(foo_irq_handler) + { + // Function definition + ... + } +\endcode + * + * \param func Name for the function. + */ +# define ISR(func) \ + void func (void) + +/** + * \brief Initialize interrupt vectors + * + * For NVIC the interrupt vectors are put in vector table. So nothing + * to do to initialize them, except defined the vector function with + * right name. + * + * This must be called prior to \ref irq_register_handler. + */ +# define irq_initialize_vectors() \ + do { \ + } while(0) + +/** + * \brief Register handler for interrupt + * + * For NVIC the interrupt vectors are put in vector table. So nothing + * to do to register them, except defined the vector function with + * right name. + * + * Usage: + * \code + irq_initialize_vectors(); + irq_register_handler(foo_irq_handler); +\endcode + * + * \note The function \a func must be defined with the \ref ISR macro. + * \note The functions prototypes can be found in the device exception header + * files (exceptions.h). + */ +# define irq_register_handler(int_num, int_prio) \ + NVIC_ClearPendingIRQ( (IRQn_Type)int_num); \ + NVIC_SetPriority( (IRQn_Type)int_num, int_prio); \ + NVIC_EnableIRQ( (IRQn_Type)int_num); \ + +//@} + +# define cpu_irq_enable() \ + do { \ + g_interrupt_enabled = true; \ + __DMB(); \ + __enable_irq(); \ + } while (0) +# define cpu_irq_disable() \ + do { \ + __disable_irq(); \ + __DMB(); \ + g_interrupt_enabled = false; \ + } while (0) + +typedef uint32_t irqflags_t; + +#if !defined(__DOXYGEN__) +extern volatile bool g_interrupt_enabled; +#endif + +#define cpu_irq_is_enabled() (__get_PRIMASK() == 0) + +static volatile uint32_t cpu_irq_critical_section_counter; +static volatile bool cpu_irq_prev_interrupt_state; + +static inline irqflags_t cpu_irq_save(void) +{ + volatile irqflags_t flags = cpu_irq_is_enabled(); + cpu_irq_disable(); + return flags; +} + +static inline bool cpu_irq_is_enabled_flags(irqflags_t flags) +{ + return (flags); +} + +static inline void cpu_irq_restore(irqflags_t flags) +{ + if (cpu_irq_is_enabled_flags(flags)) + cpu_irq_enable(); +} + +void cpu_irq_enter_critical(void); +void cpu_irq_leave_critical(void); + +/** + * \weakgroup interrupt_deprecated_group + * @{ + */ + +#define Enable_global_interrupt() cpu_irq_enable() +#define Disable_global_interrupt() cpu_irq_disable() +#define Is_global_interrupt_enabled() cpu_irq_is_enabled() + +//@} + +//@} + +#ifdef __cplusplus +} +#endif + +#endif /* UTILS_INTERRUPT_INTERRUPT_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/parts.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/parts.h new file mode 100644 index 00000000..85689a89 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/parts.h @@ -0,0 +1,1768 @@ +/** + * \file + * + * \brief Atmel part identification macros + * + * Copyright (c) 2012-2020 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef ATMEL_PARTS_H +#define ATMEL_PARTS_H + +/** + * \defgroup part_macros_group Atmel part identification macros + * + * This collection of macros identify which series and families that the various + * Atmel parts belong to. These can be used to select part-dependent sections of + * code at compile time. + * + * @{ + */ + +/** + * \name Convenience macros for part checking + * @{ + */ +/* ! Check GCC and IAR part definition for 8-bit AVR */ +#define AVR8_PART_IS_DEFINED(part) \ + (defined(__ ## part ## __) || defined(__AVR_ ## part ## __)) + +/* ! Check GCC and IAR part definition for 32-bit AVR */ +#define AVR32_PART_IS_DEFINED(part) \ + (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __)) + +/* ! Check GCC and IAR part definition for SAM */ +#define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __)) +/** @} */ + +/** + * \defgroup uc3_part_macros_group AVR UC3 parts + * @{ + */ + +/** + * \name AVR UC3 A series + * @{ + */ +#define UC3A0 ( \ + AVR32_PART_IS_DEFINED(UC3A0128) || \ + AVR32_PART_IS_DEFINED(UC3A0256) || \ + AVR32_PART_IS_DEFINED(UC3A0512) \ + ) + +#define UC3A1 ( \ + AVR32_PART_IS_DEFINED(UC3A1128) || \ + AVR32_PART_IS_DEFINED(UC3A1256) || \ + AVR32_PART_IS_DEFINED(UC3A1512) \ + ) + +#define UC3A3 ( \ + AVR32_PART_IS_DEFINED(UC3A364) || \ + AVR32_PART_IS_DEFINED(UC3A364S) || \ + AVR32_PART_IS_DEFINED(UC3A3128) || \ + AVR32_PART_IS_DEFINED(UC3A3128S) || \ + AVR32_PART_IS_DEFINED(UC3A3256) || \ + AVR32_PART_IS_DEFINED(UC3A3256S) \ + ) + +#define UC3A4 ( \ + AVR32_PART_IS_DEFINED(UC3A464) || \ + AVR32_PART_IS_DEFINED(UC3A464S) || \ + AVR32_PART_IS_DEFINED(UC3A4128) || \ + AVR32_PART_IS_DEFINED(UC3A4128S) || \ + AVR32_PART_IS_DEFINED(UC3A4256) || \ + AVR32_PART_IS_DEFINED(UC3A4256S) \ + ) +/** @} */ + +/** + * \name AVR UC3 B series + * @{ + */ +#define UC3B0 ( \ + AVR32_PART_IS_DEFINED(UC3B064) || \ + AVR32_PART_IS_DEFINED(UC3B0128) || \ + AVR32_PART_IS_DEFINED(UC3B0256) || \ + AVR32_PART_IS_DEFINED(UC3B0512) \ + ) + +#define UC3B1 ( \ + AVR32_PART_IS_DEFINED(UC3B164) || \ + AVR32_PART_IS_DEFINED(UC3B1128) || \ + AVR32_PART_IS_DEFINED(UC3B1256) || \ + AVR32_PART_IS_DEFINED(UC3B1512) \ + ) +/** @} */ + +/** + * \name AVR UC3 C series + * @{ + */ +#define UC3C0 ( \ + AVR32_PART_IS_DEFINED(UC3C064C) || \ + AVR32_PART_IS_DEFINED(UC3C0128C) || \ + AVR32_PART_IS_DEFINED(UC3C0256C) || \ + AVR32_PART_IS_DEFINED(UC3C0512C) \ + ) + +#define UC3C1 ( \ + AVR32_PART_IS_DEFINED(UC3C164C) || \ + AVR32_PART_IS_DEFINED(UC3C1128C) || \ + AVR32_PART_IS_DEFINED(UC3C1256C) || \ + AVR32_PART_IS_DEFINED(UC3C1512C) \ + ) + +#define UC3C2 ( \ + AVR32_PART_IS_DEFINED(UC3C264C) || \ + AVR32_PART_IS_DEFINED(UC3C2128C) || \ + AVR32_PART_IS_DEFINED(UC3C2256C) || \ + AVR32_PART_IS_DEFINED(UC3C2512C) \ + ) +/** @} */ + +/** + * \name AVR UC3 D series + * @{ + */ +#define UC3D3 ( \ + AVR32_PART_IS_DEFINED(UC64D3) || \ + AVR32_PART_IS_DEFINED(UC128D3) \ + ) + +#define UC3D4 ( \ + AVR32_PART_IS_DEFINED(UC64D4) || \ + AVR32_PART_IS_DEFINED(UC128D4) \ + ) +/** @} */ + +/** + * \name AVR UC3 L series + * @{ + */ +#define UC3L0 ( \ + AVR32_PART_IS_DEFINED(UC3L016) || \ + AVR32_PART_IS_DEFINED(UC3L032) || \ + AVR32_PART_IS_DEFINED(UC3L064) \ + ) + +#define UC3L0128 ( \ + AVR32_PART_IS_DEFINED(UC3L0128) \ + ) + +#define UC3L0256 ( \ + AVR32_PART_IS_DEFINED(UC3L0256) \ + ) + +#define UC3L3 ( \ + AVR32_PART_IS_DEFINED(UC64L3U) || \ + AVR32_PART_IS_DEFINED(UC128L3U) || \ + AVR32_PART_IS_DEFINED(UC256L3U) \ + ) + +#define UC3L4 ( \ + AVR32_PART_IS_DEFINED(UC64L4U) || \ + AVR32_PART_IS_DEFINED(UC128L4U) || \ + AVR32_PART_IS_DEFINED(UC256L4U) \ + ) + +#define UC3L3_L4 (UC3L3 || UC3L4) +/** @} */ + +/** + * \name AVR UC3 families + * @{ + */ +/** AVR UC3 A family */ +#define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4) + +/** AVR UC3 B family */ +#define UC3B (UC3B0 || UC3B1) + +/** AVR UC3 C family */ +#define UC3C (UC3C0 || UC3C1 || UC3C2) + +/** AVR UC3 D family */ +#define UC3D (UC3D3 || UC3D4) + +/** AVR UC3 L family */ +#define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4) +/** @} */ + +/** AVR UC3 product line */ +#define UC3 (UC3A || UC3B || UC3C || UC3D || UC3L) + +/** @} */ + +/** + * \defgroup xmega_part_macros_group AVR XMEGA parts + * @{ + */ + +/** + * \name AVR XMEGA A series + * @{ + */ +#define XMEGA_A1 ( \ + AVR8_PART_IS_DEFINED(ATxmega64A1) || \ + AVR8_PART_IS_DEFINED(ATxmega128A1) \ + ) + +#define XMEGA_A3 ( \ + AVR8_PART_IS_DEFINED(ATxmega64A3) || \ + AVR8_PART_IS_DEFINED(ATxmega128A3) || \ + AVR8_PART_IS_DEFINED(ATxmega192A3) || \ + AVR8_PART_IS_DEFINED(ATxmega256A3) \ + ) + +#define XMEGA_A3B ( \ + AVR8_PART_IS_DEFINED(ATxmega256A3B) \ + ) + +#define XMEGA_A4 ( \ + AVR8_PART_IS_DEFINED(ATxmega16A4) || \ + AVR8_PART_IS_DEFINED(ATxmega32A4) \ + ) +/** @} */ + +/** + * \name AVR XMEGA AU series + * @{ + */ +#define XMEGA_A1U ( \ + AVR8_PART_IS_DEFINED(ATxmega64A1U) || \ + AVR8_PART_IS_DEFINED(ATxmega128A1U) \ + ) + +#define XMEGA_A3U ( \ + AVR8_PART_IS_DEFINED(ATxmega64A3U) || \ + AVR8_PART_IS_DEFINED(ATxmega128A3U) || \ + AVR8_PART_IS_DEFINED(ATxmega192A3U) || \ + AVR8_PART_IS_DEFINED(ATxmega256A3U) \ + ) + +#define XMEGA_A3BU ( \ + AVR8_PART_IS_DEFINED(ATxmega256A3BU) \ + ) + +#define XMEGA_A4U ( \ + AVR8_PART_IS_DEFINED(ATxmega16A4U) || \ + AVR8_PART_IS_DEFINED(ATxmega32A4U) || \ + AVR8_PART_IS_DEFINED(ATxmega64A4U) || \ + AVR8_PART_IS_DEFINED(ATxmega128A4U) \ + ) +/** @} */ + +/** + * \name AVR XMEGA B series + * @{ + */ +#define XMEGA_B1 ( \ + AVR8_PART_IS_DEFINED(ATxmega64B1) || \ + AVR8_PART_IS_DEFINED(ATxmega128B1) \ + ) + +#define XMEGA_B3 ( \ + AVR8_PART_IS_DEFINED(ATxmega64B3) || \ + AVR8_PART_IS_DEFINED(ATxmega128B3) \ + ) +/** @} */ + +/** + * \name AVR XMEGA C series + * @{ + */ +#define XMEGA_C3 ( \ + AVR8_PART_IS_DEFINED(ATxmega384C3) || \ + AVR8_PART_IS_DEFINED(ATxmega256C3) || \ + AVR8_PART_IS_DEFINED(ATxmega192C3) || \ + AVR8_PART_IS_DEFINED(ATxmega128C3) || \ + AVR8_PART_IS_DEFINED(ATxmega64C3) || \ + AVR8_PART_IS_DEFINED(ATxmega32C3) \ + ) + +#define XMEGA_C4 ( \ + AVR8_PART_IS_DEFINED(ATxmega32C4) || \ + AVR8_PART_IS_DEFINED(ATxmega16C4) \ + ) +/** @} */ + +/** + * \name AVR XMEGA D series + * @{ + */ +#define XMEGA_D3 ( \ + AVR8_PART_IS_DEFINED(ATxmega32D3) || \ + AVR8_PART_IS_DEFINED(ATxmega64D3) || \ + AVR8_PART_IS_DEFINED(ATxmega128D3) || \ + AVR8_PART_IS_DEFINED(ATxmega192D3) || \ + AVR8_PART_IS_DEFINED(ATxmega256D3) || \ + AVR8_PART_IS_DEFINED(ATxmega384D3) \ + ) + +#define XMEGA_D4 ( \ + AVR8_PART_IS_DEFINED(ATxmega16D4) || \ + AVR8_PART_IS_DEFINED(ATxmega32D4) || \ + AVR8_PART_IS_DEFINED(ATxmega64D4) || \ + AVR8_PART_IS_DEFINED(ATxmega128D4) \ + ) +/** @} */ + +/** + * \name AVR XMEGA E series + * @{ + */ +#define XMEGA_E5 ( \ + AVR8_PART_IS_DEFINED(ATxmega8E5) || \ + AVR8_PART_IS_DEFINED(ATxmega16E5) || \ + AVR8_PART_IS_DEFINED(ATxmega32E5) \ + ) +/** @} */ + + +/** + * \name AVR XMEGA families + * @{ + */ +/** AVR XMEGA A family */ +#define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4) + +/** AVR XMEGA AU family */ +#define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U) + +/** AVR XMEGA B family */ +#define XMEGA_B (XMEGA_B1 || XMEGA_B3) + +/** AVR XMEGA C family */ +#define XMEGA_C (XMEGA_C3 || XMEGA_C4) + +/** AVR XMEGA D family */ +#define XMEGA_D (XMEGA_D3 || XMEGA_D4) + +/** AVR XMEGA E family */ +#define XMEGA_E (XMEGA_E5) +/** @} */ + + +/** AVR XMEGA product line */ +#define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D || XMEGA_E) + +/** @} */ + +/** + * \defgroup mega_part_macros_group megaAVR parts + * + * \note These megaAVR groupings are based on the groups in AVR Libc for the + * part header files. They are not names of official megaAVR device series or + * families. + * + * @{ + */ + +/** + * \name ATmegaxx0/xx1 subgroups + * @{ + */ +#define MEGA_XX0 ( \ + AVR8_PART_IS_DEFINED(ATmega640) || \ + AVR8_PART_IS_DEFINED(ATmega1280) || \ + AVR8_PART_IS_DEFINED(ATmega2560) \ + ) + +#define MEGA_XX1 ( \ + AVR8_PART_IS_DEFINED(ATmega1281) || \ + AVR8_PART_IS_DEFINED(ATmega2561) \ + ) +/** @} */ + +/** + * \name megaAVR groups + * @{ + */ +/** ATmegaxx0/xx1 group */ +#define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1) + +/** ATmegaxx4 group */ +#define MEGA_XX4 ( \ + AVR8_PART_IS_DEFINED(ATmega164A) || \ + AVR8_PART_IS_DEFINED(ATmega164PA) || \ + AVR8_PART_IS_DEFINED(ATmega324A) || \ + AVR8_PART_IS_DEFINED(ATmega324PA) || \ + AVR8_PART_IS_DEFINED(ATmega324PB) || \ + AVR8_PART_IS_DEFINED(ATmega644) || \ + AVR8_PART_IS_DEFINED(ATmega644A) || \ + AVR8_PART_IS_DEFINED(ATmega644PA) || \ + AVR8_PART_IS_DEFINED(ATmega1284P) || \ + AVR8_PART_IS_DEFINED(ATmega128RFA1) \ + ) + +/** ATmegaxx4 group */ +#define MEGA_XX4_A ( \ + AVR8_PART_IS_DEFINED(ATmega164A) || \ + AVR8_PART_IS_DEFINED(ATmega164PA) || \ + AVR8_PART_IS_DEFINED(ATmega324A) || \ + AVR8_PART_IS_DEFINED(ATmega324PA) || \ + AVR8_PART_IS_DEFINED(ATmega644A) || \ + AVR8_PART_IS_DEFINED(ATmega644PA) || \ + AVR8_PART_IS_DEFINED(ATmega1284P) \ + ) + +/** ATmegaxx8 group */ +#define MEGA_XX8 ( \ + AVR8_PART_IS_DEFINED(ATmega48) || \ + AVR8_PART_IS_DEFINED(ATmega48A) || \ + AVR8_PART_IS_DEFINED(ATmega48PA) || \ + AVR8_PART_IS_DEFINED(ATmega48PB) || \ + AVR8_PART_IS_DEFINED(ATmega88) || \ + AVR8_PART_IS_DEFINED(ATmega88A) || \ + AVR8_PART_IS_DEFINED(ATmega88PA) || \ + AVR8_PART_IS_DEFINED(ATmega88PB) || \ + AVR8_PART_IS_DEFINED(ATmega168) || \ + AVR8_PART_IS_DEFINED(ATmega168A) || \ + AVR8_PART_IS_DEFINED(ATmega168PA) || \ + AVR8_PART_IS_DEFINED(ATmega168PB) || \ + AVR8_PART_IS_DEFINED(ATmega328) || \ + AVR8_PART_IS_DEFINED(ATmega328P) || \ + AVR8_PART_IS_DEFINED(ATmega328PB) \ + ) + +/** ATmegaxx8A/P/PA group */ +#define MEGA_XX8_A ( \ + AVR8_PART_IS_DEFINED(ATmega48A) || \ + AVR8_PART_IS_DEFINED(ATmega48PA) || \ + AVR8_PART_IS_DEFINED(ATmega88A) || \ + AVR8_PART_IS_DEFINED(ATmega88PA) || \ + AVR8_PART_IS_DEFINED(ATmega168A) || \ + AVR8_PART_IS_DEFINED(ATmega168PA) || \ + AVR8_PART_IS_DEFINED(ATmega328P) \ + ) + +/** ATmegaxx group */ +#define MEGA_XX ( \ + AVR8_PART_IS_DEFINED(ATmega16) || \ + AVR8_PART_IS_DEFINED(ATmega16A) || \ + AVR8_PART_IS_DEFINED(ATmega32) || \ + AVR8_PART_IS_DEFINED(ATmega32A) || \ + AVR8_PART_IS_DEFINED(ATmega64) || \ + AVR8_PART_IS_DEFINED(ATmega64A) || \ + AVR8_PART_IS_DEFINED(ATmega128) || \ + AVR8_PART_IS_DEFINED(ATmega128A) \ + ) + +/** ATmegaxxA/P/PA group */ +#define MEGA_XX_A ( \ + AVR8_PART_IS_DEFINED(ATmega16A) || \ + AVR8_PART_IS_DEFINED(ATmega32A) || \ + AVR8_PART_IS_DEFINED(ATmega64A) || \ + AVR8_PART_IS_DEFINED(ATmega128A) \ + ) +/** ATmegaxxRFA1 group */ +#define MEGA_RFA1 ( \ + AVR8_PART_IS_DEFINED(ATmega128RFA1) \ + ) + +/** ATmegaxxRFR2 group */ +#define MEGA_RFR2 ( \ + AVR8_PART_IS_DEFINED(ATmega64RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega128RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega256RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega644RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega1284RFR2) || \ + AVR8_PART_IS_DEFINED(ATmega2564RFR2) \ + ) + + +/** ATmegaxxRFxx group */ +#define MEGA_RF (MEGA_RFA1 || MEGA_RFR2) + +/** + * \name ATmegaxx_un0/un1/un2 subgroups + * @{ + */ +#define MEGA_XX_UN0 ( \ + AVR8_PART_IS_DEFINED(ATmega16) || \ + AVR8_PART_IS_DEFINED(ATmega16A) || \ + AVR8_PART_IS_DEFINED(ATmega32) || \ + AVR8_PART_IS_DEFINED(ATmega32A) \ + ) + +/** ATmegaxx group without power reduction and + * And interrupt sense register. + */ +#define MEGA_XX_UN1 ( \ + AVR8_PART_IS_DEFINED(ATmega64) || \ + AVR8_PART_IS_DEFINED(ATmega64A) || \ + AVR8_PART_IS_DEFINED(ATmega128) || \ + AVR8_PART_IS_DEFINED(ATmega128A) \ + ) + +/** ATmegaxx group without power reduction and + * And interrupt sense register. + */ +#define MEGA_XX_UN2 ( \ + AVR8_PART_IS_DEFINED(ATmega169P) || \ + AVR8_PART_IS_DEFINED(ATmega169PA) || \ + AVR8_PART_IS_DEFINED(ATmega329P) || \ + AVR8_PART_IS_DEFINED(ATmega329PA) \ + ) + +/** Devices added to complete megaAVR offering. + * Please do not use this group symbol as it is not intended + * to be permanent: the devices should be regrouped. + */ +#define MEGA_UNCATEGORIZED ( \ + AVR8_PART_IS_DEFINED(AT90CAN128) || \ + AVR8_PART_IS_DEFINED(AT90CAN32) || \ + AVR8_PART_IS_DEFINED(AT90CAN64) || \ + AVR8_PART_IS_DEFINED(AT90PWM1) || \ + AVR8_PART_IS_DEFINED(AT90PWM216) || \ + AVR8_PART_IS_DEFINED(AT90PWM2B) || \ + AVR8_PART_IS_DEFINED(AT90PWM316) || \ + AVR8_PART_IS_DEFINED(AT90PWM3B) || \ + AVR8_PART_IS_DEFINED(AT90PWM81) || \ + AVR8_PART_IS_DEFINED(AT90USB1286) || \ + AVR8_PART_IS_DEFINED(AT90USB1287) || \ + AVR8_PART_IS_DEFINED(AT90USB162) || \ + AVR8_PART_IS_DEFINED(AT90USB646) || \ + AVR8_PART_IS_DEFINED(AT90USB647) || \ + AVR8_PART_IS_DEFINED(AT90USB82) || \ + AVR8_PART_IS_DEFINED(ATmega1284) || \ + AVR8_PART_IS_DEFINED(ATmega162) || \ + AVR8_PART_IS_DEFINED(ATmega164P) || \ + AVR8_PART_IS_DEFINED(ATmega165A) || \ + AVR8_PART_IS_DEFINED(ATmega165P) || \ + AVR8_PART_IS_DEFINED(ATmega165PA) || \ + AVR8_PART_IS_DEFINED(ATmega168P) || \ + AVR8_PART_IS_DEFINED(ATmega169A) || \ + AVR8_PART_IS_DEFINED(ATmega16M1) || \ + AVR8_PART_IS_DEFINED(ATmega16U2) || \ + AVR8_PART_IS_DEFINED(ATmega16U4) || \ + AVR8_PART_IS_DEFINED(ATmega256RFA2) || \ + AVR8_PART_IS_DEFINED(ATmega324P) || \ + AVR8_PART_IS_DEFINED(ATmega325) || \ + AVR8_PART_IS_DEFINED(ATmega3250) || \ + AVR8_PART_IS_DEFINED(ATmega3250A) || \ + AVR8_PART_IS_DEFINED(ATmega3250P) || \ + AVR8_PART_IS_DEFINED(ATmega3250PA) || \ + AVR8_PART_IS_DEFINED(ATmega325A) || \ + AVR8_PART_IS_DEFINED(ATmega325P) || \ + AVR8_PART_IS_DEFINED(ATmega325PA) || \ + AVR8_PART_IS_DEFINED(ATmega329) || \ + AVR8_PART_IS_DEFINED(ATmega3290) || \ + AVR8_PART_IS_DEFINED(ATmega3290A) || \ + AVR8_PART_IS_DEFINED(ATmega3290P) || \ + AVR8_PART_IS_DEFINED(ATmega3290PA) || \ + AVR8_PART_IS_DEFINED(ATmega329A) || \ + AVR8_PART_IS_DEFINED(ATmega32M1) || \ + AVR8_PART_IS_DEFINED(ATmega32U2) || \ + AVR8_PART_IS_DEFINED(ATmega32U4) || \ + AVR8_PART_IS_DEFINED(ATmega48P) || \ + AVR8_PART_IS_DEFINED(ATmega644P) || \ + AVR8_PART_IS_DEFINED(ATmega645) || \ + AVR8_PART_IS_DEFINED(ATmega6450) || \ + AVR8_PART_IS_DEFINED(ATmega6450A) || \ + AVR8_PART_IS_DEFINED(ATmega6450P) || \ + AVR8_PART_IS_DEFINED(ATmega645A) || \ + AVR8_PART_IS_DEFINED(ATmega645P) || \ + AVR8_PART_IS_DEFINED(ATmega649) || \ + AVR8_PART_IS_DEFINED(ATmega6490) || \ + AVR8_PART_IS_DEFINED(ATmega6490A) || \ + AVR8_PART_IS_DEFINED(ATmega6490P) || \ + AVR8_PART_IS_DEFINED(ATmega649A) || \ + AVR8_PART_IS_DEFINED(ATmega649P) || \ + AVR8_PART_IS_DEFINED(ATmega64M1) || \ + AVR8_PART_IS_DEFINED(ATmega64RFA2) || \ + AVR8_PART_IS_DEFINED(ATmega8) || \ + AVR8_PART_IS_DEFINED(ATmega8515) || \ + AVR8_PART_IS_DEFINED(ATmega8535) || \ + AVR8_PART_IS_DEFINED(ATmega88P) || \ + AVR8_PART_IS_DEFINED(ATmega8A) || \ + AVR8_PART_IS_DEFINED(ATmega8U2) \ + ) + +/** Unspecified group */ +#define MEGA_UNSPECIFIED (MEGA_XX_UN0 || MEGA_XX_UN1 || MEGA_XX_UN2 || \ + MEGA_UNCATEGORIZED) + +/** @} */ + +/** megaAVR product line */ +#define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_RF || \ + MEGA_UNSPECIFIED) + +/** @} */ + +/** + * \defgroup sam_part_macros_group SAM parts + * @{ + */ + +/** + * \name SAM3S series + * @{ + */ +#define SAM3S1 ( \ + SAM_PART_IS_DEFINED(SAM3S1A) || \ + SAM_PART_IS_DEFINED(SAM3S1B) || \ + SAM_PART_IS_DEFINED(SAM3S1C) \ + ) + +#define SAM3S2 ( \ + SAM_PART_IS_DEFINED(SAM3S2A) || \ + SAM_PART_IS_DEFINED(SAM3S2B) || \ + SAM_PART_IS_DEFINED(SAM3S2C) \ + ) + +#define SAM3S4 ( \ + SAM_PART_IS_DEFINED(SAM3S4A) || \ + SAM_PART_IS_DEFINED(SAM3S4B) || \ + SAM_PART_IS_DEFINED(SAM3S4C) \ + ) + +#define SAM3S8 ( \ + SAM_PART_IS_DEFINED(SAM3S8B) || \ + SAM_PART_IS_DEFINED(SAM3S8C) \ + ) + +#define SAM3SD8 ( \ + SAM_PART_IS_DEFINED(SAM3SD8B) || \ + SAM_PART_IS_DEFINED(SAM3SD8C) \ + ) +/** @} */ + +/** + * \name SAM3U series + * @{ + */ +#define SAM3U1 ( \ + SAM_PART_IS_DEFINED(SAM3U1C) || \ + SAM_PART_IS_DEFINED(SAM3U1E) \ + ) + +#define SAM3U2 ( \ + SAM_PART_IS_DEFINED(SAM3U2C) || \ + SAM_PART_IS_DEFINED(SAM3U2E) \ + ) + +#define SAM3U4 ( \ + SAM_PART_IS_DEFINED(SAM3U4C) || \ + SAM_PART_IS_DEFINED(SAM3U4E) \ + ) +/** @} */ + +/** + * \name SAM3N series + * @{ + */ +#define SAM3N00 ( \ + SAM_PART_IS_DEFINED(SAM3N00A) || \ + SAM_PART_IS_DEFINED(SAM3N00B) \ + ) + +#define SAM3N0 ( \ + SAM_PART_IS_DEFINED(SAM3N0A) || \ + SAM_PART_IS_DEFINED(SAM3N0B) || \ + SAM_PART_IS_DEFINED(SAM3N0C) \ + ) + +#define SAM3N1 ( \ + SAM_PART_IS_DEFINED(SAM3N1A) || \ + SAM_PART_IS_DEFINED(SAM3N1B) || \ + SAM_PART_IS_DEFINED(SAM3N1C) \ + ) + +#define SAM3N2 ( \ + SAM_PART_IS_DEFINED(SAM3N2A) || \ + SAM_PART_IS_DEFINED(SAM3N2B) || \ + SAM_PART_IS_DEFINED(SAM3N2C) \ + ) + +#define SAM3N4 ( \ + SAM_PART_IS_DEFINED(SAM3N4A) || \ + SAM_PART_IS_DEFINED(SAM3N4B) || \ + SAM_PART_IS_DEFINED(SAM3N4C) \ + ) +/** @} */ + +/** + * \name SAM3X series + * @{ + */ +#define SAM3X4 ( \ + SAM_PART_IS_DEFINED(SAM3X4C) || \ + SAM_PART_IS_DEFINED(SAM3X4E) \ + ) + +#define SAM3X8 ( \ + SAM_PART_IS_DEFINED(SAM3X8C) || \ + SAM_PART_IS_DEFINED(SAM3X8E) || \ + SAM_PART_IS_DEFINED(SAM3X8H) \ + ) +/** @} */ + +/** + * \name SAM3A series + * @{ + */ +#define SAM3A4 ( \ + SAM_PART_IS_DEFINED(SAM3A4C) \ + ) + +#define SAM3A8 ( \ + SAM_PART_IS_DEFINED(SAM3A8C) \ + ) +/** @} */ + +/** + * \name SAM4S series + * @{ + */ +#define SAM4S2 ( \ + SAM_PART_IS_DEFINED(SAM4S2A) || \ + SAM_PART_IS_DEFINED(SAM4S2B) || \ + SAM_PART_IS_DEFINED(SAM4S2C) \ + ) + +#define SAM4S4 ( \ + SAM_PART_IS_DEFINED(SAM4S4A) || \ + SAM_PART_IS_DEFINED(SAM4S4B) || \ + SAM_PART_IS_DEFINED(SAM4S4C) \ + ) + +#define SAM4S8 ( \ + SAM_PART_IS_DEFINED(SAM4S8B) || \ + SAM_PART_IS_DEFINED(SAM4S8C) \ + ) + +#define SAM4S16 ( \ + SAM_PART_IS_DEFINED(SAM4S16B) || \ + SAM_PART_IS_DEFINED(SAM4S16C) \ + ) + +#define SAM4SA16 ( \ + SAM_PART_IS_DEFINED(SAM4SA16B) || \ + SAM_PART_IS_DEFINED(SAM4SA16C) \ + ) + +#define SAM4SD16 ( \ + SAM_PART_IS_DEFINED(SAM4SD16B) || \ + SAM_PART_IS_DEFINED(SAM4SD16C) \ + ) + +#define SAM4SD32 ( \ + SAM_PART_IS_DEFINED(SAM4SD32B) || \ + SAM_PART_IS_DEFINED(SAM4SD32C) \ + ) +/** @} */ + +/** + * \name SAM4L series + * @{ + */ +#define SAM4LS ( \ + SAM_PART_IS_DEFINED(SAM4LS2A) || \ + SAM_PART_IS_DEFINED(SAM4LS2B) || \ + SAM_PART_IS_DEFINED(SAM4LS2C) || \ + SAM_PART_IS_DEFINED(SAM4LS4A) || \ + SAM_PART_IS_DEFINED(SAM4LS4B) || \ + SAM_PART_IS_DEFINED(SAM4LS4C) || \ + SAM_PART_IS_DEFINED(SAM4LS8A) || \ + SAM_PART_IS_DEFINED(SAM4LS8B) || \ + SAM_PART_IS_DEFINED(SAM4LS8C) \ + ) + +#define SAM4LC ( \ + SAM_PART_IS_DEFINED(SAM4LC2A) || \ + SAM_PART_IS_DEFINED(SAM4LC2B) || \ + SAM_PART_IS_DEFINED(SAM4LC2C) || \ + SAM_PART_IS_DEFINED(SAM4LC4A) || \ + SAM_PART_IS_DEFINED(SAM4LC4B) || \ + SAM_PART_IS_DEFINED(SAM4LC4C) || \ + SAM_PART_IS_DEFINED(SAM4LC8A) || \ + SAM_PART_IS_DEFINED(SAM4LC8B) || \ + SAM_PART_IS_DEFINED(SAM4LC8C) \ + ) +/** @} */ + +/** + * \name SAMD20 series + * @{ + */ +#define SAMD20J ( \ + SAM_PART_IS_DEFINED(SAMD20J14) || \ + SAM_PART_IS_DEFINED(SAMD20J15) || \ + SAM_PART_IS_DEFINED(SAMD20J16) || \ + SAM_PART_IS_DEFINED(SAMD20J14B) || \ + SAM_PART_IS_DEFINED(SAMD20J15B) || \ + SAM_PART_IS_DEFINED(SAMD20J16B) || \ + SAM_PART_IS_DEFINED(SAMD20J17) || \ + SAM_PART_IS_DEFINED(SAMD20J18) \ + ) + +#define SAMD20G ( \ + SAM_PART_IS_DEFINED(SAMD20G14) || \ + SAM_PART_IS_DEFINED(SAMD20G15) || \ + SAM_PART_IS_DEFINED(SAMD20G16) || \ + SAM_PART_IS_DEFINED(SAMD20G14B) || \ + SAM_PART_IS_DEFINED(SAMD20G15B) || \ + SAM_PART_IS_DEFINED(SAMD20G16B) || \ + SAM_PART_IS_DEFINED(SAMD20G17) || \ + SAM_PART_IS_DEFINED(SAMD20G17U) || \ + SAM_PART_IS_DEFINED(SAMD20G18) || \ + SAM_PART_IS_DEFINED(SAMD20G18U) \ + ) + +#define SAMD20E ( \ + SAM_PART_IS_DEFINED(SAMD20E14) || \ + SAM_PART_IS_DEFINED(SAMD20E15) || \ + SAM_PART_IS_DEFINED(SAMD20E16) || \ + SAM_PART_IS_DEFINED(SAMD20E14B) || \ + SAM_PART_IS_DEFINED(SAMD20E15B) || \ + SAM_PART_IS_DEFINED(SAMD20E16B) || \ + SAM_PART_IS_DEFINED(SAMD20E17) || \ + SAM_PART_IS_DEFINED(SAMD20E18) \ + ) + +/** @} */ + +/** + * \name SAMD21 series + * @{ + */ +#define SAMD21J ( \ + SAM_PART_IS_DEFINED(SAMD21J15A) || \ + SAM_PART_IS_DEFINED(SAMD21J16A) || \ + SAM_PART_IS_DEFINED(SAMD21J17A) || \ + SAM_PART_IS_DEFINED(SAMD21J18A) || \ + SAM_PART_IS_DEFINED(SAMD21J15B) || \ + SAM_PART_IS_DEFINED(SAMD21J16B) || \ + SAM_PART_IS_DEFINED(SAMD21J17D) \ + ) + +#define SAMD21G ( \ + SAM_PART_IS_DEFINED(SAMD21G15A) || \ + SAM_PART_IS_DEFINED(SAMD21G16A) || \ + SAM_PART_IS_DEFINED(SAMD21G17A) || \ + SAM_PART_IS_DEFINED(SAMD21G17AU) || \ + SAM_PART_IS_DEFINED(SAMD21G18A) || \ + SAM_PART_IS_DEFINED(SAMD21G18AU) || \ + SAM_PART_IS_DEFINED(SAMD21G15B) || \ + SAM_PART_IS_DEFINED(SAMD21G16B) || \ + SAM_PART_IS_DEFINED(SAMD21G15L) || \ + SAM_PART_IS_DEFINED(SAMD21G16L) || \ + SAM_PART_IS_DEFINED(SAMD21G17D) || \ + SAM_PART_IS_DEFINED(SAMD21G17L) \ + ) + +#define SAMD21GXXL ( \ + SAM_PART_IS_DEFINED(SAMD21G15L) || \ + SAM_PART_IS_DEFINED(SAMD21G16L) || \ + SAM_PART_IS_DEFINED(SAMD21G17L) \ + ) + +#define SAMD21E ( \ + SAM_PART_IS_DEFINED(SAMD21E15A) || \ + SAM_PART_IS_DEFINED(SAMD21E16A) || \ + SAM_PART_IS_DEFINED(SAMD21E17A) || \ + SAM_PART_IS_DEFINED(SAMD21E18A) || \ + SAM_PART_IS_DEFINED(SAMD21E15B) || \ + SAM_PART_IS_DEFINED(SAMD21E15BU) || \ + SAM_PART_IS_DEFINED(SAMD21E16B) || \ + SAM_PART_IS_DEFINED(SAMD21E16BU) || \ + SAM_PART_IS_DEFINED(SAMD21E15L) || \ + SAM_PART_IS_DEFINED(SAMD21E16L) || \ + SAM_PART_IS_DEFINED(SAMD21E17D) || \ + SAM_PART_IS_DEFINED(SAMD21E17DU) || \ + SAM_PART_IS_DEFINED(SAMD21E17L) \ + ) + +#define SAMD21EXXL ( \ + SAM_PART_IS_DEFINED(SAMD21E15L) || \ + SAM_PART_IS_DEFINED(SAMD21E16L) || \ + SAM_PART_IS_DEFINED(SAMD21E17L) \ + ) + +/** @} */ + +/** + * \name SAMR21 series + * @{ + */ +#define SAMR21G ( \ + SAM_PART_IS_DEFINED(SAMR21G16A) || \ + SAM_PART_IS_DEFINED(SAMR21G17A) || \ + SAM_PART_IS_DEFINED(SAMR21G18A) \ + ) + +#define SAMR21E ( \ + SAM_PART_IS_DEFINED(SAMR21E16A) || \ + SAM_PART_IS_DEFINED(SAMR21E17A) || \ + SAM_PART_IS_DEFINED(SAMR21E18A) || \ + SAM_PART_IS_DEFINED(SAMR21E19A) \ + ) +/** @} */ + +/** + * \name SAMR30 series + * @{ + */ +#define SAMR30G ( \ + SAM_PART_IS_DEFINED(SAMR30G18A) \ + ) + +#define SAMR30E ( \ + SAM_PART_IS_DEFINED(SAMR30E18A) \ + ) +/** @} */ + +/** + * \name SAMR34 series + * @{ + */ +#define SAMR34J ( \ + SAM_PART_IS_DEFINED(SAMR34J18A) || \ + SAM_PART_IS_DEFINED(SAMR34J17A) || \ + SAM_PART_IS_DEFINED(SAMR34J16A) || \ + SAM_PART_IS_DEFINED(SAMR34J18B) || \ + SAM_PART_IS_DEFINED(SAMR34J17B) || \ + SAM_PART_IS_DEFINED(SAMR34J16B) \ + ) + +/* Group for SAMR34 A variant: SAMR34J [16/17/18]A */ +#define SAMR34JXXA ( \ + SAM_PART_IS_DEFINED(SAMR34J18A) || \ + SAM_PART_IS_DEFINED(SAMR34J17A) || \ + SAM_PART_IS_DEFINED(SAMR34J16A) \ +) +/* Group for SAMR34 B variant: SAMR34J [16/17/18]B */ +#define SAMR34JXXB ( \ + SAM_PART_IS_DEFINED(SAMR34J18B) || \ + SAM_PART_IS_DEFINED(SAMR34J17B) || \ + SAM_PART_IS_DEFINED(SAMR34J16B) \ +) + +/* Group for SAMR35 B variant: SAMR35J [16/17/18]B */ +#define SAMR35J ( \ + SAM_PART_IS_DEFINED(SAMR35J18B) || \ + SAM_PART_IS_DEFINED(SAMR35J17B) || \ + SAM_PART_IS_DEFINED(SAMR35J16B) \ +) + +/* Group for SAMR35 B variant: SAMR35J [16/17/18]B */ +#define SAMR35JXXB ( \ + SAM_PART_IS_DEFINED(SAMR35J18B) || \ + SAM_PART_IS_DEFINED(SAMR35J17B) || \ + SAM_PART_IS_DEFINED(SAMR35J16B) \ +) + +/* Group for SAMR35 B variant: SAMR35J [16/17/18]B */ +#define WLR089U ( \ + SAM_PART_IS_DEFINED(WLR089U0) \ +) + +/* Group for WLR089U variant: SAMR35U [0] */ +#define WLR089U0 ( \ + SAM_PART_IS_DEFINED(WLR089U0) \ +) + +/** + * \name SAMB11 series + * @{ + */ +#define SAMB11G ( \ + SAM_PART_IS_DEFINED(SAMB11G18A) || \ + SAM_PART_IS_DEFINED(SAMB11ZR) \ + ) +#define BTLC1000 ( \ + SAM_PART_IS_DEFINED(BTLC1000WLCSP) \ + ) + +/** @} */ + +/** + * \name SAMD09 series + * @{ + */ +#define SAMD09C ( \ + SAM_PART_IS_DEFINED(SAMD09C13A) \ + ) + +#define SAMD09D ( \ + SAM_PART_IS_DEFINED(SAMD09D14A) \ + ) +/** @} */ + +/** + * \name SAMD10 series + * @{ + */ +#define SAMD10C ( \ + SAM_PART_IS_DEFINED(SAMD10C12A) || \ + SAM_PART_IS_DEFINED(SAMD10C13A) || \ + SAM_PART_IS_DEFINED(SAMD10C14A) \ + ) + +#define SAMD10DS ( \ + SAM_PART_IS_DEFINED(SAMD10D12AS) || \ + SAM_PART_IS_DEFINED(SAMD10D13AS) || \ + SAM_PART_IS_DEFINED(SAMD10D14AS) \ + ) + +#define SAMD10DM ( \ + SAM_PART_IS_DEFINED(SAMD10D12AM) || \ + SAM_PART_IS_DEFINED(SAMD10D13AM) || \ + SAM_PART_IS_DEFINED(SAMD10D14AM) \ + ) + +#define SAMD10DU ( \ + SAM_PART_IS_DEFINED(SAMD10D14AU) \ + ) +/** @} */ + +/** + * \name SAMD11 series + * @{ + */ +#define SAMD11C ( \ + SAM_PART_IS_DEFINED(SAMD11C14A) \ + ) + +#define SAMD11DS ( \ + SAM_PART_IS_DEFINED(SAMD11D14AS) \ + ) + +#define SAMD11DM ( \ + SAM_PART_IS_DEFINED(SAMD11D14AM) \ + ) + +#define SAMD11DU ( \ + SAM_PART_IS_DEFINED(SAMD11D14AU) \ + ) +/** @} */ + +/** + * \name SAML21 series + * @{ + */ +#define SAML21E ( \ + SAM_PART_IS_DEFINED(SAML21E18A) || \ + SAM_PART_IS_DEFINED(SAML21E15B) || \ + SAM_PART_IS_DEFINED(SAML21E16B) || \ + SAM_PART_IS_DEFINED(SAML21E17B) || \ + SAM_PART_IS_DEFINED(SAML21E18B) \ + ) + +#define SAML21G ( \ + SAM_PART_IS_DEFINED(SAML21G18A) || \ + SAM_PART_IS_DEFINED(SAML21G16B) || \ + SAM_PART_IS_DEFINED(SAML21G17B) || \ + SAM_PART_IS_DEFINED(SAML21G18B) \ + ) + +#define SAML21J ( \ + SAM_PART_IS_DEFINED(SAML21J18A) || \ + SAM_PART_IS_DEFINED(SAML21J16B) || \ + SAM_PART_IS_DEFINED(SAML21J17B) || \ + SAM_PART_IS_DEFINED(SAML21J18B) \ + ) + +/* Group for SAML21 A variant: SAML21[E/G/J][18]A */ +#define SAML21XXXA ( \ + SAM_PART_IS_DEFINED(SAML21E18A) || \ + SAM_PART_IS_DEFINED(SAML21G18A) || \ + SAM_PART_IS_DEFINED(SAML21J18A) \ + ) + +/* Group for SAML21 B variant: SAML21[E/G/J][15/16/1718]B */ +#define SAML21XXXB ( \ + SAM_PART_IS_DEFINED(SAML21E15B) || \ + SAM_PART_IS_DEFINED(SAML21E16B) || \ + SAM_PART_IS_DEFINED(SAML21E17B) || \ + SAM_PART_IS_DEFINED(SAML21E18B) || \ + SAM_PART_IS_DEFINED(SAML21G16B) || \ + SAM_PART_IS_DEFINED(SAML21G17B) || \ + SAM_PART_IS_DEFINED(SAML21G18B) || \ + SAM_PART_IS_DEFINED(SAML21J16B) || \ + SAM_PART_IS_DEFINED(SAML21J17B) || \ + SAM_PART_IS_DEFINED(SAML21J18B) \ + ) + +/** @} */ + +/** + * \name SAML22 series + * @{ + */ +#define SAML22N ( \ + SAM_PART_IS_DEFINED(SAML22N16A) || \ + SAM_PART_IS_DEFINED(SAML22N17A) || \ + SAM_PART_IS_DEFINED(SAML22N18A) \ + ) + +#define SAML22G ( \ + SAM_PART_IS_DEFINED(SAML22G16A) || \ + SAM_PART_IS_DEFINED(SAML22G17A) || \ + SAM_PART_IS_DEFINED(SAML22G18A) \ + ) + +#define SAML22J ( \ + SAM_PART_IS_DEFINED(SAML22J16A) || \ + SAM_PART_IS_DEFINED(SAML22J17A) || \ + SAM_PART_IS_DEFINED(SAML22J18A) \ + ) +/** @} */ + +/** + * \name SAMDA1 series + * @{ + */ +#define SAMDA1J ( \ + SAM_PART_IS_DEFINED(SAMDA1J14A) || \ + SAM_PART_IS_DEFINED(SAMDA1J15B) || \ + SAM_PART_IS_DEFINED(SAMDA1J15A) || \ + SAM_PART_IS_DEFINED(SAMDA1J15B) || \ + SAM_PART_IS_DEFINED(SAMDA1J16A) || \ + SAM_PART_IS_DEFINED(SAMDA1J16B) \ + ) + +#define SAMDA1G ( \ + SAM_PART_IS_DEFINED(SAMDA1G14A) || \ + SAM_PART_IS_DEFINED(SAMDA1G14B) || \ + SAM_PART_IS_DEFINED(SAMDA1G15A) || \ + SAM_PART_IS_DEFINED(SAMDA1G15B) || \ + SAM_PART_IS_DEFINED(SAMDA1G16A) || \ + SAM_PART_IS_DEFINED(SAMDA1G16B) \ + ) + +#define SAMDA1E ( \ + SAM_PART_IS_DEFINED(SAMDA1E14A) || \ + SAM_PART_IS_DEFINED(SAMDA1E14B) || \ + SAM_PART_IS_DEFINED(SAMDA1E15A) || \ + SAM_PART_IS_DEFINED(SAMDA1E15B) || \ + SAM_PART_IS_DEFINED(SAMDA1E16A) || \ + SAM_PART_IS_DEFINED(SAMDA1E16B) \ + ) +/** @} */ + +/** + * \name SAMHA1 series + * @{ + */ +#define SAMHA1G ( \ + SAM_PART_IS_DEFINED(SAMHA1G14A) || \ + SAM_PART_IS_DEFINED(SAMHA1G15A) || \ + SAM_PART_IS_DEFINED(SAMHA1G16A) || \ + SAM_PART_IS_DEFINED(SAMHA1G14AB) || \ + SAM_PART_IS_DEFINED(SAMHA1G15AB) || \ + SAM_PART_IS_DEFINED(SAMHA1G16AB) \ + ) + +#define SAMHA1E ( \ + SAM_PART_IS_DEFINED(SAMHA1E14A) || \ + SAM_PART_IS_DEFINED(SAMHA1E15A) || \ + SAM_PART_IS_DEFINED(SAMHA1E16A) || \ + SAM_PART_IS_DEFINED(SAMHA1E14AB) || \ + SAM_PART_IS_DEFINED(SAMHA1E15AB) || \ + SAM_PART_IS_DEFINED(SAMHA1E16AB) \ + ) + +/** @} */ + +/** + * \name SAMHA0 series + * @{ + */ +#define SAMHA0G ( \ + SAM_PART_IS_DEFINED(SAMHA0G14AB) || \ + SAM_PART_IS_DEFINED(SAMHA0G15AB) || \ + SAM_PART_IS_DEFINED(SAMHA0G16AB) \ + ) + +#define SAMHA0E ( \ + SAM_PART_IS_DEFINED(SAMHA0E14AB) || \ + SAM_PART_IS_DEFINED(SAMHA0E15AB) || \ + SAM_PART_IS_DEFINED(SAMHA0E16AB) \ + ) + +/** @} */ + +/** + * \name SAMC20 series + * @{ + */ +#define SAMC20E ( \ + SAM_PART_IS_DEFINED(SAMC20E15A) || \ + SAM_PART_IS_DEFINED(SAMC20E16A) || \ + SAM_PART_IS_DEFINED(SAMC20E17A) || \ + SAM_PART_IS_DEFINED(SAMC20E18A) \ + ) + +#define SAMC20G ( \ + SAM_PART_IS_DEFINED(SAMC20G15A) || \ + SAM_PART_IS_DEFINED(SAMC20G16A) || \ + SAM_PART_IS_DEFINED(SAMC20G17A) || \ + SAM_PART_IS_DEFINED(SAMC20G18A) \ + ) + +#define SAMC20J ( \ + SAM_PART_IS_DEFINED(SAMC20J15A) || \ + SAM_PART_IS_DEFINED(SAMC20J16A) || \ + SAM_PART_IS_DEFINED(SAMC20J17A) || \ + SAM_PART_IS_DEFINED(SAMC20J18A) \ + ) +/** @} */ + +/** + * \name SAMC21 series + * @{ + */ +#define SAMC21E ( \ + SAM_PART_IS_DEFINED(SAMC21E15A) || \ + SAM_PART_IS_DEFINED(SAMC21E16A) || \ + SAM_PART_IS_DEFINED(SAMC21E17A) || \ + SAM_PART_IS_DEFINED(SAMC21E18A) \ + ) + +#define SAMC21G ( \ + SAM_PART_IS_DEFINED(SAMC21G15A) || \ + SAM_PART_IS_DEFINED(SAMC21G16A) || \ + SAM_PART_IS_DEFINED(SAMC21G17A) || \ + SAM_PART_IS_DEFINED(SAMC21G18A) \ + ) + +#define SAMC21J ( \ + SAM_PART_IS_DEFINED(SAMC21J15A) || \ + SAM_PART_IS_DEFINED(SAMC21J16A) || \ + SAM_PART_IS_DEFINED(SAMC21J17A) || \ + SAM_PART_IS_DEFINED(SAMC21J18A) \ + ) +/** @} */ + +/** + * \name SAM4E series + * @{ + */ +#define SAM4E8 ( \ + SAM_PART_IS_DEFINED(SAM4E8C) || \ + SAM_PART_IS_DEFINED(SAM4E8CB) || \ + SAM_PART_IS_DEFINED(SAM4E8E) \ + ) + +#define SAM4E16 ( \ + SAM_PART_IS_DEFINED(SAM4E16C) || \ + SAM_PART_IS_DEFINED(SAM4E16CB) || \ + SAM_PART_IS_DEFINED(SAM4E16E) \ + ) +/** @} */ + +/** + * \name SAM4N series + * @{ + */ +#define SAM4N8 ( \ + SAM_PART_IS_DEFINED(SAM4N8A) || \ + SAM_PART_IS_DEFINED(SAM4N8B) || \ + SAM_PART_IS_DEFINED(SAM4N8C) \ + ) + +#define SAM4N16 ( \ + SAM_PART_IS_DEFINED(SAM4N16B) || \ + SAM_PART_IS_DEFINED(SAM4N16C) \ + ) +/** @} */ + +/** + * \name SAM4C series + * @{ + */ +#define SAM4C4_0 ( \ + SAM_PART_IS_DEFINED(SAM4C4C_0) \ + ) + +#define SAM4C4_1 ( \ + SAM_PART_IS_DEFINED(SAM4C4C_1) \ + ) + +#define SAM4C4 (SAM4C4_0 || SAM4C4_1) + +#define SAM4C8_0 ( \ + SAM_PART_IS_DEFINED(SAM4C8C_0) \ + ) + +#define SAM4C8_1 ( \ + SAM_PART_IS_DEFINED(SAM4C8C_1) \ + ) + +#define SAM4C8 (SAM4C8_0 || SAM4C8_1) + +#define SAM4C16_0 ( \ + SAM_PART_IS_DEFINED(SAM4C16C_0) \ + ) + +#define SAM4C16_1 ( \ + SAM_PART_IS_DEFINED(SAM4C16C_1) \ + ) + +#define SAM4C16 (SAM4C16_0 || SAM4C16_1) + +#define SAM4C32_0 ( \ + SAM_PART_IS_DEFINED(SAM4C32C_0) ||\ + SAM_PART_IS_DEFINED(SAM4C32E_0) \ + ) + +#define SAM4C32_1 ( \ + SAM_PART_IS_DEFINED(SAM4C32C_1) ||\ + SAM_PART_IS_DEFINED(SAM4C32E_1) \ + ) + + +#define SAM4C32 (SAM4C32_0 || SAM4C32_1) + +/** @} */ + +/** + * \name SAM4CM series + * @{ + */ +#define SAM4CMP8_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMP8C_0) \ + ) + +#define SAM4CMP8_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMP8C_1) \ + ) + +#define SAM4CMP8 (SAM4CMP8_0 || SAM4CMP8_1) + +#define SAM4CMP16_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMP16C_0) \ + ) + +#define SAM4CMP16_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMP16C_1) \ + ) + +#define SAM4CMP16 (SAM4CMP16_0 || SAM4CMP16_1) + +#define SAM4CMP32_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMP32C_0) \ + ) + +#define SAM4CMP32_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMP32C_1) \ + ) + +#define SAM4CMP32 (SAM4CMP32_0 || SAM4CMP32_1) + +#define SAM4CMS4_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMS4C_0) \ + ) + +#define SAM4CMS4_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMS4C_1) \ + ) + +#define SAM4CMS4 (SAM4CMS4_0 || SAM4CMS4_1) + +#define SAM4CMS8_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMS8C_0) \ + ) + +#define SAM4CMS8_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMS8C_1) \ + ) + +#define SAM4CMS8 (SAM4CMS8_0 || SAM4CMS8_1) + +#define SAM4CMS16_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMS16C_0) \ + ) + +#define SAM4CMS16_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMS16C_1) \ + ) + +#define SAM4CMS16 (SAM4CMS16_0 || SAM4CMS16_1) + +#define SAM4CMS32_0 ( \ + SAM_PART_IS_DEFINED(SAM4CMS32C_0) \ + ) + +#define SAM4CMS32_1 ( \ + SAM_PART_IS_DEFINED(SAM4CMS32C_1) \ + ) + +#define SAM4CMS32 (SAM4CMS32_0 || SAM4CMS32_1) + +/** @} */ + +/** + * \name SAM4CP series + * @{ + */ +#define SAM4CP16_0 ( \ + SAM_PART_IS_DEFINED(SAM4CP16B_0) \ + ) + +#define SAM4CP16_1 ( \ + SAM_PART_IS_DEFINED(SAM4CP16B_1) \ + ) + +#define SAM4CP16 (SAM4CP16_0 || SAM4CP16_1) +/** @} */ + +/** + * \name SAMG series + * @{ + */ +#define SAMG51 ( \ + SAM_PART_IS_DEFINED(SAMG51G18) \ + ) + +#define SAMG53 ( \ + SAM_PART_IS_DEFINED(SAMG53G19) ||\ + SAM_PART_IS_DEFINED(SAMG53N19) \ + ) + +#define SAMG54 ( \ + SAM_PART_IS_DEFINED(SAMG54G19) ||\ + SAM_PART_IS_DEFINED(SAMG54J19) ||\ + SAM_PART_IS_DEFINED(SAMG54N19) \ + ) + +#define SAMG55 ( \ + SAM_PART_IS_DEFINED(SAMG55G18) ||\ + SAM_PART_IS_DEFINED(SAMG55G19) ||\ + SAM_PART_IS_DEFINED(SAMG55J18) ||\ + SAM_PART_IS_DEFINED(SAMG55J19) ||\ + SAM_PART_IS_DEFINED(SAMG55N19) \ + ) +/** @} */ + +/** + * \name SAMV71 series + * @{ + */ +#define SAMV71J ( \ + SAM_PART_IS_DEFINED(SAMV71J19) || \ + SAM_PART_IS_DEFINED(SAMV71J20) || \ + SAM_PART_IS_DEFINED(SAMV71J21) \ + ) + +#define SAMV71JB ( \ + SAM_PART_IS_DEFINED(SAMV71J19B) || \ + SAM_PART_IS_DEFINED(SAMV71J20B) || \ + SAM_PART_IS_DEFINED(SAMV71J21B) \ + ) + +#define SAMV71N ( \ + SAM_PART_IS_DEFINED(SAMV71N19) || \ + SAM_PART_IS_DEFINED(SAMV71N20) || \ + SAM_PART_IS_DEFINED(SAMV71N21) \ + ) + +#define SAMV71NB ( \ + SAM_PART_IS_DEFINED(SAMV71N19B) || \ + SAM_PART_IS_DEFINED(SAMV71N20B) || \ + SAM_PART_IS_DEFINED(SAMV71N21B) \ + ) + +#define SAMV71Q ( \ + SAM_PART_IS_DEFINED(SAMV71Q19) || \ + SAM_PART_IS_DEFINED(SAMV71Q20) || \ + SAM_PART_IS_DEFINED(SAMV71Q21) \ + ) + +#define SAMV71QB ( \ + SAM_PART_IS_DEFINED(SAMV71Q19B) || \ + SAM_PART_IS_DEFINED(SAMV71Q20B) || \ + SAM_PART_IS_DEFINED(SAMV71Q21B) \ + ) + +/** @} */ + +/** + * \name SAMV70 series + * @{ + */ +#define SAMV70J ( \ + SAM_PART_IS_DEFINED(SAMV70J19) || \ + SAM_PART_IS_DEFINED(SAMV70J20) \ + ) + +#define SAMV70JB ( \ + SAM_PART_IS_DEFINED(SAMV70J19B) || \ + SAM_PART_IS_DEFINED(SAMV70J20B) \ + ) + +#define SAMV70N ( \ + SAM_PART_IS_DEFINED(SAMV70N19) || \ + SAM_PART_IS_DEFINED(SAMV70N20) \ + ) + +#define SAMV70NB ( \ + SAM_PART_IS_DEFINED(SAMV70N19B) || \ + SAM_PART_IS_DEFINED(SAMV70N20B) \ + ) + +#define SAMV70Q ( \ + SAM_PART_IS_DEFINED(SAMV70Q19) || \ + SAM_PART_IS_DEFINED(SAMV70Q20) \ + ) +#define SAMV70QB ( \ + SAM_PART_IS_DEFINED(SAMV70Q19B) || \ + SAM_PART_IS_DEFINED(SAMV70Q20B) \ + ) +/** @} */ + +/** + * \name SAMS70 series + * @{ + */ +#define SAMS70J ( \ + SAM_PART_IS_DEFINED(SAMS70J19) || \ + SAM_PART_IS_DEFINED(SAMS70J20) || \ + SAM_PART_IS_DEFINED(SAMS70J21) \ + ) + +#define SAMS70JB ( \ + SAM_PART_IS_DEFINED(SAMS70J19B) || \ + SAM_PART_IS_DEFINED(SAMS70J20B) || \ + SAM_PART_IS_DEFINED(SAMS70J21B) \ + ) + +#define SAMS70N ( \ + SAM_PART_IS_DEFINED(SAMS70N19) || \ + SAM_PART_IS_DEFINED(SAMS70N20) || \ + SAM_PART_IS_DEFINED(SAMS70N21) \ + ) + +#define SAMS70NB ( \ + SAM_PART_IS_DEFINED(SAMS70N19B) || \ + SAM_PART_IS_DEFINED(SAMS70N20B) || \ + SAM_PART_IS_DEFINED(SAMS70N21B) \ + ) + +#define SAMS70Q ( \ + SAM_PART_IS_DEFINED(SAMS70Q19) || \ + SAM_PART_IS_DEFINED(SAMS70Q20) || \ + SAM_PART_IS_DEFINED(SAMS70Q21) \ + ) + +#define SAMS70QB ( \ + SAM_PART_IS_DEFINED(SAMS70Q19B) || \ + SAM_PART_IS_DEFINED(SAMS70Q20B) || \ + SAM_PART_IS_DEFINED(SAMS70Q21B) \ + ) +/** @} */ + +/** + * \name SAME70 series + * @{ + */ +#define SAME70J ( \ + SAM_PART_IS_DEFINED(SAME70J19) || \ + SAM_PART_IS_DEFINED(SAME70J20) || \ + SAM_PART_IS_DEFINED(SAME70J21) \ + ) + +#define SAME70JB ( \ + SAM_PART_IS_DEFINED(SAME70J19B) || \ + SAM_PART_IS_DEFINED(SAME70J20B) || \ + SAM_PART_IS_DEFINED(SAME70J21B) \ + ) + +#define SAME70N ( \ + SAM_PART_IS_DEFINED(SAME70N19) || \ + SAM_PART_IS_DEFINED(SAME70N20) || \ + SAM_PART_IS_DEFINED(SAME70N21) \ + ) + +#define SAME70NB ( \ + SAM_PART_IS_DEFINED(SAME70N19B) || \ + SAM_PART_IS_DEFINED(SAME70N20B) || \ + SAM_PART_IS_DEFINED(SAME70N21B) \ + ) + +#define SAME70Q ( \ + SAM_PART_IS_DEFINED(SAME70Q19) || \ + SAM_PART_IS_DEFINED(SAME70Q20) || \ + SAM_PART_IS_DEFINED(SAME70Q21) \ + ) + +#define SAME70QB ( \ + SAM_PART_IS_DEFINED(SAME70Q19B) || \ + SAM_PART_IS_DEFINED(SAME70Q20B) || \ + SAM_PART_IS_DEFINED(SAME70Q21B) \ + ) +/** @} */ + +/** + * \name SAM families + * @{ + */ +/** SAM3S Family */ +#define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8) + +/** SAM3U Family */ +#define SAM3U (SAM3U1 || SAM3U2 || SAM3U4) + +/** SAM3N Family */ +#define SAM3N (SAM3N00 || SAM3N0 || SAM3N1 || SAM3N2 || SAM3N4) + +/** SAM3XA Family */ +#define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8) + +/** SAM4S Family */ +#define SAM4S (SAM4S2 || SAM4S4 || SAM4S8 || SAM4S16 || SAM4SA16 || SAM4SD16 || SAM4SD32) + +/** SAM4L Family */ +#define SAM4L (SAM4LS || SAM4LC) + +/** SAMD20 Family */ +#define SAMD20 (SAMD20J || SAMD20G || SAMD20E) + +/** SAMD21 Family */ +#define SAMD21 (SAMD21J || SAMD21G || SAMD21E) + +/** SAMD09 Family */ +#define SAMD09 (SAMD09C || SAMD09D) + +/** SAMD10 Family */ +#define SAMD10 (SAMD10C || SAMD10DS || SAMD10DM || SAMD10DU) + +/** SAMD11 Family */ +#define SAMD11 (SAMD11C || SAMD11DS || SAMD11DM || SAMD11DU) + +/** SAMDA1 Family */ +#define SAMDA1 (SAMDA1J || SAMDA1G || SAMDA1E) + +/** SAMHA1 Family */ +#define SAMHA1 (SAMHA1G || SAMHA1E) + +/** SAMHA0 Family */ +#define SAMHA0 (SAMHA0G || SAMHA0E) + +/** SAMD Family */ +#define SAMD (SAMD20 || SAMD21 || SAMD09 || SAMD10 || SAMD11 || SAMDA1) + +/** SAMR21 Family */ +#define SAMR21 (SAMR21G || SAMR21E) + +/** SAMR30 Family */ +#define SAMR30 (SAMR30G || SAMR30E) + +/** SAMR34 Family */ +#define SAMR34 (SAMR34J) + +/** SAMR35 Family */ +#define SAMR35 (SAMR35J) + +/** SAMR35 Family */ +#define WLR089 (WLR089U) + +/** SAMB11 Family */ +#define SAMB11 (SAMB11G || BTLC1000) + +/** SAML21 Family */ +#define SAML21 (SAML21J || SAML21G || SAML21E) + +/** SAML22 Family */ +#define SAML22 (SAML22J || SAML22G || SAML22N) +/** SAMC20 Family */ +#define SAMC20 (SAMC20J || SAMC20G || SAMC20E) + +/** SAMC21 Family */ +#define SAMC21 (SAMC21J || SAMC21G || SAMC21E) + +/** SAM4E Family */ +#define SAM4E (SAM4E8 || SAM4E16) + +/** SAM4N Family */ +#define SAM4N (SAM4N8 || SAM4N16) + +/** SAM4C Family */ +#define SAM4C_0 (SAM4C4_0 || SAM4C8_0 || SAM4C16_0 || SAM4C32_0) +#define SAM4C_1 (SAM4C4_1 || SAM4C8_1 || SAM4C16_1 || SAM4C32_1) +#define SAM4C (SAM4C4 || SAM4C8 || SAM4C16 || SAM4C32) + +/** SAM4CM Family */ +#define SAM4CM_0 (SAM4CMP8_0 || SAM4CMP16_0 || SAM4CMP32_0 || \ + SAM4CMS4_0 || SAM4CMS8_0 || SAM4CMS16_0 || SAM4CMS32_0) +#define SAM4CM_1 (SAM4CMP8_1 || SAM4CMP16_1 || SAM4CMP32_1 || \ + SAM4CMS4_1 || SAM4CMS8_1 || SAM4CMS16_1 || SAM4CMS32_1) +#define SAM4CM (SAM4CMP8 || SAM4CMP16 || SAM4CMP32 || \ + SAM4CMS4 || SAM4CMS8 || SAM4CMS16 || SAM4CMS32) + +/** SAM4CP Family */ +#define SAM4CP_0 (SAM4CP16_0) +#define SAM4CP_1 (SAM4CP16_1) +#define SAM4CP (SAM4CP16) + +/** SAMG Family */ +#define SAMG (SAMG51 || SAMG53 || SAMG54 || SAMG55) + +/** SAMB Family */ +#define SAMB (SAMB11) + +/** SAMV71 Family */ +#define SAMV71 (SAMV71J || SAMV71N || SAMV71Q || SAMV71JB || SAMV71NB || SAMV71QB) +#define SAMV71B (SAMV71JB || SAMV71NB || SAMV71QB) + +/** SAMV70 Family */ +#define SAMV70 (SAMV70J || SAMV70N || SAMV70Q || SAMV70JB || SAMV70NB || SAMV70QB) +#define SAMV70B (SAMV70JB || SAMV70NB || SAMV70QB) + +/** SAME70 Family */ +#define SAME70 (SAME70J || SAME70N || SAME70Q || SAME70JB || SAME70NB || SAME70QB) +#define SAME70B (SAME70JB || SAME70NB || SAME70QB) + +/** SAMS70 Family */ +#define SAMS70 (SAMS70J || SAMS70N || SAMS70Q || SAMS70JB || SAMS70NB || SAMS70QB) +#define SAMS70B (SAMS70JB || SAMS70NB || SAMS70QB) + +/** SAM0 product line (cortex-m0+) */ +#define SAM0 (SAMD20 || SAMD21 || SAMR21 || SAMD10 || SAMD11 || SAML21 ||\ + SAMDA1 || SAMC20 || SAMC21 || SAML22 || SAMD09 || SAMR30 || SAMHA1 ||\ + SAMHA0 || SAMR34 || SAMR35 || WLR089) + +/** @} */ + +/** SAM product line */ +#define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4L || SAM4E || \ + SAM0 || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG || SAMV71 || SAMV70 || SAME70 || SAMS70) + +/** @} */ + +/** @} */ + +/** @} */ + +#endif /* ATMEL_PARTS_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c new file mode 100644 index 00000000..3812bd75 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c @@ -0,0 +1,164 @@ +/** + * \file + * + * \brief System-specific implementation of the \ref _read function used by + * the standard library. + * + * Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "compiler.h" + +/** + * \defgroup group_common_utils_stdio Standard I/O (stdio) + * + * Common standard I/O driver that implements the stdio + * read and write functions on AVR and SAM devices. + * + * \{ + */ + +extern volatile void *volatile stdio_base; +void (*ptr_get)(void volatile*, char*); + + +// IAR common implementation +#if ( defined(__ICCAVR32__) || defined(__ICCAVR__) || defined(__ICCARM__) ) + +#include + +#if (__VER__ < 8010000) +// Refer http://ftp.iar.se/WWWfiles/arm/webic/doc/EWARM_MigrationGuide.ENU.pdf +_STD_BEGIN +#endif + + +#pragma module_name = "?__read" + +/*! \brief Reads a number of bytes, at most \a size, into the memory area + * pointed to by \a buffer. + * + * \param handle File handle to read from. + * \param buffer Pointer to buffer to write read bytes to. + * \param size Number of bytes to read. + * + * \return The number of bytes read, \c 0 at the end of the file, or + * \c _LLIO_ERROR on failure. + */ +size_t __read(int handle, unsigned char *buffer, size_t size) +{ + int nChars = 0; + // This implementation only reads from stdin. + // For all other file handles, it returns failure. + if (handle != _LLIO_STDIN) { + return _LLIO_ERROR; + } + for (; size > 0; --size) { + ptr_get(stdio_base, (char*)buffer); + buffer++; + nChars++; + } + return nChars; +} + +/*! \brief This routine is required by IAR DLIB library since EWAVR V6.10 + * the implementation is empty to be compatible with old IAR version. + */ +int __close(int handle) +{ + UNUSED(handle); + return 0; +} + +/*! \brief This routine is required by IAR DLIB library since EWAVR V6.10 + * the implementation is empty to be compatible with old IAR version. + */ +int remove(const char* val) +{ + UNUSED(val); + return 0; +} + +/*! \brief This routine is required by IAR DLIB library since EWAVR V6.10 + * the implementation is empty to be compatible with old IAR version. + */ +long __lseek(int handle, long val, int val2) +{ + UNUSED(handle); + UNUSED(val2); + return val; +} + +#if (__VER__ < 8010000) +// Refer http://ftp.iar.se/WWWfiles/arm/webic/doc/EWARM_MigrationGuide.ENU.pdf +_STD_END +#endif + +// GCC AVR32 and SAM implementation +#elif (defined(__GNUC__) && !XMEGA && !MEGA) + +int __attribute__((weak)) +_read (int file, char * ptr, int len); // Remove GCC compiler warning + +int __attribute__((weak)) +_read (int file, char * ptr, int len) +{ + int nChars = 0; + + if (file != 0) { + return -1; + } + + for (; len > 0; --len) { + ptr_get(stdio_base, ptr); + ptr++; + nChars++; + } + return nChars; +} + +// GCC AVR implementation +#elif (defined(__GNUC__) && (XMEGA || MEGA) ) + +int _read (int *f); // Remove GCC compiler warning + +int _read (int *f) +{ + char c; + ptr_get(stdio_base,&c); + return c; +} +#endif + +/** + * \} + */ + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h new file mode 100644 index 00000000..86aeadd5 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h @@ -0,0 +1,119 @@ +/** + * + * \file + * + * \brief Common Standard I/O Serial Management. + * + * This file defines a useful set of functions for the Stdio Serial interface on AVR + * and SAM devices. + * + * Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + ******************************************************************************/ +/* + * Support and FAQ: visit Microchip Support + */ + + +#ifndef _STDIO_SERIAL_H_ +#define _STDIO_SERIAL_H_ + +/** + * \defgroup group_common_utils_stdio_stdio_serial Standard serial I/O (stdio) + * \ingroup group_common_utils_stdio + * + * Common standard serial I/O management driver that + * implements a stdio serial interface on AVR and SAM devices. + * + * \{ + */ + +#include +#include "compiler.h" +#ifndef SAMD20 +# include "sysclk.h" +#endif +#include "serial.h" + +#if (XMEGA || MEGA_RF) && defined(__GNUC__) + extern int _write (char c, int *f); + extern int _read (int *f); +#endif + + +//! Pointer to the base of the USART module instance to use for stdio. +extern volatile void *volatile stdio_base; +//! Pointer to the external low level write function. +extern int (*ptr_put)(void volatile*, char); + +//! Pointer to the external low level read function. +extern void (*ptr_get)(void volatile*, char*); + +/*! \brief Initializes the stdio in Serial Mode. + * + * \param usart Base address of the USART instance. + * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). + * + */ +static inline void stdio_serial_init(volatile void *usart, const usart_serial_options_t *opt) +{ + stdio_base = (void *)usart; + ptr_put = (int (*)(void volatile*,char))&usart_serial_putchar; + ptr_get = (void (*)(void volatile*,char*))&usart_serial_getchar; +# if (XMEGA || MEGA_RF) + usart_serial_init((USART_t *)usart,opt); +# elif UC3 + usart_serial_init(usart,(usart_serial_options_t *)opt); +# elif SAM + usart_serial_init((Usart *)usart,(usart_serial_options_t *)opt); +# else +# error Unsupported chip type +# endif + +# if defined(__GNUC__) +# if (XMEGA || MEGA_RF) + // For AVR GCC libc print redirection uses fdevopen. + fdevopen((int (*)(char, FILE*))(_write),(int (*)(FILE*))(_read)); +# endif +# if UC3 || SAM + // For AVR32 and SAM GCC + // Specify that stdout and stdin should not be buffered. + setbuf(stdout, NULL); + setbuf(stdin, NULL); + // Note: Already the case in IAR's Normal DLIB default configuration + // and AVR GCC library: + // - printf() emits one character at a time. + // - getchar() requests only 1 byte to exit. +# endif +# endif +} + +/** + * \} + */ + +#endif // _STDIO_SERIAL_H_ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c new file mode 100644 index 00000000..3765ed05 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c @@ -0,0 +1,143 @@ +/** + * \file + * + * \brief System-specific implementation of the \ref _write function used by + * the standard library. + * + * Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "compiler.h" + +/** + * \addtogroup group_common_utils_stdio + * + * \{ + */ + +volatile void *volatile stdio_base; +int (*ptr_put)(void volatile*, char); + + +#if ( defined(__ICCAVR32__) || defined(__ICCAVR__) || defined(__ICCARM__)) + +#include + +#if (__VER__ < 8010000) +// Refer http://ftp.iar.se/WWWfiles/arm/webic/doc/EWARM_MigrationGuide.ENU.pdf +_STD_BEGIN +#endif + +#pragma module_name = "?__write" + +/*! \brief Writes a number of bytes, at most \a size, from the memory area + * pointed to by \a buffer. + * + * If \a buffer is zero then \ref __write performs flushing of internal buffers, + * if any. In this case, \a handle can be \c -1 to indicate that all handles + * should be flushed. + * + * \param handle File handle to write to. + * \param buffer Pointer to buffer to read bytes to write from. + * \param size Number of bytes to write. + * + * \return The number of bytes written, or \c _LLIO_ERROR on failure. + */ +size_t __write(int handle, const unsigned char *buffer, size_t size) +{ + size_t nChars = 0; + + if (buffer == 0) { + // This means that we should flush internal buffers. + return 0; + } + + // This implementation only writes to stdout and stderr. + // For all other file handles, it returns failure. + if (handle != _LLIO_STDOUT && handle != _LLIO_STDERR) { + return _LLIO_ERROR; + } + + for (; size != 0; --size) { + if (ptr_put(stdio_base, *buffer++) < 0) { + return _LLIO_ERROR; + } + ++nChars; + } + return nChars; +} + +#if (__VER__ < 8010000) +// Refer http://ftp.iar.se/WWWfiles/arm/webic/doc/EWARM_MigrationGuide.ENU.pdf +_STD_END +#endif + + +#elif (defined(__GNUC__) && !XMEGA && !MEGA) + +int __attribute__((weak)) +_write (int file, const char *ptr, int len); + +int __attribute__((weak)) +_write (int file, const char *ptr, int len) +{ + int nChars = 0; + + if ((file != 1) && (file != 2) && (file!=3)) { + return -1; + } + + for (; len != 0; --len) { + if (ptr_put(stdio_base, *ptr++) < 0) { + return -1; + } + ++nChars; + } + return nChars; +} + +#elif (defined(__GNUC__) && (XMEGA || MEGA)) + +int _write (char c, int *f); + +int _write (char c, int *f) +{ + if (ptr_put(stdio_base, c) < 0) { + return -1; + } + return 1; +} +#endif + +/** + * \} + */ + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c new file mode 100644 index 00000000..d4e4c655 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c @@ -0,0 +1,600 @@ +/** + * \file + * + * \brief SAME70-XPLD board init. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "compiler.h" +#include "board.h" +#include "conf_board.h" +#include "ioport.h" +#include "pio.h" +#ifdef CONF_BOARD_CONFIG_MPU_AT_INIT +#include "mpu.h" +#endif + +/** + * \brief Set peripheral mode for IOPORT pins. + * It will configure port mode and disable pin mode (but enable peripheral). + * \param port IOPORT port to configure + * \param masks IOPORT pin masks to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + */ +#define ioport_set_port_peripheral_mode(port, masks, mode) \ + do {\ + ioport_set_port_mode(port, masks, mode);\ + ioport_disable_port(port, masks);\ + } while (0) + +/** + * \brief Set peripheral mode for one single IOPORT pin. + * It will configure port mode and disable pin mode (but enable peripheral). + * \param pin IOPORT pin to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + */ +#define ioport_set_pin_peripheral_mode(pin, mode) \ + do {\ + ioport_set_pin_mode(pin, mode);\ + ioport_disable_pin(pin);\ + } while (0) + +/** + * \brief Set input mode for one single IOPORT pin. + * It will configure port mode and disable pin mode (but enable peripheral). + * \param pin IOPORT pin to configure + * \param mode Mode masks to configure for the specified pin (\ref ioport_modes) + * \param sense Sense for interrupt detection (\ref ioport_sense) + */ +#define ioport_set_pin_input_mode(pin, mode, sense) \ + do {\ + ioport_set_pin_dir(pin, IOPORT_DIR_INPUT);\ + ioport_set_pin_mode(pin, mode);\ + ioport_set_pin_sense_mode(pin, sense);\ + } while (0) + + +#ifdef CONF_BOARD_CONFIG_MPU_AT_INIT +/** + * Default memory map + * Address range Memory region Memory type Shareability Cache policy + * 0x00000000- 0x1FFFFFFF Code Normal Non-shareable WT + * 0x20000000- 0x3FFFFFFF SRAM Normal Non-shareable WBWA + * 0x40000000- 0x5FFFFFFF Peripheral Device Non-shareable - + * 0x60000000- 0x7FFFFFFF RAM Normal Non-shareable WBWA + * 0x80000000- 0x9FFFFFFF RAM Normal Non-shareable WT + * 0xA0000000- 0xBFFFFFFF Device Device Shareable + * 0xC0000000- 0xDFFFFFFF Device Device Non Shareable + * 0xE0000000- 0xFFFFFFFF System - - + */ + +/** + * \brief Set up a memory region. + */ +static void _setup_memory_region( void ) +{ + + uint32_t dw_region_base_addr; + uint32_t dw_region_attr; + + __DMB(); + +/** + * ITCM memory region --- Normal + * START_Addr:- 0x00000000UL + * END_Addr:- 0x00400000UL + */ + dw_region_base_addr = + ITCM_START_ADDRESS | + MPU_REGION_VALID | + MPU_DEFAULT_ITCM_REGION; + + dw_region_attr = + MPU_AP_PRIVILEGED_READ_WRITE | + mpu_cal_mpu_region_size(ITCM_END_ADDRESS - ITCM_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + +/** + * Internal flash memory region --- Normal read-only + * (update to Strongly ordered in write accesses) + * START_Addr:- 0x00400000UL + * END_Addr:- 0x00600000UL + */ + + dw_region_base_addr = + IFLASH_START_ADDRESS | + MPU_REGION_VALID | + MPU_DEFAULT_IFLASH_REGION; + + dw_region_attr = + MPU_AP_READONLY | + INNER_NORMAL_WB_NWA_TYPE( NON_SHAREABLE ) | + mpu_cal_mpu_region_size(IFLASH_END_ADDRESS - IFLASH_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + +/** + * DTCM memory region --- Normal + * START_Addr:- 0x20000000L + * END_Addr:- 0x20400000UL + */ + + /* DTCM memory region */ + dw_region_base_addr = + DTCM_START_ADDRESS | + MPU_REGION_VALID | + MPU_DEFAULT_DTCM_REGION; + + dw_region_attr = + MPU_AP_PRIVILEGED_READ_WRITE | + mpu_cal_mpu_region_size(DTCM_END_ADDRESS - DTCM_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + +/** + * SRAM Cacheable memory region --- Normal + * START_Addr:- 0x20400000UL + * END_Addr:- 0x2043FFFFUL + */ + /* SRAM memory region */ + dw_region_base_addr = + SRAM_FIRST_START_ADDRESS | + MPU_REGION_VALID | + MPU_DEFAULT_SRAM_REGION_1; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + INNER_NORMAL_WB_NWA_TYPE( NON_SHAREABLE ) | + mpu_cal_mpu_region_size(SRAM_FIRST_END_ADDRESS - SRAM_FIRST_START_ADDRESS) + | MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + + +/** + * Internal SRAM second partition memory region --- Normal + * START_Addr:- 0x20440000UL + * END_Addr:- 0x2045FFFFUL + */ + /* SRAM memory region */ + dw_region_base_addr = + SRAM_SECOND_START_ADDRESS | + MPU_REGION_VALID | + MPU_DEFAULT_SRAM_REGION_2; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + INNER_NORMAL_WB_NWA_TYPE( NON_SHAREABLE ) | + mpu_cal_mpu_region_size(SRAM_SECOND_END_ADDRESS - SRAM_SECOND_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + +#ifdef MPU_HAS_NOCACHE_REGION + dw_region_base_addr = + SRAM_NOCACHE_START_ADDRESS | + MPU_REGION_VALID | + MPU_NOCACHE_SRAM_REGION; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + INNER_OUTER_NORMAL_NOCACHE_TYPE( SHAREABLE ) | + mpu_cal_mpu_region_size(NOCACHE_SRAM_REGION_SIZE) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); +#endif + +/** + * Peripheral memory region --- DEVICE Shareable + * START_Addr:- 0x40000000UL + * END_Addr:- 0x5FFFFFFFUL + */ + dw_region_base_addr = + PERIPHERALS_START_ADDRESS | + MPU_REGION_VALID | + MPU_PERIPHERALS_REGION; + + dw_region_attr = MPU_AP_FULL_ACCESS | + MPU_REGION_EXECUTE_NEVER | + SHAREABLE_DEVICE_TYPE | + mpu_cal_mpu_region_size(PERIPHERALS_END_ADDRESS - PERIPHERALS_START_ADDRESS) + |MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + + +/** + * External EBI memory memory region --- Strongly Ordered + * START_Addr:- 0x60000000UL + * END_Addr:- 0x6FFFFFFFUL + */ + dw_region_base_addr = + EXT_EBI_START_ADDRESS | + MPU_REGION_VALID | + MPU_EXT_EBI_REGION; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + /* External memory Must be defined with 'Device' or 'Strongly Ordered' attribute for write accesses (AXI) */ + STRONGLY_ORDERED_SHAREABLE_TYPE | + mpu_cal_mpu_region_size(EXT_EBI_END_ADDRESS - EXT_EBI_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + +/** + * SDRAM cacheable memory region --- Normal + * START_Addr:- 0x70000000UL + * END_Addr:- 0x7FFFFFFFUL + */ + dw_region_base_addr = + SDRAM_START_ADDRESS | + MPU_REGION_VALID | + MPU_DEFAULT_SDRAM_REGION; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + INNER_NORMAL_WB_RWA_TYPE( SHAREABLE ) | + mpu_cal_mpu_region_size(SDRAM_END_ADDRESS - SDRAM_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + +/** + * QSPI memory region --- Strongly ordered + * START_Addr:- 0x80000000UL + * END_Addr:- 0x9FFFFFFFUL + */ + dw_region_base_addr = + QSPI_START_ADDRESS | + MPU_REGION_VALID | + MPU_QSPIMEM_REGION; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + STRONGLY_ORDERED_SHAREABLE_TYPE | + mpu_cal_mpu_region_size(QSPI_END_ADDRESS - QSPI_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + + +/** + * USB RAM Memory region --- Device + * START_Addr:- 0xA0100000UL + * END_Addr:- 0xA01FFFFFUL + */ + dw_region_base_addr = + USBHSRAM_START_ADDRESS | + MPU_REGION_VALID | + MPU_USBHSRAM_REGION; + + dw_region_attr = + MPU_AP_FULL_ACCESS | + MPU_REGION_EXECUTE_NEVER | + SHAREABLE_DEVICE_TYPE | + mpu_cal_mpu_region_size(USBHSRAM_END_ADDRESS - USBHSRAM_START_ADDRESS) | + MPU_REGION_ENABLE; + + mpu_set_region( dw_region_base_addr, dw_region_attr); + + + /* Enable the memory management fault , Bus Fault, Usage Fault exception */ + SCB->SHCSR |= (SCB_SHCSR_MEMFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk + | SCB_SHCSR_USGFAULTENA_Msk); + + /* Enable the MPU region */ + mpu_enable( MPU_ENABLE | MPU_PRIVDEFENA); + + __DSB(); + __ISB(); +} +#endif + +#ifdef CONF_BOARD_ENABLE_TCM_AT_INIT +#if defined(__GNUC__) +extern char _itcm_lma, _sitcm, _eitcm; +#endif + +/** \brief TCM memory enable +* The function enables TCM memories +*/ +static inline void tcm_enable(void) +{ + + __DSB(); + __ISB(); + + SCB->ITCMCR = (SCB_ITCMCR_EN_Msk | SCB_ITCMCR_RMW_Msk | SCB_ITCMCR_RETEN_Msk); + SCB->DTCMCR = ( SCB_DTCMCR_EN_Msk | SCB_DTCMCR_RMW_Msk | SCB_DTCMCR_RETEN_Msk); + + __DSB(); + __ISB(); +} +#else +/** \brief TCM memory Disable + + The function enables TCM memories + */ +static inline void tcm_disable(void) +{ + + __DSB(); + __ISB(); + SCB->ITCMCR &= ~(uint32_t)(1UL); + SCB->DTCMCR &= ~(uint32_t)SCB_DTCMCR_EN_Msk; + __DSB(); + __ISB(); +} +#endif + +void board_init(void) +{ +#ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT + /* Disable the watchdog */ + WDT->WDT_MR = WDT_MR_WDDIS; +#endif + +#ifdef CONF_BOARD_CONFIG_MPU_AT_INIT + _setup_memory_region(); +#endif + +#ifdef CONF_BOARD_ENABLE_CACHE + /* Enabling the Cache */ + SCB_EnableICache(); + SCB_EnableDCache(); +#endif + +#ifdef CONF_BOARD_ENABLE_TCM_AT_INIT + /* TCM Configuration */ + EFC->EEFC_FCR = (EEFC_FCR_FKEY_PASSWD | EEFC_FCR_FCMD_CGPB + | EEFC_FCR_FARG(8)); + EFC->EEFC_FCR = (EEFC_FCR_FKEY_PASSWD | EEFC_FCR_FCMD_SGPB + | EEFC_FCR_FARG(7)); + tcm_enable(); +#if defined(__GNUC__) + volatile char *dst = &_sitcm; + volatile char *src = &_itcm_lma; + /* copy code_TCM from flash to ITCM */ + while(dst < &_eitcm){ + *dst++ = *src++; + } +#endif +#else + /* TCM Configuration */ + EFC->EEFC_FCR = (EEFC_FCR_FKEY_PASSWD | EEFC_FCR_FCMD_CGPB + | EEFC_FCR_FARG(8)); + EFC->EEFC_FCR = (EEFC_FCR_FKEY_PASSWD | EEFC_FCR_FCMD_CGPB + | EEFC_FCR_FARG(7)); + + tcm_disable(); +#endif + + /* Initialize IOPORTs */ + ioport_init(); + + /* Configure the pins connected to LED as output and set their + * default initial state to high (LED off). + */ + ioport_set_pin_dir(LED0_GPIO, IOPORT_DIR_OUTPUT); + ioport_set_pin_level(LED0_GPIO, LED0_INACTIVE_LEVEL); + + /* Configure Push Button pins */ + ioport_set_pin_input_mode(GPIO_PUSH_BUTTON_1, GPIO_PUSH_BUTTON_1_FLAGS, + GPIO_PUSH_BUTTON_1_SENSE); + +#ifdef CONF_BOARD_UART_CONSOLE + /* Configure UART pins */ + ioport_set_pin_peripheral_mode(USART1_RXD_GPIO, USART1_RXD_FLAGS); + MATRIX->CCFG_SYSIO |= CCFG_SYSIO_SYSIO4; + ioport_set_pin_peripheral_mode(USART1_TXD_GPIO, USART1_TXD_FLAGS); +#endif + +#ifdef CONF_BOARD_TWIHS0 + ioport_set_pin_peripheral_mode(TWIHS0_DATA_GPIO, TWIHS0_DATA_FLAGS); + ioport_set_pin_peripheral_mode(TWIHS0_CLK_GPIO, TWIHS0_CLK_FLAGS); +#endif + + +#ifdef CONF_BOARD_CAN0 + /* Configure the CAN0 TX and RX pins. */ + ioport_set_pin_peripheral_mode(PIN_CAN0_RX_IDX, PIN_CAN0_RX_FLAGS); + ioport_set_pin_peripheral_mode(PIN_CAN0_TX_IDX, PIN_CAN0_TX_FLAGS); + /* Configure the transiver0 RS & EN pins. */ + ioport_set_pin_dir(PIN_CAN0_TR_RS_IDX, IOPORT_DIR_OUTPUT); + ioport_set_pin_dir(PIN_CAN0_TR_EN_IDX, IOPORT_DIR_OUTPUT); +#endif + +#ifdef CONF_BOARD_CAN1 + /* Configure the CAN1 TX and RX pin. */ + ioport_set_pin_peripheral_mode(PIN_CAN1_RX_IDX, PIN_CAN1_RX_FLAGS); + ioport_set_pin_peripheral_mode(PIN_CAN1_TX_IDX, PIN_CAN1_TX_FLAGS); + +#endif + + +#ifdef CONF_BOARD_SPI + ioport_set_pin_peripheral_mode(SPI0_MISO_GPIO, SPI0_MISO_FLAGS); + ioport_set_pin_peripheral_mode(SPI0_MOSI_GPIO, SPI0_MOSI_FLAGS); + ioport_set_pin_peripheral_mode(SPI0_SPCK_GPIO, SPI0_SPCK_FLAGS); + +#ifdef CONF_BOARD_SPI_NPCS0 + ioport_set_pin_peripheral_mode(SPI0_NPCS0_GPIO, SPI0_NPCS0_FLAGS); +#endif + +#ifdef CONF_BOARD_SPI_NPCS1 + ioport_set_pin_peripheral_mode(SPI0_NPCS1_GPIO, SPI0_NPCS1_FLAGS); +#endif + +#endif + +#ifdef CONF_BOARD_QSPI + ioport_set_pin_peripheral_mode(QSPI_QSCK_GPIO, QSPI_QSCK_FLAGS); + ioport_set_pin_peripheral_mode(QSPI_QCS_GPIO, QSPI_QCS_FLAGS); + ioport_set_pin_peripheral_mode(QSPI_QIO0_GPIO, QSPI_QIO0_FLAGS); + ioport_set_pin_peripheral_mode(QSPI_QIO1_GPIO, QSPI_QIO1_FLAGS); + ioport_set_pin_peripheral_mode(QSPI_QIO2_GPIO, QSPI_QIO2_FLAGS); + ioport_set_pin_peripheral_mode(QSPI_QIO3_GPIO, QSPI_QIO3_FLAGS); +#endif + +#ifdef CONF_BOARD_PWM_LED0 + /* Configure PWM LED0 pin */ + ioport_set_pin_peripheral_mode(PIN_PWM_LED0_GPIO, PIN_PWM_LED0_FLAGS); +#endif + +#ifdef CONF_BOARD_PWM_LED1 + /* Configure PWM LED1 pin */ + ioport_set_pin_peripheral_mode(PIN_PWM_LED1_GPIO, PIN_PWM_LED1_FLAGS); +#endif + + +#ifdef CONF_BOARD_USART_RXD + /* Configure USART RXD pin */ + ioport_set_pin_peripheral_mode(USART0_RXD_GPIO, USART0_RXD_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_TXD + /* Configure USART TXD pin */ + ioport_set_pin_peripheral_mode(USART0_TXD_GPIO, USART0_TXD_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_SCK + /* Configure USART synchronous communication SCK pin */ + ioport_set_pin_peripheral_mode(PIN_USART0_SCK_IDX,PIN_USART0_SCK_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_CTS + /* Configure USART synchronous communication CTS pin */ + ioport_set_pin_peripheral_mode(PIN_USART0_CTS_IDX,PIN_USART0_CTS_FLAGS); +#endif + +#ifdef CONF_BOARD_USART_RTS + /* Configure USART RTS pin */ + ioport_set_pin_peripheral_mode(PIN_USART0_RTS_IDX, PIN_USART0_RTS_FLAGS); +#endif + +#ifdef CONF_BOARD_SD_MMC_HSMCI + /* Configure HSMCI pins */ + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCCDA_GPIO, PIN_HSMCI_MCCDA_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCCK_GPIO, PIN_HSMCI_MCCK_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA0_GPIO, PIN_HSMCI_MCDA0_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA1_GPIO, PIN_HSMCI_MCDA1_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA2_GPIO, PIN_HSMCI_MCDA2_FLAGS); + ioport_set_pin_peripheral_mode(PIN_HSMCI_MCDA3_GPIO, PIN_HSMCI_MCDA3_FLAGS); + + /* Configure SD/MMC card detect pin */ + ioport_set_pin_dir(SD_MMC_0_CD_GPIO, IOPORT_DIR_INPUT); + ioport_set_pin_mode(SD_MMC_0_CD_GPIO, SD_MMC_0_CD_FLAGS); +#endif + +#ifdef CONF_BOARD_ILI9488 + /**LCD pin configure on EBI*/ + pio_configure(PIN_EBI_RESET_PIO, PIN_EBI_RESET_TYPE, PIN_EBI_RESET_MASK, PIN_EBI_RESET_ATTRI); + pio_configure(PIN_EBI_CDS_PIO, PIN_EBI_CDS_TYPE, PIN_EBI_CDS_MASK, PIN_EBI_CDS_ATTRI); + pio_configure(PIN_EBI_DATAL_PIO, PIN_EBI_DATAL_TYPE, PIN_EBI_DATAL_MASK, PIN_EBI_DATAL_ATTRI); + pio_configure(PIN_EBI_DATAH_0_PIO, PIN_EBI_DATAH_0_TYPE, PIN_EBI_DATAH_0_MASK, PIN_EBI_DATAH_0_ATTRI); + pio_configure(PIN_EBI_DATAH_1_PIO, PIN_EBI_DATAH_1_TYPE, PIN_EBI_DATAH_1_MASK, PIN_EBI_DATAH_1_ATTRI); + pio_configure(PIN_EBI_NWE_PIO, PIN_EBI_NWE_TYPE, PIN_EBI_NWE_MASK, PIN_EBI_NWE_ATTRI); + pio_configure(PIN_EBI_NRD_PIO, PIN_EBI_NRD_TYPE, PIN_EBI_NRD_MASK, PIN_EBI_NRD_ATTRI); + pio_configure(PIN_EBI_CS_PIO, PIN_EBI_CS_TYPE, PIN_EBI_CS_MASK, PIN_EBI_CS_ATTRI); + pio_configure(PIN_EBI_BACKLIGHT_PIO, PIN_EBI_BACKLIGHT_TYPE, PIN_EBI_BACKLIGHT_MASK, PIN_EBI_BACKLIGHT_ATTRI); + pio_set(PIN_EBI_BACKLIGHT_PIO, PIN_EBI_BACKLIGHT_MASK); +#endif + +#if (defined CONF_BOARD_USB_PORT) +# if defined(CONF_BOARD_USB_VBUS_DETECT) + ioport_set_pin_dir(USB_VBUS_PIN, IOPORT_DIR_INPUT); +# endif +# if defined(CONF_BOARD_USB_ID_DETECT) + ioport_set_pin_dir(USB_ID_PIN, IOPORT_DIR_INPUT); +# endif +#endif + +#ifdef CONF_BOARD_SDRAMC + pio_configure_pin(SDRAM_BA0_PIO, SDRAM_BA0_FLAGS); + pio_configure_pin(SDRAM_SDCK_PIO, SDRAM_SDCK_FLAGS); + pio_configure_pin(SDRAM_SDCKE_PIO, SDRAM_SDCKE_FLAGS); + pio_configure_pin(SDRAM_SDCS_PIO, SDRAM_SDCS_FLAGS); + pio_configure_pin(SDRAM_RAS_PIO, SDRAM_RAS_FLAGS); + pio_configure_pin(SDRAM_CAS_PIO, SDRAM_CAS_FLAGS); + pio_configure_pin(SDRAM_SDWE_PIO, SDRAM_SDWE_FLAGS); + pio_configure_pin(SDRAM_NBS0_PIO, SDRAM_NBS0_FLAGS); + pio_configure_pin(SDRAM_NBS1_PIO, SDRAM_NBS1_FLAGS); + pio_configure_pin(SDRAM_A2_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A3_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A4_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A5_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A6_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A7_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A8_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A9_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A10_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_A11_PIO, SDRAM_A_FLAGS); + pio_configure_pin(SDRAM_SDA10_PIO, SDRAM_SDA10_FLAGS); + pio_configure_pin(SDRAM_D0_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D1_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D2_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D3_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D4_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D5_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D6_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D7_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D8_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D9_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D10_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D11_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D12_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D13_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D14_PIO, SDRAM_D_FLAGS); + pio_configure_pin(SDRAM_D15_PIO, SDRAM_D_FLAGS); + + MATRIX->CCFG_SMCNFCS = CCFG_SMCNFCS_SDRAMEN; +#endif + +#ifdef CONF_BOARD_ILI9488 + /**LCD pin configure on SPI*/ + pio_configure_pin(LCD_SPI_MISO_PIO, LCD_SPI_MISO_FLAGS); + pio_configure_pin(LCD_SPI_MOSI_PIO, LCD_SPI_MOSI_FLAGS); + pio_configure_pin(LCD_SPI_SPCK_PIO, LCD_SPI_SPCK_FLAGS); + pio_configure_pin(LCD_SPI_NPCS_PIO, LCD_SPI_NPCS_FLAGS); + pio_configure_pin(LCD_SPI_RESET_PIO, LCD_SPI_RESET_FLAGS); + pio_configure_pin(LCD_SPI_CDS_PIO, LCD_SPI_CDS_FLAGS); + pio_configure_pin(LCD_SPI_BACKLIGHT_PIO, LCD_SPI_BACKLIGHT_FLAGS); + pio_set_pin_high(LCD_SPI_BACKLIGHT_PIO); + +#endif +} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h new file mode 100644 index 00000000..ec3719c5 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h @@ -0,0 +1,71 @@ +/** + * \file + * + * \brief SAME70-XPLD LEDs support package. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef LED_H_INCLUDED +#define LED_H_INCLUDED + +#include "compiler.h" +#include "ioport.h" + +/** + * \brief Turns off the specified LEDs. + * + * \param led LED to turn off (LEDx_GPIO). + * + * \note The pins of the specified LEDs are set to GPIO output mode. + */ +#define LED_Off(led) ioport_set_pin_level(led##_GPIO, led##_INACTIVE_LEVEL) + +/** + * \brief Turns on the specified LEDs. + * + * \param led LED to turn on (LEDx_GPIO). + * + * \note The pins of the specified LEDs are set to GPIO output mode. + */ +#define LED_On(led) ioport_set_pin_level(led##_GPIO, led##_ACTIVE_LEVEL) + +/** + * \brief Toggles the specified LEDs. + * + * \param led LED to toggle (LEDx_GPIO). + * + * \note The pins of the specified LEDs are set to GPIO output mode. + */ +#define LED_Toggle(led) ioport_toggle_pin_level(led##_GPIO) + + +#endif // LED_H_INCLUDED diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h new file mode 100644 index 00000000..d0c4a262 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h @@ -0,0 +1,659 @@ +/** + * \file + * + * \brief SAME70-XPLD Board Definition. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_XPLD_H_ +#define _SAME70_XPLD_H_ + +#include "compiler.h" +#include "system_same70.h" + +/*----------------------------------------------------------------------------*/ +/** + * \page same70_xplained_pro_opfreq "SAME70-XPLD - Operating frequencies" + * This page lists several definition related to the board operating frequency + * + * \section Definitions + * - \ref BOARD_FREQ_* + * - \ref BOARD_MCK + */ + +/** Board oscillator settings */ +#define BOARD_FREQ_SLCK_XTAL (32768U) +#define BOARD_FREQ_SLCK_BYPASS (32768U) +#define BOARD_FREQ_MAINCK_XTAL (12000000U) +#define BOARD_FREQ_MAINCK_BYPASS (12000000U) + +/** Master clock frequency */ +#define BOARD_MCK CHIP_FREQ_CPU_MAX + +/** board main clock xtal statup time */ +#define BOARD_OSC_STARTUP_US 15625 + +/*----------------------------------------------------------------------------*/ +/** + * \page same70_xplained_info "SAME70-XPLD - Board informations" + * This page lists several definition related to the board description. + * + * \section Definitions + * - \ref BOARD_NAME + */ + +/** Name of the board */ +#define BOARD_NAME "SAME70-XPLD" +/** Board definition */ +#define same70xpld +/** Family definition (already defined) */ +#define same70 +/** Core definition */ +#define cortexm7 + +/*----------------------------------------------------------------------------*/ + +#define CONSOLE_UART USART1 +#define CONSOLE_UART_ID ID_USART1 +/** USART1 pins definitions, PA21,PB4. */ +#define USART1_RXD_GPIO PIO_PA21_IDX +#define USART1_RXD_FLAGS IOPORT_MODE_MUX_A +#define USART1_TXD_GPIO PIO_PB4_IDX +#define USART1_TXD_FLAGS IOPORT_MODE_MUX_D + +/** USART0 pins definitions, PB0,PB1. */ +#define USART0_RXD_GPIO PIO_PB0_IDX +#define USART0_RXD_FLAGS IOPORT_MODE_MUX_C +#define USART0_TXD_GPIO PIO_PB1_IDX +#define USART0_TXD_FLAGS IOPORT_MODE_MUX_C + +#define PIN_USART0_SCK_IDX (PIO_PB13_IDX) +#define PIN_USART0_SCK_FLAGS (IOPORT_MODE_MUX_C) + +/** USART0 pin CTS */ +#define PIN_USART0_CTS_IDX (PIO_PB2_IDX) +#define PIN_USART0_CTS_FLAGS (IOPORT_MODE_MUX_C) + +/** USART0 pin RTS */ +#define PIN_USART0_RTS_IDX (PIO_PB3_IDX) +#define PIN_USART0_RTS_FLAGS (IOPORT_MODE_MUX_C) + + +//! \name LED definitions +//@{ +#define LED0_GPIO (PIO_PC8_IDX) +#define LED0_FLAGS (0) +#define LED0_ACTIVE_LEVEL (IOPORT_PIN_LEVEL_LOW) +#define LED0_INACTIVE_LEVEL (IOPORT_PIN_LEVEL_HIGH) + +#define LED_COUNT (1) +//@} + +//! \name SW0 definitions +//@{ +#define SW0_PIN (PIO_PA11_IDX) +#define SW0_ACTIVE (IOPORT_PIN_LEVEL_LOW) +#define SW0_INACTIVE (!SW0_ACTIVE) +#define SW0_SUPC_INPUT 2 + +/** + * Wrapper macros for SW0, to ensure common naming across all Xplained + * boards. + */ +#define PIN_SW0 {PIO_PA11, PIOA, ID_PIOA, PIO_INPUT, PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} +#define PIN_SW0_MASK PIO_PA11 +#define PIN_SW0_PIO PIOA +#define PIN_SW0_ID ID_PIOA +#define PIN_SW0_TYPE PIO_INPUT +#define PIN_SW0_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) +//@} + +/** + * \name LED #0 definitions + * + * Wrapper macros for LED0, to ensure common naming across all Xplained + * boards. + */ +//@{ +#define LED_0_NAME "LED0 (yellow)" +#define LED_0_PIN LED0_GPIO +#define LED_0_ACTIVE LED0_ACTIVE_LEVEL +#define LED_0_INACTIVE LED0_INACTIVE_LEVEL + +#define PIN_LED_0 {PIO_PC8, PIOC, ID_PIOC, PIO_OUTPUT_1, PIO_DEFAULT} +#define PIN_LED_0_MASK PIO_PC8 +#define PIN_LED_0_PIO PIOC +#define PIN_LED_0_ID ID_PIOC +#define PIN_LED_0_TYPE PIO_OUTPUT_1 +#define PIN_LED_0_ATTR PIO_DEFAULT +//@} + +/* TC-- Timer Count */ +#define PIN_TC0_TIOA0 (PIO_PA0_IDX) +#define PIN_TC0_TIOA0_MUX (IOPORT_MODE_MUX_B) +#define PIN_TC0_TIOA0_FLAGS (IOPORT_MODE_MUX_B) + +#define PIN_TC0_TIOA0_PIO PIOA +#define PIN_TC0_TIOA0_MASK PIO_PA0 +#define PIN_TC0_TIOA0_ID ID_PIOA +#define PIN_TC0_TIOA0_TYPE PIO_PERIPH_B +#define PIN_TC0_TIOA0_ATTR PIO_DEFAULT + +#define PIN_TC3_TIOA11 (PIO_PD21_IDX) +#define PIN_TC3_TIOA11_MUX (IOPORT_MODE_MUX_C) +#define PIN_TC3_TIOA11_FLAGS (IOPORT_MODE_MUX_C) + +#define PIN_TC3_TIOA11_PIO PIOD +#define PIN_TC3_TIOA11_MASK PIO_PD21 +#define PIN_TC3_TIOA11_ID ID_PIOD +#define PIN_TC3_TIOA11_TYPE PIO_PERIPH_C +#define PIN_TC3_TIOA11_ATTR PIO_DEFAULT + +//! Number of on-board LEDs +#define BOARD_NUM_OF_LED 1 + +/** + * Push button #0 definition. Attributes = pull-up + debounce + interrupt on + * rising edge. + */ +#define BUTTON_0_NAME "SW0" +#define BUTTON_0_PIN SW0_PIN +#define BUTTON_0_ACTIVE SW0_ACTIVE +#define BUTTON_0_INACTIVE SW0_INACTIVE +#define BUTTON_0_SUPC_INPUT SW0_SUPC_INPUT +#define GPIO_PUSH_BUTTON_0 BUTTON_0_PIN + +#define PUSHBUTTON_1_NAME "SW0" +#define PUSHBUTTON_1_WKUP_LINE (2) +#define PUSHBUTTON_1_WKUP_FSTT (PMC_FSMR_FSTT2) +#define GPIO_PUSH_BUTTON_1 (PIO_PA11_IDX) +#define GPIO_PUSH_BUTTON_1_FLAGS (IOPORT_MODE_PULLUP | IOPORT_MODE_DEBOUNCE) +#define GPIO_PUSH_BUTTON_1_SENSE (IOPORT_SENSE_RISING) + +#define PIN_PUSHBUTTON_1 {PIO_PA11, PIOA, ID_PIOA, PIO_INPUT, \ + PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE} +#define PIN_PUSHBUTTON_1_MASK PIO_PA11 +#define PIN_PUSHBUTTON_1_PIO PIOA +#define PIN_PUSHBUTTON_1_ID ID_PIOA +#define PIN_PUSHBUTTON_1_TYPE PIO_INPUT +#define PIN_PUSHBUTTON_1_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE) +#define PIN_PUSHBUTTON_1_IRQn PIOA_IRQn + +/** List of all push button definitions. */ +#define PINS_PUSHBUTTONS {PIN_PUSHBUTTON_1} + +//! \name Extension header #1 pin definitions +//@{ +#define EXT1_PIN_3 PIO_PC31_IDX +#define EXT1_PIN_4 PIO_PA19_IDX +#define EXT1_PIN_5 PIO_PB3_IDX +#define EXT1_PIN_6 PIO_PB2_IDX +#define EXT1_PIN_7 PIO_PA0_IDX +#define EXT1_PIN_8 PIO_PC30_IDX +#define EXT1_PIN_9 PIO_PD28_IDX +#define EXT1_PIN_10 PIO_PC17_IDX +#define EXT1_PIN_11 PIO_PA3_IDX +#define EXT1_PIN_12 PIO_PA4_IDX +#define EXT1_PIN_13 PIO_PB0_IDX +#define EXT1_PIN_14 PIO_PB1_IDX +#define EXT1_PIN_15 PIO_PD25_IDX +#define EXT1_PIN_16 PIO_PD21_IDX +#define EXT1_PIN_17 PIO_PD20_IDX +#define EXT1_PIN_18 PIO_PD22_IDX +//@} + +//! \name Extension header #1 pin definitions by function +//@{ +#define EXT1_PIN_ADC_0 EXT1_PIN_3 +#define EXT1_PIN_ADC_1 EXT1_PIN_4 +#define EXT1_PIN_GPIO_0 EXT1_PIN_5 +#define EXT1_PIN_GPIO_1 EXT1_PIN_6 +#define EXT1_PIN_PWM_0 EXT1_PIN_7 +#define EXT1_PIN_PWM_1 EXT1_PIN_8 +#define EXT1_PIN_IRQ EXT1_PIN_9 +#define EXT1_PIN_TWI_SDA EXT1_PIN_11 +#define EXT1_PIN_TWI_SCL EXT1_PIN_12 +#define EXT1_PIN_UART_RX EXT1_PIN_13 +#define EXT1_PIN_UART_TX EXT1_PIN_14 +#define EXT1_PIN_SPI_SS_1 EXT1_PIN_10 +#define EXT1_PIN_SPI_SS_0 EXT1_PIN_15 +#define EXT1_PIN_SPI_MOSI EXT1_PIN_16 +#define EXT1_PIN_SPI_MISO EXT1_PIN_17 +#define EXT1_PIN_SPI_SCK EXT1_PIN_18 +//@} + +//! \name Extension header #2 pin definitions +//@{ +#define EXT2_PIN_3 PIO_PD30_IDX +#define EXT2_PIN_4 PIO_PC13_IDX +#define EXT2_PIN_5 PIO_PA6_IDX +#define EXT2_PIN_6 PIO_PD11_IDX +#define EXT2_PIN_7 PIO_PC19_IDX +#define EXT2_PIN_8 PIO_PD26_IDX +#define EXT2_PIN_9 PIO_PA2_IDX +#define EXT2_PIN_10 PIO_PA24_IDX +#define EXT2_PIN_11 PIO_PA3_IDX +#define EXT2_PIN_12 PIO_PA4_IDX +#define EXT2_PIN_13 PIO_PA21_IDX +#define EXT2_PIN_14 PIO_PB4_IDX +#define EXT2_PIN_15 PIO_PD27_IDX +#define EXT2_PIN_16 PIO_PD21_IDX +#define EXT2_PIN_17 PIO_PD20_IDX +#define EXT2_PIN_18 PIO_PD22_IDX +//@} + +//! \name Extension header #2 pin definitions by function +//@{ +#define EXT2_PIN_ADC_0 EXT2_PIN_3 +#define EXT2_PIN_ADC_1 EXT2_PIN_4 +#define EXT2_PIN_GPIO_0 EXT2_PIN_5 +#define EXT2_PIN_GPIO_1 EXT2_PIN_6 +#define EXT2_PIN_PWM_0 EXT2_PIN_7 +#define EXT2_PIN_PWM_1 EXT2_PIN_8 +#define EXT2_PIN_IRQ EXT2_PIN_9 +#define EXT2_PIN_TWI_SDA EXT2_PIN_11 +#define EXT2_PIN_TWI_SCL EXT2_PIN_12 +#define EXT2_PIN_UART_RX EXT2_PIN_13 +#define EXT2_PIN_UART_TX EXT2_PIN_14 +#define EXT2_PIN_SPI_SS_1 EXT2_PIN_10 +#define EXT2_PIN_SPI_SS_0 EXT2_PIN_15 +#define EXT2_PIN_SPI_MOSI EXT2_PIN_16 +#define EXT2_PIN_SPI_MISO EXT2_PIN_17 +#define EXT2_PIN_SPI_SCK EXT2_PIN_18 +//@} + +/** PCK0 pin definition (PA6) */ +#define PIN_PCK0 (PIO_PA6_IDX) +#define PIN_PCK0_MUX (IOPORT_MODE_MUX_B) +#define PIN_PCK0_FLAGS (IOPORT_MODE_MUX_B) +#define PIN_PCK0_PORT IOPORT_PIOA +#define PIN_PCK0_MASK PIO_PA6B_PCK0 +#define PIN_PCK0_PIO PIOA +#define PIN_PCK0_ID ID_PIOA +#define PIN_PCK0_TYPE PIO_PERIPH_B +#define PIN_PCK0_ATTR PIO_DEFAULT + + +/** TWI0 pins definition */ +#define TWIHS0_DATA_GPIO PIO_PA3_IDX +#define TWIHS0_DATA_FLAGS (IOPORT_MODE_MUX_A) +#define TWIHS0_CLK_GPIO PIO_PA4_IDX +#define TWIHS0_CLK_FLAGS (IOPORT_MODE_MUX_A) + +/** SPI0 pins definition */ +#define SPI0_MISO_GPIO PIO_PD20_IDX +#define SPI0_MISO_FLAGS (IOPORT_MODE_MUX_B) +#define SPI0_MOSI_GPIO PIO_PD21_IDX +#define SPI0_MOSI_FLAGS (IOPORT_MODE_MUX_B) +#define SPI0_NPCS0_GPIO PIO_PB2_IDX +#define SPI0_NPCS0_FLAGS (IOPORT_MODE_MUX_D) +#define SPI0_NPCS1_GPIO PIO_PD25_IDX +#define SPI0_NPCS1_FLAGS (IOPORT_MODE_MUX_B) +#define SPI0_NPCS2_GPIO PIO_PD12_IDX +#define SPI0_NPCS2_FLAGS (IOPORT_MODE_MUX_C) +#define SPI0_NPCS3_GPIO PIO_PD27_IDX +#define SPI0_NPCS3_FLAGS (IOPORT_MODE_MUX_B) +#define SPI0_SPCK_GPIO PIO_PD22_IDX +#define SPI0_SPCK_FLAGS (IOPORT_MODE_MUX_B) + +/** QSPI pins definition */ +#define QSPI_QSCK_GPIO PIO_PA14_IDX +#define QSPI_QSCK_FLAGS (IOPORT_MODE_MUX_A) +#define QSPI_QCS_GPIO PIO_PA11_IDX +#define QSPI_QCS_FLAGS (IOPORT_MODE_MUX_A) +#define QSPI_QIO0_GPIO PIO_PA13_IDX +#define QSPI_QIO0_FLAGS (IOPORT_MODE_MUX_A) +#define QSPI_QIO1_GPIO PIO_PA12_IDX +#define QSPI_QIO1_FLAGS (IOPORT_MODE_MUX_A) +#define QSPI_QIO2_GPIO PIO_PA17_IDX +#define QSPI_QIO2_FLAGS (IOPORT_MODE_MUX_A) +#define QSPI_QIO3_GPIO PIO_PD31_IDX +#define QSPI_QIO3_FLAGS (IOPORT_MODE_MUX_A) + +/** AFEC channel for potentiometer */ +#define AFEC_CHANNEL_POTENTIOMETER AFEC_CHANNEL_0 + +#define MCAN_MODULE MCAN1 +/*----------------------------------------------------------------------------*/ +/** + * \page same70_xpld_CAN "SAME70-XPLD - CAN" + * This page lists definitions related to CAN0 and CAN1. + * + * CAN + * - \ref PIN_CAN0_TRANSCEIVER_RXEN + * - \ref PIN_CAN0_TRANSCEIVER_RS + * - \ref PIN_CAN0_TXD + * - \ref PIN_CAN0_RXD + * - \ref PINS_CAN0 + * + * - \ref PIN_CAN1_TRANSCEIVER_RXEN + * - \ref PIN_CAN1_TRANSCEIVER_RS + * - \ref PIN_CAN1_TXD + * - \ref PIN_CAN1_RXD + * - \ref PINS_CAN1 + */ +/** CAN0 transceiver PIN RS. */ +#define PIN_CAN0_TR_RS_IDX PIO_PE0_IDX +#define PIN_CAN0_TR_RS_FLAGS IOPORT_DIR_OUTPUT + +/** CAN0 transceiver PIN EN. */ +#define PIN_CAN0_TR_EN_IDX PIO_PE1_IDX +#define PIN_CAN0_TR_EN_FLAGS IOPORT_DIR_OUTPUT + +/** CAN0 PIN RX. */ +#define PIN_CAN0_RX_IDX PIO_PB3_IDX +#define PIN_CAN0_RX_FLAGS IOPORT_MODE_MUX_A + +/** CAN0 PIN TX. */ +#define PIN_CAN0_TX_IDX PIO_PB2_IDX +#define PIN_CAN0_TX_FLAGS IOPORT_MODE_MUX_A + +/** CAN1 transceiver PIN RS. */ +#define PIN_CAN1_TR_RS_IDX PIO_PE2_IDX +#define PIN_CAN1_TR_RS_FLAGS IOPORT_DIR_OUTPUT + +/** CAN1 transceiver PIN EN. */ +#define PIN_CAN1_TR_EN_IDX PIO_PE3_IDX +#define PIN_CAN1_TR_EN_FLAGS IOPORT_DIR_OUTPUT + +/** CAN1 PIN RX. */ +#define PIN_CAN1_RX_IDX PIO_PC12_IDX +#define PIN_CAN1_RX_FLAGS IOPORT_MODE_MUX_C + +/** CAN1 PIN TX. */ +#define PIN_CAN1_TX_IDX PIO_PC14_IDX +#define PIN_CAN1_TX_FLAGS IOPORT_MODE_MUX_C + +/** PWM LED0 pin definitions. */ +#define PIN_PWM_LED0_GPIO PIO_PA23_IDX +#define PIN_PWM_LED0_FLAGS (IOPORT_MODE_MUX_B) +#define PIN_PWM_LED0_CHANNEL PWM_CHANNEL_0 + +/** PWM LED1 pin definitions. */ +#define PIN_PWM_LED1_GPIO PIO_PA24_IDX +#define PIN_PWM_LED1_FLAGS (IOPORT_MODE_MUX_B) +#define PIN_PWM_LED1_CHANNEL PWM_CHANNEL_1 + +/*----------------------------------------------------------------------------*/ +/** GMAC HW configurations */ +#define BOARD_GMAC_PHY_ADDR 0 + +#define PIN_GMAC_RESET_MASK PIO_PC10 +#define PIN_GMAC_RESET_PIO PIOC +#define PIN_GMAC_INT_MASK PIO_PA14 +#define PIN_GMAC_INT_PIO PIOA +#define PIN_GMAC_PERIPH PIO_PERIPH_A +#define PIN_GMAC_PIO PIOD +#define PIN_GMAC_MASK (PIO_PD0A_GTXCK | PIO_PD1A_GTXEN | PIO_PD2A_GTX0 | \ + PIO_PD3A_GTX1 | PIO_PD4A_GRXDV | PIO_PD5A_GRX0 | \ + PIO_PD6A_GRX1 | PIO_PD7A_GRXER | PIO_PD8A_GMDC | \ + PIO_PD9A_GMDIO) + +/** Board configuration of the AT24MAC EEPROM */ +#define BOARD_AT24MAC_TWIHS TWIHS0 +//#define BOARD_AT24MAC_ADDRESS (0xBE >> 1) +#define BOARD_AT24MAC_TWIHS_CLK (400000UL) +#define BOARD_AT24MAC_PAGE_SIZE 16 +#define BOARD_AT24MAC_TWIHS_INSTANCE TWIHS0 +#define BOARD_AT24MAC_ADDRESS (0xAE >> 1) +#define BOARD_CLK_TWIHS_EEPROM PIO_PA4 + +/** HSMCI pins definition. */ +/*! Number of slot connected on HSMCI interface */ +#define SD_MMC_HSMCI_MEM_CNT 1 +#define SD_MMC_HSMCI_SLOT_0_SIZE 4 +/** HSMCI MCCDA pin definition. */ +#define PIN_HSMCI_MCCDA_GPIO (PIO_PA28_IDX) +#define PIN_HSMCI_MCCDA_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCCK pin definition. */ +#define PIN_HSMCI_MCCK_GPIO (PIO_PA25_IDX) +#define PIN_HSMCI_MCCK_FLAGS (IOPORT_MODE_MUX_D) +/** HSMCI MCDA0 pin definition. */ +#define PIN_HSMCI_MCDA0_GPIO (PIO_PA30_IDX) +#define PIN_HSMCI_MCDA0_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA1 pin definition. */ +#define PIN_HSMCI_MCDA1_GPIO (PIO_PA31_IDX) +#define PIN_HSMCI_MCDA1_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA2 pin definition. */ +#define PIN_HSMCI_MCDA2_GPIO (PIO_PA26_IDX) +#define PIN_HSMCI_MCDA2_FLAGS (IOPORT_MODE_MUX_C) +/** HSMCI MCDA3 pin definition. */ +#define PIN_HSMCI_MCDA3_GPIO (PIO_PA27_IDX) +#define PIN_HSMCI_MCDA3_FLAGS (IOPORT_MODE_MUX_C) + +/** SD/MMC card detect pin definition. */ +#define PIN_HSMCI_CD {PIO_PC16, PIOD, ID_PIOD, PIO_INPUT, PIO_PULLUP} +#define SD_MMC_0_CD_GPIO (PIO_PC16_IDX) +#define SD_MMC_0_CD_PIO_ID ID_PIOD +#define SD_MMC_0_CD_FLAGS (IOPORT_MODE_PULLUP) +#define SD_MMC_0_CD_DETECT_VALUE 0 + +/** EBI pins configuration for LCD */ +/** LCD reset pin */ +#define PIN_EBI_RESET_MASK PIO_PC13 +#define PIN_EBI_RESET_PIO PIOC +#define PIN_EBI_RESET_TYPE PIO_OUTPUT_1 +#define PIN_EBI_RESET_ATTRI PIO_DEFAULT + +/** LCD command/data select pin */ +#define PIN_EBI_CDS_MASK PIO_PC30 +#define PIN_EBI_CDS_PIO PIOC +#define PIN_EBI_CDS_TYPE PIO_OUTPUT_1 +#define PIN_EBI_CDS_ATTRI PIO_DEFAULT + +/** LCD data pin */ +#define PIN_EBI_DATAL_MASK 0xFF +#define PIN_EBI_DATAL_PIO PIOC +#define PIN_EBI_DATAL_TYPE PIO_PERIPH_A +#define PIN_EBI_DATAL_ATTRI PIO_PULLUP + +#define PIN_EBI_DATAH_0_MASK 0x3F +#define PIN_EBI_DATAH_0_PIO PIOE +#define PIN_EBI_DATAH_0_TYPE PIO_PERIPH_A +#define PIN_EBI_DATAH_0_ATTRI PIO_PULLUP + +#define PIN_EBI_DATAH_1_MASK (PIO_PA15A_D14|PIO_PA16A_D15) +#define PIN_EBI_DATAH_1_PIO PIOA +#define PIN_EBI_DATAH_1_TYPE PIO_PERIPH_A +#define PIN_EBI_DATAH_1_ATTRI PIO_PULLUP + +/** LCD WE pin */ +#define PIN_EBI_NWE_MASK PIO_PC8A_NWE +#define PIN_EBI_NWE_PIO PIOC +#define PIN_EBI_NWE_TYPE PIO_PERIPH_A +#define PIN_EBI_NWE_ATTRI PIO_PULLUP + +/** LCD RD pin */ +#define PIN_EBI_NRD_MASK PIO_PC11A_NRD +#define PIN_EBI_NRD_PIO PIOC +#define PIN_EBI_NRD_TYPE PIO_PERIPH_A +#define PIN_EBI_NRD_ATTRI PIO_PULLUP + +/** LCD CS pin (NCS3) */ +#define PIN_EBI_CS_MASK PIO_PD19A_NCS3 +#define PIN_EBI_CS_PIO PIOD +#define PIN_EBI_CS_TYPE PIO_PERIPH_A +#define PIN_EBI_CS_ATTRI PIO_PULLUP + +/** Back-light pin definition. */ +#define PIN_EBI_BACKLIGHT_MASK PIO_PC9B_TIOB7 +#define PIN_EBI_BACKLIGHT_PIO PIOC +#define PIN_EBI_BACKLIGHT_TYPE PIO_PERIPH_B +#define PIN_EBI_BACKLIGHT_ATTRI PIO_DEFAULT + +/*! \name GPIO Connections of VBUS monitoring + */ +//! @{ +#define USB_VBUS_FLAGS (PIO_INPUT | PIO_PULLUP) +#define USB_VBUS_PIN PIO_PC9_IDX /* As IO pin input */ +#define USB_VBUS_PIN_IRQn ( PIOC_IRQn) +#define USB_VBUS_PIO_ID ID_PIOC +#define USB_VBUS_PIO_MASK PIO_PC9 +//! @} + +/*! \name GPIO Connections of ID detecting + */ +//! @{ +#define USB_ID_FLAGS (PIO_INPUT | PIO_PULLUP) +#define USB_ID_PIN PIO_PC16_IDX /* As IO pin input */ +#define USB_ID_PIN_IRQn (PIOC_IRQn) +#define USB_ID_PIO_ID ID_PIOC +#define USB_ID_PIO_MASK PIO_PC16 +//! @} + +/** WM8904 Slave address */ +#define WM8904_SLAVE_ADDRESS (0x34 >> 1) + +/** TWI interface for WM8904 */ +#define WM8904_TWIHS TWIHS0 + +/** WM8904 pins definition */ +#define WM8904_TK_PIO PIO_PB1_IDX +#define WM8904_TK_FLAGS PIO_PERIPH_D +#define WM8904_TF_PIO PIO_PB0_IDX +#define WM8904_TF_FLAGS PIO_PERIPH_D +#define WM8904_TD_PIO PIO_PD26_IDX +#define WM8904_TD_FLAGS PIO_PERIPH_B +#define WM8904_RK_PIO PIO_PA22_IDX +#define WM8904_RK_FLAGS PIO_PERIPH_A +#define WM8904_RF_PIO PIO_PD24_IDX +#define WM8904_RF_FLAGS PIO_PERIPH_B +#define WM8904_RD_PIO PIO_PA10_IDX +#define WM8904_RD_FLAGS PIO_PERIPH_C +#define WM8904_PCK2_PIO PIO_PA18_IDX +#define WM8904_PCK2_FLAGS PIO_PERIPH_B + +/** Board SDRAM size for MT48LC16M16A2 */ +#define BOARD_SDRAM_SIZE (2 * 1024 * 1024) + +/** Address for transferring command bytes to the SDRAM. */ +#define BOARD_SDRAM_ADDR 0x70000000 + +/** SDRAM pins definitions */ +#define SDRAM_BA0_PIO PIO_PA20_IDX +#define SDRAM_SDCK_PIO PIO_PD23_IDX +#define SDRAM_SDCKE_PIO PIO_PD14_IDX +#define SDRAM_SDCS_PIO PIO_PC15_IDX +#define SDRAM_RAS_PIO PIO_PD16_IDX +#define SDRAM_CAS_PIO PIO_PD17_IDX +#define SDRAM_SDWE_PIO PIO_PD29_IDX +#define SDRAM_NBS0_PIO PIO_PC18_IDX +#define SDRAM_NBS1_PIO PIO_PD15_IDX +#define SDRAM_A2_PIO PIO_PC20_IDX +#define SDRAM_A3_PIO PIO_PC21_IDX +#define SDRAM_A4_PIO PIO_PC22_IDX +#define SDRAM_A5_PIO PIO_PC23_IDX +#define SDRAM_A6_PIO PIO_PC24_IDX +#define SDRAM_A7_PIO PIO_PC25_IDX +#define SDRAM_A8_PIO PIO_PC26_IDX +#define SDRAM_A9_PIO PIO_PC27_IDX +#define SDRAM_A10_PIO PIO_PC28_IDX +#define SDRAM_A11_PIO PIO_PC29_IDX +#define SDRAM_SDA10_PIO PIO_PD13_IDX +#define SDRAM_D0_PIO PIO_PC0_IDX +#define SDRAM_D1_PIO PIO_PC1_IDX +#define SDRAM_D2_PIO PIO_PC2_IDX +#define SDRAM_D3_PIO PIO_PC3_IDX +#define SDRAM_D4_PIO PIO_PC4_IDX +#define SDRAM_D5_PIO PIO_PC5_IDX +#define SDRAM_D6_PIO PIO_PC6_IDX +#define SDRAM_D7_PIO PIO_PC7_IDX +#define SDRAM_D8_PIO PIO_PE0_IDX +#define SDRAM_D9_PIO PIO_PE1_IDX +#define SDRAM_D10_PIO PIO_PE2_IDX +#define SDRAM_D11_PIO PIO_PE3_IDX +#define SDRAM_D12_PIO PIO_PE4_IDX +#define SDRAM_D13_PIO PIO_PE5_IDX +#define SDRAM_D14_PIO PIO_PA15_IDX +#define SDRAM_D15_PIO PIO_PA16_IDX + +#define SDRAM_BA0_FLAGS PIO_PERIPH_C +#define SDRAM_SDCK_FLAGS PIO_PERIPH_C +#define SDRAM_SDCKE_FLAGS PIO_PERIPH_C +#define SDRAM_SDCS_FLAGS PIO_PERIPH_A +#define SDRAM_RAS_FLAGS PIO_PERIPH_C +#define SDRAM_CAS_FLAGS PIO_PERIPH_C +#define SDRAM_SDWE_FLAGS PIO_PERIPH_C +#define SDRAM_NBS0_FLAGS PIO_PERIPH_A +#define SDRAM_NBS1_FLAGS PIO_PERIPH_C +#define SDRAM_A_FLAGS PIO_PERIPH_A +#define SDRAM_SDA10_FLAGS PIO_PERIPH_C +#define SDRAM_D_FLAGS PIO_PERIPH_A + +/** LCD SPI configuration */ +#define BOARD_ILI9488_SPI SPI0 +#define BOARD_ILI9488_SPI_IRQN SPI0_IRQn +#define BOARD_ILI9488_SPI_NPCS 3 + +/** LCD SPI pins definition */ +#define LCD_SPI_MISO_PIO PIO_PD20_IDX +#define LCD_SPI_MISO_FLAGS (PIO_PERIPH_B | PIO_DEFAULT) +#define LCD_SPI_MOSI_PIO PIO_PD21_IDX +#define LCD_SPI_MOSI_FLAGS (PIO_PERIPH_B | PIO_DEFAULT) +#define LCD_SPI_SPCK_PIO PIO_PD22_IDX +#define LCD_SPI_SPCK_FLAGS (PIO_PERIPH_B | PIO_DEFAULT) +#define LCD_SPI_NPCS_PIO PIO_PD27_IDX +#define LCD_SPI_NPCS_FLAGS (PIO_PERIPH_B | PIO_DEFAULT) + +#define LCD_SPI_RESET_PIO PIO_PA24_IDX +#define LCD_SPI_RESET_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT) +#define LCD_SPI_CDS_PIO PIO_PA6_IDX +#define LCD_SPI_CDS_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT) +#define LCD_SPI_BACKLIGHT_PIO PIO_PC19_IDX +#define LCD_SPI_BACKLIGHT_FLAGS (PIO_OUTPUT_1 | PIO_DEFAULT) + + +/** TWI interface for maXTouch XPRO */ +#define MAXTOUCH_XPRO_TWIHS TWIHS0 + +#define MAXTOUCH_XPRO_CHG_PIO PIO_PA2_IDX + +/** BNO055 external interrupt pin definition */ +#define PIN_BNO055_EXT_INIERRUPT {PIO_PD28, PIOD, ID_PIOD, PIO_INPUT, \ + PIO_DEFAULT | PIO_IT_RISE_EDGE} +#define PIN_BNO055_EXT_INIERRUPT_MASK PIO_PD28 +#define PIN_BNO055_EXT_INIERRUPT_PIO PIOD +#define PIN_BNO055_EXT_INIERRUPT_ID ID_PIOD +#define PIN_BNO055_EXT_INIERRUPT_TYPE PIO_INPUT +#define PIN_BNO055_EXT_INIERRUPT_ATTR (PIO_DEFAULT | PIO_IT_RISE_EDGE) +#define PIN_BNO055_EXT_INIERRUPT_IRQn PIOD_IRQn + +#define BOARD_BNO055_TWIHS TWIHS0 +#define BOARD_BNO055_ID_TWIHS ID_TWIHS0 + +/** TWIHS ID for simulated EEPROM application to use */ +#define BOARD_AT30TSE_ID_TWIHS ID_TWIHS0 +/** TWIHS Base for simulated TWI EEPROM application to use */ +#define BOARD_AT30TSE_TWIHS TWIHS0 + +/*----------------------------------------------------------------------------*/ +#endif /* _SAME70_XPLD_H_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c new file mode 100644 index 00000000..a4a832c2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c @@ -0,0 +1,428 @@ +/** + * \file + * + * \brief SAM4 Analog Comparator Controller (ACC) driver. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "acc.h" + +/// @cond +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#ifndef ACC_WPMR_WPKEY_PASSWD +# define ACC_WPMR_WPKEY_PASSWD ACC_WPMR_WPKEY((uint32_t) 0x414343) +#endif + +/** + * \brief Initialize the ACC module. + * + * \note This function performs a \ref acc_reset() "software reset" on the + * ACC module prior to its initialization. + * + * \param[in,out] p_acc Module hardware register base address pointer + * \param[in] ul_select_plus Selection for the plus comparator input (inp) + * \param[in] ul_select_minus Selection for the minus comparator input (inn) + * \param[in] ul_edge_type Comparison flag triggering mode + * \param[in] ul_invert Invert the comparator output mode + * + * Where the input parameter ul_select_plus is one of the following: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_SELPLUS_AD0Select AD0 as the plus input
ACC_MR_SELPLUS_AD1Select AD1 as the plus input
ACC_MR_SELPLUS_AD2Select AD2 as the plus input
ACC_MR_SELPLUS_AD3Select AD3 as the plus input
ACC_MR_SELPLUS_AD4Select AD4 as the plus input
ACC_MR_SELPLUS_AD5Select AD5 as the plus input
ACC_MR_SELPLUS_AD6Select AD6 as the plus input
ACC_MR_SELPLUS_AD7Select AD7 as the plus input
+ * + * Where the input parameter ul_select_minus is one of the following: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_SELMINUS_TSSelect TS as the minus input
ACC_MR_SELMINUS_ADVREFSelect ADVREF as the minus input
ACC_MR_SELMINUS_DAC0Select DAC0 as the minus input
ACC_MR_SELMINUS_DAC1Select DAC1 as the minus input
ACC_MR_SELMINUS_AD0Select AD0 as the minus input
ACC_MR_SELMINUS_AD1Select AD1 as the minus input
ACC_MR_SELMINUS_AD2Select AD2 as the minus input
ACC_MR_SELMINUS_AD3Select AD3 as the minus input
+ * + * Where the input parameter ul_edge_type is one of the following: + * + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_EDGETYP_RISINGRising edge of comparator output
ACC_MR_EDGETYP_FALLINGFalling edge of comparator output
ACC_MR_EDGETYP_ANYAny edge of comparator output
+ * + * Where the input parameter ul_invert is one of the following: + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_INV_DISComparator output is directly processed
ACC_MR_INV_ENComparator output is inverted prior to being processed
+ */ +void acc_init( + Acc *p_acc, + uint32_t ul_select_plus, + uint32_t ul_select_minus, + uint32_t ul_edge_type, + uint32_t ul_invert) +{ + /* Validate the parameters. */ + Assert(p_acc); + + /* Reset the controller. */ + p_acc->ACC_CR |= ACC_CR_SWRST; + + /* Write to the MR register. */ + p_acc->ACC_MR = (((ul_select_plus) & ACC_MR_SELPLUS_Msk) | + ((ul_select_minus) & ACC_MR_SELMINUS_Msk) | + ((ul_edge_type) & ACC_MR_EDGETYP_Msk) | + ((ul_invert) & ACC_MR_INV)) | ACC_MR_ACEN_EN; + + /* Set hysteresis and current option. */ + p_acc->ACC_ACR = (ACC_ACR_ISEL_HISP | + ACC_ACR_HYST(ACC_ACR_HYST_50mv_max)); + + /* Automatic Output Masking Period. */ + while (p_acc->ACC_ISR & (uint32_t) ACC_ISR_MASK); +} + +/** + * \brief Enable the ACC module. + * + * \param[in,out] p_acc Module hardware register base address pointer + */ +void acc_enable( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_MR |= ACC_MR_ACEN_EN; +} + +/** + * \brief Disable the ACC module. + * + * \param[in,out] p_acc Module hardware register base address pointer + */ +void acc_disable( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_MR &= ~ACC_MR_ACEN_EN; +} + +/** + * \brief Software reset the ACC module. + * + * \param[out] p_acc Module hardware register base address pointer + */ +void acc_reset( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_CR = ACC_CR_SWRST; +} + +/** + * \brief Set the ACC comparator plus/minus input sources. + * + * \param[in,out] p_acc Module hardware register base address pointer + * \param[in] ul_select_minus Selection for the minus comparator input (inn) + * \param[in] ul_select_plus Selection for the plus comparator input (inp) + * + * Where the input parameter ul_select_minus is one of the following: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_SELMINUS_TSSelect TS as the minus input
ACC_MR_SELMINUS_ADVREFSelect ADVREF as the minus input
ACC_MR_SELMINUS_DAC0Select DAC0 as the minus input
ACC_MR_SELMINUS_DAC1Select DAC1 as the minus input
ACC_MR_SELMINUS_AD0Select AD0 as the minus input
ACC_MR_SELMINUS_AD1Select AD1 as the minus input
ACC_MR_SELMINUS_AD2Select AD2 as the minus input
ACC_MR_SELMINUS_AD3Select AD3 as the minus input
+ * + * Where the input parameter ul_select_plus is one of the following: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_SELPLUS_AD0Select AD0 as the plus input
ACC_MR_SELPLUS_AD1Select AD1 as the plus input
ACC_MR_SELPLUS_AD2Select AD2 as the plus input
ACC_MR_SELPLUS_AD3Select AD3 as the plus input
ACC_MR_SELPLUS_AD4Select AD4 as the plus input
ACC_MR_SELPLUS_AD5Select AD5 as the plus input
ACC_MR_SELPLUS_AD6Select AD6 as the plus input
ACC_MR_SELPLUS_AD7Select AD7 as the plus input
+ */ +void acc_set_input( + Acc *p_acc, + uint32_t ul_select_minus, + uint32_t ul_select_plus) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_MR &= ~(ACC_MR_SELMINUS_Msk | ACC_MR_SELPLUS_Msk); + p_acc->ACC_MR |= ul_select_plus | ul_select_minus; +} + +/** + * \brief Set the ACC output. + * + * \param[in,out] p_acc Module hardware register base address pointer + * \param[in] ul_invert Invert comparator output + * \param[in] ul_fault_enable Fault enable + * \param[in] ul_fault_source Selection of fault source + * + * Where the input parameter ul_invert is one of the following: + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_INV_DISComparator output is directly processed
ACC_MR_INV_ENComparator output is inverted prior to being processed
+ * + * Where the input parameter ul_fault_enable is one of the following: + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_FE_DISThe FAULT output is tied to 0
ACC_MR_FE_ENThe FAULT output is driven by ul_fault_source
+ * + * Where the input parameter ul_fault_source is one of the following: + * + * + * + * + * + * + * + *
Parameter ValueDescription
ACC_MR_SELFS_CFThe CF flag is used to drive the FAULT output
ACC_MR_SELFS_OUTPUTThe output of the Analog Comparator flag is used to drive the FAULT output
+ */ +void acc_set_output( + Acc *p_acc, + uint32_t ul_invert, + uint32_t ul_fault_enable, + uint32_t ul_fault_source) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_MR &= ~(ACC_MR_INV_EN | ACC_MR_FE_EN | ACC_MR_SELFS_OUTPUT); + + p_acc->ACC_MR |= ul_invert | ul_fault_source | ul_fault_enable; +} + +/** + * \brief Get the ACC comparison result. + * + * \param[in] p_acc Module hardware register base address pointer + * + * \return The ACC comparison result. + * \retval 0 Comparator minus input is greater than its plus input (inn>inp) + * \retval 1 Comparator plus input is greater than its minus input (inp>inn) + */ +uint32_t acc_get_comparison_result( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + uint32_t ul_temp = p_acc->ACC_MR; + uint32_t ul_status = p_acc->ACC_ISR; + + if ((ul_temp & ACC_MR_INV_EN) == ACC_MR_INV_EN) { + if (ul_status & ACC_ISR_SCO) { + return 0; /* inn>inp */ + } else { + return 1; /* inp>inn */ + } + } else { + if (ul_status & ACC_ISR_SCO) { + return 1; /* inp>inn */ + } else { + return 0; /* inn>inp */ + } + } +} + +/** + * \brief Enable the ACC comparison edge interrupt. + * + * \param[out] p_acc Module hardware register base address pointer + */ +void acc_enable_interrupt( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_IER = ACC_IER_CE; +} + +/** + * \brief Disable the ACC comparison edge interrupt. + * + * \param[out] p_acc Module hardware register base address pointer + */ +void acc_disable_interrupt( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + p_acc->ACC_IDR = ACC_IDR_CE; +} + +/** + * \brief Get the ACC comparison edge interrupt status. + * + * \param[in] p_acc Module hardware register base address pointer + * + * \return The ACC comparison edge interrupt status. + */ +uint32_t acc_get_interrupt_status( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + return p_acc->ACC_ISR; +} + +/** + * \brief Set the ACC register write-protection. + * + * \param[out] p_acc Module hardware register base address pointer + * \param[in] ul_enable 1 to enable, 0 to disable + */ +void acc_set_writeprotect( + Acc *p_acc, + uint32_t ul_enable) +{ + /* Validate the parameters. */ + Assert(p_acc); + + if (ul_enable) + p_acc->ACC_WPMR = ACC_WPMR_WPKEY_PASSWD | ACC_WPMR_WPEN; + else + p_acc->ACC_WPMR = ACC_WPMR_WPKEY_PASSWD; +} + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Get the ACC register write-protection status. + * + * \param[in] p_acc Module hardware register base address pointer + * + * \return The ACC register write-protection status. + * \retval 0 No write-protection violation occurred + * \retval ACC_WPSR_WPVS Write-protection violation (WPEN = 1) has occurred since the last read of ACC_WPSR + */ +uint32_t acc_get_writeprotect_status( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + return p_acc->ACC_WPSR & ACC_WPSR_WPVS; +} +#else +/** + * \brief Get the ACC register write-protection status. + * + * \param[in] p_acc Module hardware register base address pointer + * + * \return The ACC register write-protection status. + * \retval 0 No write-protection error + * \retval ACC_WPSR_WPROTERR Write-protection error + */ +uint32_t acc_get_writeprotect_status( + Acc *p_acc) +{ + /* Validate the parameters. */ + Assert(p_acc); + + return p_acc->ACC_WPSR & ACC_WPSR_WPROTERR; +} +#endif + +/// @cond +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h new file mode 100644 index 00000000..7a9ba737 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h @@ -0,0 +1,372 @@ +/** + * \file + * + * \brief SAM Analog Comparator Controller (ACC) driver. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef ACC_H_INCLUDED +#define ACC_H_INCLUDED + +/** + * \defgroup asfdoc_sam_drivers_acc_group SAM3S/4E/4S/V71/V70/S70/E70 Analog Comparator Controller (ACC) Driver + * + * This driver for Atmel® | SMART ARM®-based microcontrollers provides an interface for + * the configuration and management of the device's Analog Comparator Controller functionality. + * + * The Analog Comparator compares two voltages, and the result of this comparison + * gives a compare output. The user application can select whether to use a high-speed + * or a low-power option as well as selecting the hysteresis level, edge detection, + * and polarity. + * + * Devices from the following series can use this module: + * - Atmel | SMART SAM3S + * - Atmel | SMART SAM4E + * - Atmel | SMART SAM4S + * - Atmel | SMART SAMV71 + * - Atmel | SMART SAMV70 + * - Atmel | SMART SAME70 + * - Atmel | SMART SAMS70 + * + * The outline of this documentation is as follows: + * - \ref asfdoc_sam_drivers_acc_prerequisites + * - \ref asfdoc_sam_drivers_acc_module_overview + * - \ref asfdoc_sam_drivers_acc_special_considerations + * - \ref asfdoc_sam_drivers_acc_extra_info + * - \ref asfdoc_sam_drivers_acc_examples + * - \ref asfdoc_sam_drivers_acc_api_overview + * + * + * \section asfdoc_sam_drivers_acc_prerequisites Prerequisites + * + * There are no prerequisites for this module. + * + * + * \section asfdoc_sam_drivers_acc_module_overview Module Overview + * + * The Analog Comparator Controller configures the Analog Comparator, and + * generates an interrupt according to the user application's settings. The + * analog comparator embeds 8 to 1 multiplexers on both its plus and minus + * inputs. + * + * The Analog Comparator compares two voltages, and the result of this comparison + * gives a compare output and an interrupt can be generated accordingly. The user + * application can select a high-speed or low-power option, the hysteresis level, + * edge detection, and polarity. + * + * The ACC can also generate a comparison event that can be used by the Pulse Width + * Modulation (PWM) module. + * + * + * \section asfdoc_sam_drivers_acc_special_considerations Special Considerations + * + * \subsection asfdoc_sam_drivers_acc_special_considerations_config Configuration Changes + * + * As soon as the analog comparator settings are modified, the output of the + * analog comparator is masked for the time that its output may be invalid. + * Depending on the user application the following function calls may require + * the comparator output to be valid before continuing: + * - \ref acc_enable() + * - \ref acc_set_input() + * - \ref acc_set_output() + * + * The following code may be used to check if the comparator output is valid + * before continuing: + * \code + * while ((acc_get_interrupt_status(ACC) & ACC_ISR_MASK) == ACC_ISR_MASK) { + * } \endcode + * + * \subsection asfdoc_sam_drivers_acc_special_considerations_io I/O Lines + * + * The analog input pins (AD0-AD7 and DAC0-1) are multiplexed with general-purpose + * input/output (GPIO) lines. The assignment of these pins to ACC module inputs + * is automatically done when the corresponding input is assigned to the + * comparator's plus/minus inputs by the user application performing a write to + * the module's Mode Register. + * + * \subsection asfdoc_sam_drivers_acc_special_considerations_power Power Management + * The ACC module is clocked through the Power Management Controller (PMC), + * thus the user application must first configure the PMC, in order to enable the + * Analog Comparator Controller clock. + * + * \note The voltage regulator must be activated before the Analog Comparator module + * is used. + * + * \subsection asfdoc_sam_drivers_acc_special_considerations_irq Interrupt + * + * The ACC module has an interrupt line connected to the Nested Vectored Interrupt + * Controller (NVIC). Handling the ACC interrupt requires that the NVIC is configured + * before configuring the ACC. + * + * \subsection asfdoc_sam_drivers_acc_special_considerations_fault Fault Output + * + * The ACC module has a FAULT output that is connected to the FAULT input of the + * PWM module. Refer to "fault mode" and the implementation of the PWM in + * the device-specific datasheet. + * + * + * \section asfdoc_sam_drivers_acc_extra_info Extra Information + * + * For extra information, see \ref asfdoc_sam_drivers_acc_extra. This includes: + * - \ref asfdoc_sam_drivers_acc_extra_acronyms + * - \ref asfdoc_sam_drivers_acc_extra_dependencies + * - \ref asfdoc_sam_drivers_acc_extra_errata + * - \ref asfdoc_sam_drivers_acc_extra_history + * + * \section asfdoc_sam_drivers_acc_examples Examples + * + * For a list of examples related to this driver, see + * \ref asfdoc_sam_drivers_acc_exqsg. + * + * + * \section asfdoc_sam_drivers_acc_api_overview API Overview + * @{ + */ + +#include + +/// @cond +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** \name Hysteresis Levels + * Refer to the "Analog Comparator Characteristics" table in the + * "Electrical Characteristics" chapter of the device-specific datasheet. + * @{ + */ +#define ACC_ACR_HYST_0mv_max 0x00 +#define ACC_ACR_HYST_50mv_max 0x01 +#define ACC_ACR_HYST_90mv_max 0x11 +/** @} */ + +void acc_init(Acc *p_acc, uint32_t ul_select_plus, uint32_t ul_select_minus, + uint32_t ul_edge_type, uint32_t ul_invert); +void acc_enable(Acc *p_acc); +void acc_disable(Acc *p_acc); +void acc_reset(Acc *p_acc); +void acc_set_input(Acc *p_acc, uint32_t ul_select_minus, + uint32_t ul_select_plus); +void acc_set_output(Acc *p_acc, uint32_t ul_invert, + uint32_t ul_fault_enable, uint32_t ul_fault_source); +uint32_t acc_get_comparison_result(Acc *p_acc); +void acc_enable_interrupt(Acc *p_acc); +void acc_disable_interrupt(Acc *p_acc); +uint32_t acc_get_interrupt_status(Acc *p_acc); +void acc_set_writeprotect(Acc *p_acc, uint32_t ul_enable); +uint32_t acc_get_writeprotect_status(Acc *p_acc); + +/// @cond +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +/** @} */ + +/** + * \page asfdoc_sam_drivers_acc_extra Extra Information for Analog Comparator Controller + * + * \section asfdoc_sam_drivers_acc_extra_acronyms Acronyms + * Below is a table listing the acronyms used in this module, along with their + * intended meanings. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
AcronymDefinition
ADAnalog to Digital
DACDigital to Analog Converter
GPIOGeneral Purpose Input Output
NVICNested Vectored Interrupt Controller
PMCPower Management Controller
PWMPulse Width Modulator
QSGQuick Start Guide
+ * + * + * \section asfdoc_sam_drivers_acc_extra_dependencies Dependencies + * This driver has the following dependencies: + * + * - None + * + * + * \section asfdoc_sam_drivers_acc_extra_errata Errata + * There are no errata related to this driver. + * + * + * \section asfdoc_sam_drivers_acc_extra_history Module History + * An overview of the module history is presented in the table below, with + * details on the enhancements and fixes made to the module since its first + * release. The current version of this corresponds to the newest version in + * the table. + * + * + * + * + * + * + * + * + *
Changelog
Initial document release
+ */ + +/** + * \page asfdoc_sam_drivers_acc_exqsg Examples for Analog Comparator Controller + * + * This is a list of the available Quick Start guides (QSGs) and example + * applications for \ref asfdoc_sam_drivers_acc_group. QSGs are simple examples, with + * step-by-step instructions to configure and use this driver in a selection of + * use cases. Note that a QSG can be compiled as a standalone application or be + * added to the user application. + * + * - \subpage asfdoc_sam_drivers_acc_qsg + * - \subpage asfdoc_sam_drivers_acc_example_irq + * + * \page asfdoc_sam_drivers_acc_document_revision_history Document Revision History + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Doc. Rev. + * Date + * Comments + *
42292B07/2015Updated title of application note and added list of supported devices
42292A05/2014Initial document release
+ * + */ + +/** + * \page asfdoc_sam_drivers_acc_qsg Quick Start Guide for the ACC driver + * + * This is the quick start guide for the \ref asfdoc_sam_drivers_acc_group, with + * step-by-step instructions on how to configure and use the driver for + * a specific use case. The code examples can be copied into e.g. the main + * application loop or any other function that will need to control the + * ACC module. + * + * \section asfdoc_sam_drivers_acc_qsg_use_cases Use Cases + * - \ref asfdoc_sam_drivers_acc_qsg_basic + * + * \section asfdoc_sam_drivers_acc_qsg_basic ACC Basic Usage + * + * This use case will demonstrate how to initialize the ACC module in + * interrupt mode. + * + * + * \section asfdoc_sam_drivers_acc_qsg_basic_setup Setup Steps + * + * \subsection asfdoc_sam_acc_qsg_basic_prereq Prerequisites + * + * This module requires the following service: + * - \ref clk_group "System Clock Management (sysclock)" + * + * \subsection asfdoc_sam_drivers_acc_qsg_basic_setup_code Setup Code + * + * Add this to your main application C-file: + * \verbatim + void ACC_Handler(void) + { + } \endverbatim + * Add this to the main loop or a setup function: + * \snippet acc_example.c acc_enable_clock + * + * \subsection asfdoc_sam_drivers_acc_qsg_basic_setup_workflow Workflow + * + * -# Initialize the ACC module so that: + * - ADC channel 5 is connected to its positive input + * - DAC channel 0 is connected to its negative input + * - Generate an interrupt on either edge of the output + * - Disable the ACC module output inversion + * \snippet acc_example.c acc_init + * -# Enable the ACC module interrupt: + * \snippet acc_example.c acc_irq_enable + * + * \section asfdoc_sam_drivers_acc_qsg_basic_usage Usage Steps + * + * \subsection asfdoc_sam_drivers_acc_qsg_basic_usage_code Usage Code + * + * In the ACC_Handler() function, check if the output result is available by: + * \verbatim + if ((ul_status & ACC_ISR_CE) == ACC_ISR_CE) { + } \endverbatim + * In the ACC_Handler() function, check if ADC channel 5 is greater than + * DAC channel 0 by: + * \verbatim + if (acc_get_comparison_result(ACC)) { + do_something_with_a_greater_result(); + } \endverbatim + * In the ACC_Handler() function, check if ADC channel 5 is less than + * DAC channel 0 by: + * \verbatim + if (!acc_get_comparison_result(ACC)) { + do_something_with_a_lesser_result(); + } \endverbatim + */ + +#endif /* ACC_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h new file mode 100644 index 00000000..64fcb4ee --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h @@ -0,0 +1,101 @@ +/** + * \file + * + * \brief Analog Comparator Controller (ACC) example for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ + + #ifndef ACC_EXAMPLE_H_INCLUDED + #define ACC_EXAMPLE_H_INCLUDED + +/** + * \page asfdoc_sam_drivers_acc_example_irq Analog Comparator Controller - Example Interrupt Event Generation + * + * \section asfdoc_sam_drivers_acc_example_irq_purpose Purpose + * + * This example demonstrates how to use the ACC driver to perform a voltage + * comparison on a pair of inputs and generate an interrupt. + * + * \section asfdoc_sam_drivers_acc_example_irq_requirements Requirements + * + * This example can be used on the following evaluation kits: + * - SAM4S EK + * - SAM4S EK2 + * + * \section asfdoc_sam_drivers_acc_example_irq_description Description + * + * The DAC0 and AD5 signals are selected as the inputs to the analog comparator. + * The user can change the output voltage of DAC0 and also change the voltage + * on AD5 by adjusting VR1 on the evaluation kit. + * + * The DAC0 output voltage can be adjusted between (1/6)*ADVREF and (5/6)*ADVREF + * in software, whilst the input voltage on AD5 can vary between 0 and ADVREF. + * + * A comparison interrupt event is generated when the input voltages are + * no longer equal. + * + * \section asfdoc_sam_drivers_acc_example_irq_files Main Files + * - acc.c: Analog Comparator Controller driver + * - acc.h: Analog Comparator Controller driver header file + * - acc_example.c: Analog Comparator Controller example application + * + * \section asfdoc_sam_drivers_acc_example_irq_compilinfo Compilation Information + * This software is written for GNU GCC and IAR Embedded Workbench® + * for Atmel®. Other compilers may or may not work. + + * \section asfdoc_sam_drivers_acc_example_irq_usage Usage + * + * -# Build the program and download it into the evaluation board. + * -# On the computer, open, and configure a terminal application + * (e.g., HyperTerminal on Microsoft® Windows®) with these settings: + * - 115200 baud + * - 8 bits of data + * - No parity + * - 1 stop bit + * - No flow control + * -# Start the application. + * -# In the terminal window, the following text should appear: + * \verbatim + -- ACC IRQ Example xxx -- + -- xxxxxx-xx + -- Compiled: xxx xx xxxx xx:xx:xx -- + + -- Menu Choices for this example-- + -- s: Set new DAC0 output voltage.-- + -- v: Get voltage on potentiometer.-- + -- m: Display this menu again.-- \endverbatim + * -# Enter a character on the terminal to select a menu option. + * -# Change the voltage on AD5 by adjusting VR1 on the evaluation kit in order. + * To see what comparison events occur. + */ + +#endif /* ACC_EXAMPLE_H_INCLUDED */ +/* + * Support and FAQ: visit Microchip Support + */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c new file mode 100644 index 00000000..bd70027d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c @@ -0,0 +1,730 @@ +/** + * \file + * + * \brief Analog-Front-End Controller driver for SAM. + * + * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "afec.h" +#include "sleepmgr.h" +#include "status_codes.h" +#include "sysclk.h" +#include "pmc.h" + +/** + * \defgroup sam_drivers_afec_group Analog-Front-End Controller + * + * See \ref sam_afec_quickstart. + * + * Driver for the Analog-Front-End Controller. This driver provides access to + * the main features of the AFEC controller. + * + * @{ + */ +#if defined(AFEC1) +#define NUM_OF_AFEC (2UL) +#else +#define NUM_OF_AFEC (1UL) +#endif + +/* The gap between bit EOC15 and DRDY in interrupt register */ +#if defined __SAM4E8C__ || defined __SAM4E16C__ || defined __SAM4E8CB__ || defined __SAM4E16CB__ +#define AFEC_INTERRUPT_GAP1 (17UL) +#elif defined __SAM4E8E__ || defined __SAM4E16E__ +#define AFEC_INTERRUPT_GAP1 (8UL) +#elif (SAMV71 || SAMV70 || SAME70 || SAMS70) +/* The gap between bit EOC11 and DRDY in interrupt register */ +#define AFEC_INTERRUPT_GAP1 (12UL) +#endif + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/* The gap between bit COMPE and TEMPCHG in interrupt register */ +#define AFEC_INTERRUPT_GAP2 (3UL) +#else +/* The gap between bit RXBUFF and TEMPCHG in interrupt register */ +#define AFEC_INTERRUPT_GAP2 (1UL) +#endif + +/* The number of channel in channel sequence1 register */ +#define AFEC_SEQ1_CHANNEL_NUM (8UL) + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/* The interrupt source number of temperature sensor */ +#define AFEC_TEMP_INT_SOURCE_NUM (11UL) +#else +/* The interrupt source number of temperature sensor */ +#define AFEC_TEMP_INT_SOURCE_NUM (15UL) +#endif + +afec_callback_t afec_callback_pointer[NUM_OF_AFEC][_AFEC_NUM_OF_INTERRUPT_SOURCE]; + + +/** + * \internal + * \brief Get AFEC instance number. + * + * \param afec Base address of the AFEC + * + * \return AFEC instance number + */ +static uint32_t afec_find_inst_num(Afec *const afec) +{ +#if defined(AFEC1) + if (afec == AFEC1) { + return 1; + } +#endif +#if defined(AFEC0) + if (afec == AFEC0) { + return 0; + } +#endif + return 0; +} + +/** + * \internal + * \brief Get AFEC Peripheral ID. + * + * \param afec Base address of the AFEC + * + * \return AFEC Peripheral ID + */ +static uint32_t afec_find_pid(Afec *const afec) +{ +#if defined(ID_AFEC1) + if (afec == AFEC1) { + return ID_AFEC1; + } +#endif +#if defined(ID_AFEC0) + if (afec == AFEC0) { + return ID_AFEC0; + } +#endif + return ID_AFEC0; +} + +/** + * \internal + * \brief Configure the AFEC Module. + * + * \param afec Base address of the AFEC + * \param config Configuration for the AFEC + */ +static void afec_set_config(Afec *const afec, struct afec_config *config) +{ + uint32_t reg = 0; + + reg = (config->useq ? AFEC_MR_USEQ_REG_ORDER : 0) | + #if (SAMV71 || SAMV70 || SAME70 || SAMS70) + AFEC_MR_PRESCAL((config->mck / config->afec_clock )- 1) | + AFEC_MR_ONE | + #else + (config->anach ? AFEC_MR_ANACH_ALLOWED : 0) | + AFEC_MR_PRESCAL(config->mck / (2 * config->afec_clock) - 1) | + (config->settling_time) | + #endif + AFEC_MR_TRACKTIM(config->tracktim) | + AFEC_MR_TRANSFER(config->transfer) | + (config->startup_time); + + afec->AFEC_MR = reg; + + afec->AFEC_EMR = (config->tag ? AFEC_EMR_TAG : 0) | + (config->resolution) | + (config->stm ? AFEC_EMR_STM : 0); + #if (SAMV71 || SAMV70 || SAME70 || SAMS70) + afec->AFEC_ACR = AFEC_ACR_IBCTL(config->ibctl) | AFEC_ACR_PGA0EN | AFEC_ACR_PGA1EN; + #else + afec->AFEC_ACR = AFEC_ACR_IBCTL(config->ibctl); + #endif +} + +/** + * \brief Configure the AFEC channel. + * + * \param afec Base address of the AFEC + * \param channel The channel number + * \param config Configuration for the AFEC channel + */ +void afec_ch_set_config(Afec *const afec, const enum afec_channel_num channel, + struct afec_ch_config *config) +{ + afec_ch_sanity_check(afec, channel); + uint32_t reg = 0; + + reg = afec->AFEC_DIFFR; + reg &= ~(0x1u << channel); + reg |= (config->diff) ? (0x1u << channel) : 0; + afec->AFEC_DIFFR = reg; + + reg = afec->AFEC_CGR; + reg &= ~(0x03u << (2 * channel)); + reg |= (config->gain) << (2 * channel); + afec->AFEC_CGR = reg; +} + +/** + * \brief Configure the AFEC temperature sensor. + * + * \param afec Base address of the AFEC + * \param config Configuration for the AFEC temperature sensor + */ +void afec_temp_sensor_set_config(Afec *const afec, + struct afec_temp_sensor_config *config) +{ + Assert(afec == AFEC0); + + uint32_t reg = 0; + + reg = ((config->rctc) ? AFEC_TEMPMR_RTCT : 0) | (config->mode); + afec->AFEC_TEMPMR = reg; + + afec->AFEC_TEMPCWR = AFEC_TEMPCWR_TLOWTHRES(config->low_threshold) | + AFEC_TEMPCWR_THIGHTHRES(config->high_threshold); + +} + +/** + * \brief Get the AFEC default configurations. + * + * Use to initialize the configuration structure to known default values. This + * function should be called at the start of any AFEC initiation. + * + * The default configuration is as follows: + * - 12 -bit resolution + * - AFEC clock frequency is 6MHz + * - Start Up Time is 64 periods AFEC clock, for SAMV71 is 24 periods AFEC clock + * - Analog Settling Time is 3 periods of AFEC clock + * - Tracking Time is 3 periods of AFEC clock + * - Transfer Period is 5 periods AFEC clock,for SAMV71 is 7 periods AFEC clock + * - Allows different analog settings for each channel + * - The controller converts channels in a simple numeric order + * - Appends the channel number to the conversion result in AFE_LDCR register + * - Only a Single Trigger is required to get an averaged value + * - AFE Bias Current Control value is 1 + * + * \param cfg Pointer to configuration structure to be initiated. + */ +void afec_get_config_defaults(struct afec_config *const cfg) +{ + /* Sanity check argument. */ + Assert(cfg); + + cfg->resolution = AFEC_12_BITS; + cfg->mck = sysclk_get_cpu_hz(); + cfg->afec_clock = 6000000UL; + cfg->startup_time = AFEC_STARTUP_TIME_4; + #if !(SAMV71 || SAMV70 || SAME70 || SAMS70) + cfg->settling_time = AFEC_SETTLING_TIME_0; + #endif + cfg->tracktim = 2; + cfg->transfer = 1; + cfg->anach = true; + cfg->useq = false; + cfg->tag = true; + cfg->stm = true; + cfg->ibctl = 1; +} + +/** + * \brief Get the AFEC channel default configurations. + * + * Use to initialize the configuration structure to known default values. + * + * The default configuration is as follows: + * - Single Ended Mode + * - Gain value is 1 + * + * \param cfg Pointer to channel configuration structure to be initiated. + */ +void afec_ch_get_config_defaults(struct afec_ch_config *const cfg) +{ + /*Sanity check argument. */ + Assert(cfg); + + cfg->diff = false; + cfg->gain = AFEC_GAINVALUE_1; + +} + +/** + * \brief Get the AFEC Temperature Sensor default configurations. + * + * Use to initialize the configuration structure to known default values. + * + * The default configuration is as follows: + * - The temperature sensor measure is not triggered by RTC event + * - Generates an event when the converted data is in the comparison window + * - The window range is 0xFF ~ 0xFFF + * + * \param cfg Pointer to temperature sensor configuration structure + * to be initiated. + */ +void afec_temp_sensor_get_config_defaults( + struct afec_temp_sensor_config *const cfg) +{ + /*Sanity check argument. */ + Assert(cfg); + + cfg->rctc = false; + cfg->mode= AFEC_TEMP_CMP_MODE_2; + cfg->low_threshold= 0xFF; + cfg->high_threshold= 0xFFF; +} + +/** + * \brief Initialize the AFEC Module. + * + * \param afec Base address of the AFEC + * \param config Configuration for the AFEC + * + * \retval STATUS_OK Initialization is finished. + * \retval STATUS_ERR_BUSY Initialization failed. + */ +enum status_code afec_init(Afec *const afec, struct afec_config *config) +{ + Assert(afec); + Assert(config); + + if ((afec_get_interrupt_status(afec) & AFEC_ISR_DRDY) == AFEC_ISR_DRDY) { + return STATUS_ERR_BUSY; + } + + /* Reset and configure the AFEC module */ + afec->AFEC_CR = AFEC_CR_SWRST; + afec_set_config(afec, config); + + uint32_t i; + if(afec == AFEC0) { + for (i = 0; i < _AFEC_NUM_OF_INTERRUPT_SOURCE; i++){ + afec_callback_pointer[0][i] = 0; + } + } + if(afec == AFEC1) { + for (i = 0; i < _AFEC_NUM_OF_INTERRUPT_SOURCE; i++){ + afec_callback_pointer[1][i] = 0; + } + } + + return STATUS_OK; +} + +/** + * \brief Configure comparison mode. + * + * \param afec Base address of the AFEC. + * \param mode Comparison mode. + * \param channel Comparison Selected Channel. + * \param cmp_filter Compare Event Filtering. + */ +void afec_set_comparison_mode(Afec *const afec, + const enum afec_cmp_mode mode, + const enum afec_channel_num channel, uint8_t cmp_filter) +{ + if (channel != AFEC_CHANNEL_ALL) { + afec_ch_sanity_check(afec, channel); + } + + uint32_t reg; + + reg = afec->AFEC_EMR; + + reg &= ~(AFEC_EMR_CMPSEL_Msk | + AFEC_EMR_CMPMODE_Msk | + AFEC_EMR_CMPFILTER_Msk); + reg |= mode | + ((channel == AFEC_CHANNEL_ALL) ? AFEC_EMR_CMPALL + : AFEC_EMR_CMPSEL(channel)) | + AFEC_EMR_CMPFILTER(cmp_filter); + + afec->AFEC_EMR = reg; +} + +/** + * \brief Configure AFEC power mode. + * + * \param afec Base address of the AFEC. + * \param mode AFEC power mode value. + */ +void afec_set_power_mode(Afec *const afec, + const enum afec_power_mode mode) +{ + uint32_t reg; + + reg = afec->AFEC_MR; + + switch(mode) { + case AFEC_POWER_MODE_0: + reg &= ~(AFEC_MR_FWUP_ON | AFEC_MR_SLEEP_SLEEP); + break; + case AFEC_POWER_MODE_1: + reg |= AFEC_MR_FWUP_ON; + break; + case AFEC_POWER_MODE_2: + reg |= AFEC_MR_SLEEP_SLEEP; + reg &= ~AFEC_MR_FWUP_ON; + break; + } + + afec->AFEC_MR = reg; +} + +/** + * \brief Set callback for AFEC + * + * \param afec Base address of the AFEC + * \param source Interrupt source + * \param callback Callback function pointer + * \param irq_level Interrupt level + */ +void afec_set_callback(Afec *const afec, enum afec_interrupt_source source, + afec_callback_t callback, uint8_t irq_level) +{ + Assert(afec); + Assert(callback); + + uint32_t i = afec_find_inst_num(afec); + afec_callback_pointer[i][source] = callback; + if (!i) { + irq_register_handler(AFEC0_IRQn, irq_level); + } else if (i == 1) { + irq_register_handler(AFEC1_IRQn, irq_level); + } + /* Enable the specified interrupt source */ + afec_enable_interrupt(afec, source); +} + +/** + * \brief Enable AFEC interrupts. + * + * \param afec Base address of the AFEC. + * \param interrupt_source Interrupts to be enabled. + */ +void afec_enable_interrupt(Afec *const afec, + enum afec_interrupt_source interrupt_source) +{ + if (interrupt_source == AFEC_INTERRUPT_ALL) { + afec->AFEC_IER = AFEC_INTERRUPT_ALL; + return; + } + + if (interrupt_source < AFEC_INTERRUPT_DATA_READY) { + #if (SAMV71 || SAMV70 || SAME70 || SAMS70) + if (interrupt_source == AFEC_INTERRUPT_EOC_11) { + afec->AFEC_IER = 1 << AFEC_TEMP_INT_SOURCE_NUM; + #else + if (interrupt_source == AFEC_INTERRUPT_EOC_15) { + afec->AFEC_IER = 1 << AFEC_TEMP_INT_SOURCE_NUM; + #endif + } else { + afec->AFEC_IER = 1 << interrupt_source; + } + } else if (interrupt_source < AFEC_INTERRUPT_TEMP_CHANGE) { + afec->AFEC_IER = 1 << (interrupt_source + AFEC_INTERRUPT_GAP1); + } else { + afec->AFEC_IER = 1 << (interrupt_source + AFEC_INTERRUPT_GAP1 + + AFEC_INTERRUPT_GAP2); + } +} + +/** + * \brief Disable AFEC interrupts. + * + * \param afec Base address of the AFEC. + * \param interrupt_source Interrupts to be disabled. + */ +void afec_disable_interrupt(Afec *const afec, + enum afec_interrupt_source interrupt_source) +{ + if (interrupt_source == AFEC_INTERRUPT_ALL) { + afec->AFEC_IDR = AFEC_INTERRUPT_ALL; + return; + } + + if (interrupt_source < AFEC_INTERRUPT_DATA_READY) { + #if (SAMV71 || SAMV70 || SAME70 || SAMS70) + if (interrupt_source == AFEC_INTERRUPT_EOC_11) { + afec->AFEC_IDR = 1 << AFEC_TEMP_INT_SOURCE_NUM; + #else + if (interrupt_source == AFEC_INTERRUPT_EOC_15) { + afec->AFEC_IDR = 1 << AFEC_TEMP_INT_SOURCE_NUM; + #endif + } else { + afec->AFEC_IDR = 1 << interrupt_source; + } + } else if (interrupt_source < AFEC_INTERRUPT_TEMP_CHANGE) { + afec->AFEC_IDR = 1 << (interrupt_source + AFEC_INTERRUPT_GAP1); + } else { + afec->AFEC_IDR = 1 << (interrupt_source + AFEC_INTERRUPT_GAP1 + + AFEC_INTERRUPT_GAP2); + } +} + +/** + * \internal + * \brief Common AFEC interrupt handler + * + * The optional callback used by the interrupt handler is set by the + * afec_set_callback() function. + * + * \param inst_num AFEC instance number to handle interrupt for + * \param source Interrupt source number + */ +static void afec_interrupt(uint8_t inst_num, + enum afec_interrupt_source source) +{ + if (afec_callback_pointer[inst_num][source]) { + afec_callback_pointer[inst_num][source](); + } +} + +/** + * \internal + * \brief Call the callback function if the corresponding interrupt is asserted + * + * \param afec Base address of the AFEC. + */ +static void afec_process_callback(Afec *const afec) +{ + volatile uint32_t status; + uint32_t cnt, inst_num; + + status = afec_get_interrupt_status(afec) & afec_get_interrupt_mask(afec); + inst_num = afec_find_inst_num(afec); + + for (cnt = 0; cnt < _AFEC_NUM_OF_INTERRUPT_SOURCE; cnt++) { + if (cnt < AFEC_INTERRUPT_DATA_READY) { + #if defined __SAM4E8C__ || defined __SAM4E16C__ || defined __SAM4E8CB__ || defined __SAM4E16CB__ + if(cnt == AFEC_INTERRUPT_EOC_15) { + if (status & (1 << AFEC_TEMP_INT_SOURCE_NUM)) { + afec_interrupt(inst_num, (enum afec_interrupt_source)cnt); + } + } else { + if (status & (1 << cnt)) { + afec_interrupt(inst_num, (enum afec_interrupt_source)cnt); + } + } + #elif defined __SAM4E8E__ || defined __SAM4E16E__ || SAMV71 || SAMV70 || SAMS70 || SAME70 + if (status & (1 << cnt)) { + afec_interrupt(inst_num, (enum afec_interrupt_source)cnt); + } + #endif + } else if (cnt < AFEC_INTERRUPT_TEMP_CHANGE) { + if (status & (1 << (cnt + AFEC_INTERRUPT_GAP1))) { + afec_interrupt(inst_num, (enum afec_interrupt_source)cnt); + } + } else { + if (status & (1 << (cnt + AFEC_INTERRUPT_GAP1 + AFEC_INTERRUPT_GAP2))) { + afec_interrupt(inst_num, (enum afec_interrupt_source)cnt); + } + } + } +} + +/** + * \brief Interrupt handler for AFEC0. + */ +void AFEC0_Handler(void) +{ + afec_process_callback(AFEC0); +} + +/** + * \brief Interrupt handler for AFEC1. + */ +void AFEC1_Handler(void) +{ + afec_process_callback(AFEC1); +} + +/** + * \brief Enable AFEC Module. + * + * \param afec Base address of the AFEC + */ +void afec_enable(Afec *const afec) +{ + Assert(afec); + uint32_t pid; + + pid = afec_find_pid(afec); + /* Enable peripheral clock. */ + pmc_enable_periph_clk(pid); + sleepmgr_lock_mode(SLEEPMGR_SLEEP_WFI); +} + +/** + * \brief Disable AFEC Module. + * + * \param afec Base address of the AFEC + */ +void afec_disable(Afec *const afec) +{ + Assert(afec); + uint32_t pid; + + pid = afec_find_pid(afec); + /* Disable peripheral clock. */ + pmc_disable_periph_clk(pid); + sleepmgr_unlock_mode(SLEEPMGR_SLEEP_WFI); +} + +/** + * \brief Configure conversion sequence. + * + * \param afec Base address of the AFEC. + * \param ch_list Channel sequence list. + * \param uc_num Number of channels in the list. + */ +void afec_configure_sequence(Afec *const afec, + const enum afec_channel_num ch_list[], uint8_t uc_num) +{ + uint8_t uc_counter; + + /* Set user sequence mode */ + afec->AFEC_MR |= AFEC_MR_USEQ_REG_ORDER; + afec->AFEC_SEQ1R = 0; + afec->AFEC_SEQ2R = 0; + + if (uc_num < AFEC_SEQ1_CHANNEL_NUM) { + for (uc_counter = 0; uc_counter < uc_num; uc_counter++) { + afec->AFEC_SEQ1R |= + ch_list[uc_counter] << (4 * uc_counter); + } + } else { + for (uc_counter = 0; uc_counter < AFEC_SEQ1_CHANNEL_NUM; uc_counter++) { + afec->AFEC_SEQ1R |= + ch_list[uc_counter] << (4 * uc_counter); + } + for (uc_counter = 0; uc_counter < uc_num - AFEC_SEQ1_CHANNEL_NUM; + uc_counter++) { + afec->AFEC_SEQ2R |= + ch_list[uc_counter + AFEC_SEQ1_CHANNEL_NUM] << (4 * uc_counter); + } + } +} + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Configure Automatic Error Correction. + * + * \param afec Base address of the AFEC + * \param channel Number of channels in the list. + * \param offsetcorr the Offset Correction value,signed value + * \param gaincorr the Gain Correction value. + */ +void afec_configure_auto_error_correction(Afec *const afec, + const enum afec_channel_num channel, int16_t offsetcorr, uint16_t gaincorr) +{ + + + if (channel != AFEC_CHANNEL_ALL) { + afec_ch_sanity_check(afec, channel); + } + + uint32_t reg = 0; + reg = afec->AFEC_CECR; + reg |= (channel == AFEC_CHANNEL_ALL)? AFEC_CHANNEL_ALL : (0x1u << channel); + afec->AFEC_CECR = reg; + + if (channel == AFEC_CHANNEL_ALL) { + afec->AFEC_COSR = 0; + afec->AFEC_CVR = AFEC_CVR_OFFSETCORR(offsetcorr) | AFEC_CVR_GAINCORR(gaincorr); + afec->AFEC_COSR = AFEC_COSR_CSEL; + } + else if (channel < AFEC_CHANNEL_6){ + afec->AFEC_COSR = 0; + } + else{ + afec->AFEC_COSR = AFEC_COSR_CSEL; + } + afec->AFEC_CVR = AFEC_CVR_OFFSETCORR(offsetcorr) | AFEC_CVR_GAINCORR(gaincorr); + +} + +/** + * \brief correct the Converted Data of the selected channel if automatic error correction is enabled. + * + * \param afec Base address of the AFEC. + * \param afec_ch AFEC channel number. + * + * \return AFEC corrected value of the selected channel. + */ + uint32_t afec_get_correction_value(Afec *const afec, + const enum afec_channel_num afec_ch) +{ + uint32_t corrected_data = 0; + uint32_t converted_data = 0; + + afec_ch_sanity_check(afec, afec_ch); + + afec->AFEC_CSELR = afec_ch; + converted_data = afec->AFEC_CDR; + + corrected_data = (converted_data + (afec->AFEC_CVR & AFEC_CVR_OFFSETCORR_Msk)) * + (afec->AFEC_CVR >> AFEC_CVR_GAINCORR_Pos) / 1024u; + return corrected_data; + +} + +/** + * \brief Configure sample&hold mode. + * + * \param afec Base address of the AFEC. + * \param channel AFEC Channel number. + * \param mode sample&hold mode. + */ +void afec_set_sample_hold_mode(Afec *const afec, + const enum afec_channel_num channel, const enum afec_sample_hold_mode mode) +{ + if (channel != AFEC_CHANNEL_ALL) { + afec_ch_sanity_check(afec, channel); + } + + uint32_t reg = 0; + reg = afec->AFEC_SHMR; + if (mode == AFEC_SAMPLE_HOLD_MODE_1) { + + reg |= (channel == AFEC_CHANNEL_ALL)? AFEC_CHANNEL_ALL : 0x1u << channel; + } + else { + + reg = (channel == AFEC_CHANNEL_ALL)? 0 : ~(0x1u << channel); + } + afec->AFEC_SHMR = reg; + +} +#endif + +//@} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h new file mode 100644 index 00000000..c8e8593c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h @@ -0,0 +1,797 @@ +/** + * \file + * + * \brief Analog-Front-End Controller driver for SAM. + * + * Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef AFEC_H_INCLUDED +#define AFEC_H_INCLUDED + +#include "compiler.h" +#include "status_codes.h" + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** Definitions for AFEC resolution */ +enum afec_resolution { + AFEC_12_BITS = AFEC_EMR_RES_NO_AVERAGE, /* AFEC 12-bit resolution */ + AFEC_13_BITS = AFEC_EMR_RES_OSR4, /* AFEC 13-bit resolution */ + AFEC_14_BITS = AFEC_EMR_RES_OSR16, /* AFEC 14-bit resolution */ + AFEC_15_BITS = AFEC_EMR_RES_OSR64, /* AFEC 15-bit resolution */ + AFEC_16_BITS = AFEC_EMR_RES_OSR256 /* AFEC 16-bit resolution */ +}; +#else +/** Definitions for AFEC resolution */ +enum afec_resolution { + AFEC_10_BITS = AFEC_EMR_RES_LOW_RES, /* AFEC 10-bit resolution */ + AFEC_12_BITS = AFEC_EMR_RES_NO_AVERAGE, /* AFEC 12-bit resolution */ + AFEC_13_BITS = AFEC_EMR_RES_OSR4, /* AFEC 13-bit resolution */ + AFEC_14_BITS = AFEC_EMR_RES_OSR16, /* AFEC 14-bit resolution */ + AFEC_15_BITS = AFEC_EMR_RES_OSR64, /* AFEC 15-bit resolution */ + AFEC_16_BITS = AFEC_EMR_RES_OSR256 /* AFEC 16-bit resolution */ +}; +#endif +/** Definitions for AFEC power mode */ +enum afec_power_mode { + /* AFEC core on and reference voltage circuitry on */ + AFEC_POWER_MODE_0 = 0, + /* AFEC core off and reference voltage circuitry on */ + AFEC_POWER_MODE_1, + /* AFEC core off and reference voltage circuitry off */ + AFEC_POWER_MODE_2 +}; + +/** Definitions for AFEC trigger */ +enum afec_trigger { + /* Starting a conversion is only possible by software. */ + AFEC_TRIG_SW = AFEC_MR_TRGEN_DIS, + /* External trigger */ + AFEC_TRIG_EXT = AFEC_MR_TRGSEL_AFEC_TRIG0 | AFEC_MR_TRGEN, + /* TIO Output of the Timer Counter Channel 0 */ + AFEC_TRIG_TIO_CH_0 = AFEC_MR_TRGSEL_AFEC_TRIG1 | AFEC_MR_TRGEN, + /* TIO Output of the Timer Counter Channel 1 */ + AFEC_TRIG_TIO_CH_1 = AFEC_MR_TRGSEL_AFEC_TRIG2 | AFEC_MR_TRGEN, + /* TIO Output of the Timer Counter Channel 2 */ + AFEC_TRIG_TIO_CH_2 = AFEC_MR_TRGSEL_AFEC_TRIG3 | AFEC_MR_TRGEN, + /* PWM Event Line 0 */ + AFEC_TRIG_PWM_EVENT_LINE_0 = AFEC_MR_TRGSEL_AFEC_TRIG4 | AFEC_MR_TRGEN, + /* PWM Event Line 1 */ + AFEC_TRIG_PWM_EVENT_LINE_1 = AFEC_MR_TRGSEL_AFEC_TRIG5 | AFEC_MR_TRGEN, +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) + /*Analog Comparator*/ + AFEC_TRIG_ANALOG_COMPARATOR = AFEC_MR_TRGSEL_AFEC_TRIG6 | AFEC_MR_TRGEN, +#endif + /* Freerun mode conversion. */ + AFEC_TRIG_FREERUN = 0xFF, +}; + +#if defined __SAM4E8C__ || defined __SAM4E16C__ || defined __SAM4E8CB__ || defined __SAM4E16CB__ +/** Definitions for AFEC channel number */ +enum afec_channel_num { + AFEC_CHANNEL_0 = 0, + AFEC_CHANNEL_1, + AFEC_CHANNEL_2, + AFEC_CHANNEL_3, + AFEC_CHANNEL_4, + AFEC_CHANNEL_5, + AFEC_TEMPERATURE_SENSOR = 15, + AFEC_CHANNEL_ALL = 0x803F, +} ; +#elif defined __SAM4E8E__ || defined __SAM4E16E__ +/** Definitions for AFEC channel number */ +enum afec_channel_num { + AFEC_CHANNEL_0 = 0, + AFEC_CHANNEL_1, + AFEC_CHANNEL_2, + AFEC_CHANNEL_3, + AFEC_CHANNEL_4, + AFEC_CHANNEL_5, + AFEC_CHANNEL_6, + AFEC_CHANNEL_7, + AFEC_CHANNEL_8, + AFEC_CHANNEL_9, + AFEC_CHANNEL_10, + AFEC_CHANNEL_11, + AFEC_CHANNEL_12, + AFEC_CHANNEL_13, + AFEC_CHANNEL_14, + AFEC_TEMPERATURE_SENSOR, + AFEC_CHANNEL_ALL = 0xFFFF, +} ; +#elif (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** Definitions for AFEC channel number */ +enum afec_channel_num { + AFEC_CHANNEL_0 = 0, + AFEC_CHANNEL_1, + AFEC_CHANNEL_2, + AFEC_CHANNEL_3, + AFEC_CHANNEL_4, + AFEC_CHANNEL_5, + AFEC_CHANNEL_6, + AFEC_CHANNEL_7, + AFEC_CHANNEL_8, + AFEC_CHANNEL_9, + AFEC_CHANNEL_10, + AFEC_TEMPERATURE_SENSOR, + AFEC_CHANNEL_ALL = 0x0FFF, +} ; + +#define NB_CH_AFE0 (12UL) +#define NB_CH_AFE1 (12UL) +#endif + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +enum afec_sample_hold_mode { + /*Single Sample-and-Hold mode*/ + AFEC_SAMPLE_HOLD_MODE_0, + /*Dual Sample-and-Hold mode*/ + AFEC_SAMPLE_HOLD_MODE_1, +}; +#endif + +/** Definitions for AFEC gain value */ +enum afec_gainvalue { + AFEC_GAINVALUE_0 = 0, + AFEC_GAINVALUE_1 = 1, + AFEC_GAINVALUE_2 = 2, + AFEC_GAINVALUE_3 = 3 +}; + +/** Definitions for AFEC Start Up Time */ +enum afec_startup_time { + AFEC_STARTUP_TIME_0 = AFEC_MR_STARTUP_SUT0, + AFEC_STARTUP_TIME_1 = AFEC_MR_STARTUP_SUT8, + AFEC_STARTUP_TIME_2 = AFEC_MR_STARTUP_SUT16, + AFEC_STARTUP_TIME_3 = AFEC_MR_STARTUP_SUT24, + AFEC_STARTUP_TIME_4 = AFEC_MR_STARTUP_SUT64, + AFEC_STARTUP_TIME_5 = AFEC_MR_STARTUP_SUT80, + AFEC_STARTUP_TIME_6 = AFEC_MR_STARTUP_SUT96, + AFEC_STARTUP_TIME_7 = AFEC_MR_STARTUP_SUT112, + AFEC_STARTUP_TIME_8 = AFEC_MR_STARTUP_SUT512, + AFEC_STARTUP_TIME_9 = AFEC_MR_STARTUP_SUT576, + AFEC_STARTUP_TIME_10 = AFEC_MR_STARTUP_SUT640, + AFEC_STARTUP_TIME_11 = AFEC_MR_STARTUP_SUT704, + AFEC_STARTUP_TIME_12 = AFEC_MR_STARTUP_SUT768, + AFEC_STARTUP_TIME_13 = AFEC_MR_STARTUP_SUT832, + AFEC_STARTUP_TIME_14 = AFEC_MR_STARTUP_SUT896, + AFEC_STARTUP_TIME_15 = AFEC_MR_STARTUP_SUT960 +}; + +#if SAM4E +/** Definitions for AFEC analog settling time */ +enum afec_settling_time { + AFEC_SETTLING_TIME_0 = AFEC_MR_SETTLING_AST3, + AFEC_SETTLING_TIME_1 = AFEC_MR_SETTLING_AST5, + AFEC_SETTLING_TIME_2 = AFEC_MR_SETTLING_AST9, + AFEC_SETTLING_TIME_3 = AFEC_MR_SETTLING_AST17 +}; +#endif + +/** Definitions for Comparison Mode */ +enum afec_cmp_mode { + AFEC_CMP_MODE_0 = AFEC_EMR_CMPMODE_LOW, + AFEC_CMP_MODE_1 = AFEC_EMR_CMPMODE_HIGH, + AFEC_CMP_MODE_2 = AFEC_EMR_CMPMODE_IN, + AFEC_CMP_MODE_3 = AFEC_EMR_CMPMODE_OUT +}; + +/** Definitions for Temperature Comparison Mode */ +enum afec_temp_cmp_mode { + AFEC_TEMP_CMP_MODE_0 = AFEC_TEMPMR_TEMPCMPMOD_LOW, + AFEC_TEMP_CMP_MODE_1 = AFEC_TEMPMR_TEMPCMPMOD_HIGH, + AFEC_TEMP_CMP_MODE_2 = AFEC_TEMPMR_TEMPCMPMOD_IN, + AFEC_TEMP_CMP_MODE_3 = AFEC_TEMPMR_TEMPCMPMOD_OUT +}; + +/** + * \brief Analog-Front-End Controller configuration structure. + * + * Configuration structure for a Analog-Front-End Controller instance. + * This structure could be initialized by the \ref afec_get_config_defaults() + * function before being modified by the user application. + */ +struct afec_config { + /** Resolution */ + enum afec_resolution resolution; + /** Master Clock */ + uint32_t mck; + /** AFEC Clock */ + uint32_t afec_clock; + /** Start Up Time */ + enum afec_startup_time startup_time; + #if SAM4E + /** Analog Settling Time = (settling_time + 1) / AFEC clock */ + enum afec_settling_time settling_time; + #endif + /** Tracking Time = tracktim / AFEC clock */ + uint8_t tracktim; + /** Transfer Period = (transfer * 2 + 3) / AFEC clock */ + uint8_t transfer; + /** Analog Change */ + bool anach; + /** Use Sequence Enable */ + bool useq; + /** TAG of AFE_LDCR register */ + bool tag; + /** Single Trigger Mode */ + bool stm; + /** AFE Bias Current Control */ + uint8_t ibctl; +}; + +/** AFEC channel configuration structure.*/ +struct afec_ch_config { + /** Differential Mode */ + bool diff; + /** Gain Value */ + enum afec_gainvalue gain; +}; + +/** AFEC Temperature Sensor configuration structure.*/ +struct afec_temp_sensor_config { + /** RTC Trigger mode */ + bool rctc; + /** Temperature Comparison Mode */ + enum afec_temp_cmp_mode mode; + /** Temperature Low Threshold */ + uint16_t low_threshold; + /** Temperature High Threshold */ + uint16_t high_threshold; +}; + +#if defined __SAM4E8C__ || defined __SAM4E16C__ || defined __SAM4E8CB__ || defined __SAM4E16CB__ +/** AFEC interrupt source type */ +enum afec_interrupt_source { + AFEC_INTERRUPT_EOC_0 = 0, + AFEC_INTERRUPT_EOC_1, + AFEC_INTERRUPT_EOC_2, + AFEC_INTERRUPT_EOC_3, + AFEC_INTERRUPT_EOC_4, + AFEC_INTERRUPT_EOC_5, + AFEC_INTERRUPT_EOC_15, + AFEC_INTERRUPT_DATA_READY, + AFEC_INTERRUPT_OVERRUN_ERROR, + AFEC_INTERRUPT_COMP_ERROR, + AFEC_INTERRUPT_END_RXBUF, + AFEC_INTERRUPT_RXBUF_FULL, + AFEC_INTERRUPT_TEMP_CHANGE, + AFEC_INTERRUPT_END_CAL, + _AFEC_NUM_OF_INTERRUPT_SOURCE, + AFEC_INTERRUPT_ALL = 0xDF00803F, +}; +#elif defined __SAM4E8E__ || defined __SAM4E16E__ +/** AFEC interrupt source type */ +enum afec_interrupt_source { + AFEC_INTERRUPT_EOC_0 = 0, + AFEC_INTERRUPT_EOC_1, + AFEC_INTERRUPT_EOC_2, + AFEC_INTERRUPT_EOC_3, + AFEC_INTERRUPT_EOC_4, + AFEC_INTERRUPT_EOC_5, + AFEC_INTERRUPT_EOC_6, + AFEC_INTERRUPT_EOC_7, + AFEC_INTERRUPT_EOC_8, + AFEC_INTERRUPT_EOC_9, + AFEC_INTERRUPT_EOC_10, + AFEC_INTERRUPT_EOC_11, + AFEC_INTERRUPT_EOC_12, + AFEC_INTERRUPT_EOC_13, + AFEC_INTERRUPT_EOC_14, + AFEC_INTERRUPT_EOC_15, + AFEC_INTERRUPT_DATA_READY, + AFEC_INTERRUPT_OVERRUN_ERROR, + AFEC_INTERRUPT_COMP_ERROR, + AFEC_INTERRUPT_END_RXBUF, + AFEC_INTERRUPT_RXBUF_FULL, + AFEC_INTERRUPT_TEMP_CHANGE, + AFEC_INTERRUPT_END_CAL, + _AFEC_NUM_OF_INTERRUPT_SOURCE, + AFEC_INTERRUPT_ALL = 0xDF00FFFF, +}; +#elif (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** AFEC interrupt source type */ +enum afec_interrupt_source { + AFEC_INTERRUPT_EOC_0 = 0, + AFEC_INTERRUPT_EOC_1, + AFEC_INTERRUPT_EOC_2, + AFEC_INTERRUPT_EOC_3, + AFEC_INTERRUPT_EOC_4, + AFEC_INTERRUPT_EOC_5, + AFEC_INTERRUPT_EOC_6, + AFEC_INTERRUPT_EOC_7, + AFEC_INTERRUPT_EOC_8, + AFEC_INTERRUPT_EOC_9, + AFEC_INTERRUPT_EOC_10, + AFEC_INTERRUPT_EOC_11, + AFEC_INTERRUPT_DATA_READY, + AFEC_INTERRUPT_OVERRUN_ERROR, + AFEC_INTERRUPT_COMP_ERROR, + AFEC_INTERRUPT_TEMP_CHANGE, + _AFEC_NUM_OF_INTERRUPT_SOURCE, + AFEC_INTERRUPT_ALL = 0x47000FFF, +}; +#endif + +typedef void (*afec_callback_t)(void); + +void afec_get_config_defaults(struct afec_config *const cfg); +void afec_ch_get_config_defaults(struct afec_ch_config *const cfg); +void afec_temp_sensor_get_config_defaults( + struct afec_temp_sensor_config *const cfg); +enum status_code afec_init(Afec *const afec, struct afec_config *const config); +void afec_temp_sensor_set_config(Afec *const afec, + struct afec_temp_sensor_config *config); +void afec_ch_set_config(Afec *const afec, const enum afec_channel_num channel, + struct afec_ch_config *config); +void afec_configure_sequence(Afec *const afec, + const enum afec_channel_num ch_list[], const uint8_t uc_num); +void afec_enable(Afec *const afec); +void afec_disable(Afec *const afec); +void afec_set_callback(Afec *const afec, enum afec_interrupt_source source, + afec_callback_t callback, uint8_t irq_level); + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +void afec_configure_auto_error_correction(Afec *const afec, + const enum afec_channel_num channel,int16_t offsetcorr, uint16_t gaincorr); + +uint32_t afec_get_correction_value(Afec *const afec, + const enum afec_channel_num afec_ch); +void afec_set_sample_hold_mode(Afec *const afec, + const enum afec_channel_num channel,const enum afec_sample_hold_mode mode); + +#endif +/** + * \internal + * \brief AFEC channel sanity check + * + * \param afec Base address of the AFEC. + * \param channel AFEC channel number. + * + */ +static inline void afec_ch_sanity_check(Afec *const afec, + const enum afec_channel_num channel) +{ + if (afec == AFEC0) { + #if defined __SAM4E8C__ || defined __SAM4E16C__ || defined __SAM4E8CB__ || defined __SAM4E16CB__ + Assert((channel < NB_CH_AFE0) || (channel == AFEC_TEMPERATURE_SENSOR)); + #elif defined __SAM4E8E__ || defined __SAM4E16E__ + Assert(channel < NB_CH_AFE0); + #elif (SAMV71 || SAMV70 || SAME70 || SAMS70) + Assert(channel < NB_CH_AFE0); + #endif + } else if (afec == AFEC1) { + Assert(channel < NB_CH_AFE1); + } + UNUSED(channel); +} + +/** + * \brief Configure conversion trigger and free run mode. + * + * \param afec Base address of the AFEC. + * \param trigger Conversion trigger. + * + */ +static inline void afec_set_trigger(Afec *const afec, + const enum afec_trigger trigger) +{ + uint32_t reg; + + reg = afec->AFEC_MR; + + if (trigger == AFEC_TRIG_FREERUN) { + reg |= AFEC_MR_FREERUN_ON; + } else { + reg &= ~(AFEC_MR_TRGSEL_Msk | AFEC_MR_TRGEN | AFEC_MR_FREERUN_ON); + reg |= trigger; + } + + afec->AFEC_MR = reg; +} + +/** + * \brief Configure conversion resolution. + * + * \param afec Base address of the AFEC. + * \param res Conversion resolution. + * + */ +static inline void afec_set_resolution(Afec *const afec, + const enum afec_resolution res) +{ + uint32_t reg; + + reg = afec->AFEC_EMR; + + reg &= ~AFEC_EMR_RES_Msk; + reg |= res; + + afec->AFEC_EMR = reg; +} + +void afec_set_comparison_mode(Afec *const afec, + const enum afec_cmp_mode mode, const enum afec_channel_num channel, + uint8_t cmp_filter); + +/** + * \brief Get comparison mode. + * + * \param afec Base address of the AFEC. + * + * \retval Compare mode value. + */ +static inline enum afec_cmp_mode afec_get_comparison_mode(Afec *const afec) +{ + return (enum afec_cmp_mode)(afec->AFEC_EMR & AFEC_EMR_CMPMODE_Msk); +} + +/** + * \brief Configure AFEC compare window. + * + * \param afec Base address of the AFEC. + * \param us_low_threshold Low threshold of compare window. + * \param us_high_threshold High threshold of compare window. + */ +static inline void afec_set_comparison_window(Afec *const afec, + const uint16_t us_low_threshold, const uint16_t us_high_threshold) +{ + afec->AFEC_CWR = AFEC_CWR_LOWTHRES(us_low_threshold) | + AFEC_CWR_HIGHTHRES(us_high_threshold); +} + +/** + * \brief Enable or disable write protection of AFEC registers. + * + * \param afec Base address of the AFEC. + * \param is_enable 1 to enable, 0 to disable. + */ +static inline void afec_set_writeprotect(Afec *const afec, + const bool is_enable) +{ + if (is_enable) { + afec->AFEC_WPMR = AFEC_WPMR_WPEN | AFEC_WPMR_WPKEY_PASSWD; + } else { + afec->AFEC_WPMR = AFEC_WPMR_WPKEY_PASSWD; + } +} + +/** + * \brief Indicate write protect status. + * + * \param afec Base address of the AFEC. + * + * \return 0 if no write protect violation occurred, or 16-bit write protect + * violation source. + */ +static inline uint32_t afec_get_writeprotect_status(Afec *const afec) +{ + uint32_t reg_value; + + reg_value = afec->AFEC_WPSR; + if (reg_value & AFEC_WPSR_WPVS) { + return (reg_value & AFEC_WPSR_WPVSRC_Msk) >> AFEC_WPSR_WPVSRC_Pos; + } else { + return 0; + } +} + +/** + * \brief Get AFEC overrun error status. + * + * \param afec Base address of the AFEC. + * + * \return AFEC overrun error status. + */ +static inline uint32_t afec_get_overrun_status(Afec *const afec) +{ + return afec->AFEC_OVER; +} + +/** + * \brief Start analog-to-digital conversion. + * + * \note If one of the hardware event is selected as AFEC trigger, + * this function can NOT start analog to digital conversion. + * + * \param afec Base address of the AFEC. + */ +static inline void afec_start_software_conversion(Afec *const afec) +{ + afec->AFEC_CR = AFEC_CR_START; +} + +void afec_set_power_mode(Afec *const afec, + const enum afec_power_mode mode); + +/** + * \brief Enable the specified AFEC channel. + * + * \param afec Base address of the AFEC. + * \param afec_ch AFEC channel number. + */ +static inline void afec_channel_enable(Afec *const afec, + const enum afec_channel_num afec_ch) +{ + if (afec_ch != AFEC_CHANNEL_ALL) { + afec_ch_sanity_check(afec, afec_ch); + } + + afec->AFEC_CHER = (afec_ch == AFEC_CHANNEL_ALL) ? + AFEC_CHANNEL_ALL : 1 << afec_ch; +} + +/** + * \brief Disable the specified AFEC channel. + * + * \param afec Base address of the AFEC. + * \param afec_ch AFEC channel number. + */ +static inline void afec_channel_disable(Afec *const afec, + const enum afec_channel_num afec_ch) +{ + if (afec_ch != AFEC_CHANNEL_ALL) { + afec_ch_sanity_check(afec, afec_ch); + } + + afec->AFEC_CHDR = (afec_ch == AFEC_CHANNEL_ALL) ? + AFEC_CHANNEL_ALL : 1 << afec_ch; +} + +/** + * \brief Get the AFEC channel status. + * + * \param afec Base address of the AFEC. + * \param afec_ch AFEC channel number. + * + * \retval 1 if channel is enabled. + * \retval 0 if channel is disabled. + */ +static inline uint32_t afec_channel_get_status(Afec *const afec, + const enum afec_channel_num afec_ch) +{ + afec_ch_sanity_check(afec, afec_ch); + + return afec->AFEC_CHSR & (1 << afec_ch); +} + +/** + * \brief Read the Converted Data of the selected channel. + * + * \param afec Base address of the AFEC. + * \param afec_ch AFEC channel number. + * + * \return AFEC converted value of the selected channel. + */ +static inline uint32_t afec_channel_get_value(Afec *const afec, + enum afec_channel_num afec_ch) +{ + afec_ch_sanity_check(afec, afec_ch); + + afec->AFEC_CSELR = afec_ch; + return afec->AFEC_CDR; +} + +/** + * \brief Set analog offset to be used for channel CSEL. + * + * \param afec Base address of the AFEC. + * \param afec_ch AFEC channel number. + * \param aoffset Analog offset value. + */ +static inline void afec_channel_set_analog_offset(Afec *const afec, + enum afec_channel_num afec_ch, uint16_t aoffset) +{ + afec_ch_sanity_check(afec, afec_ch); + + afec->AFEC_CSELR = afec_ch; + afec->AFEC_COCR = (aoffset & AFEC_COCR_AOFF_Msk); +} + +/** + * \brief Get the Last Data Converted. + * + * \param afec Base address of the AFEC. + * + * \return AFEC latest converted value. + */ +static inline uint32_t afec_get_latest_value(Afec *const afec) +{ + return afec->AFEC_LCDR & AFEC_LCDR_LDATA_Msk; +} + +/** + * \brief Get the Last Converted Channel Number. + * + * \param afec Base address of the AFEC. + * + * \return AFEC Last Converted Channel Number. + */ +static inline uint32_t afec_get_latest_chan_num(Afec *const afec) +{ + return (afec->AFEC_LCDR & AFEC_LCDR_CHNB_Msk) >> AFEC_LCDR_CHNB_Pos; +} + +void afec_enable_interrupt(Afec *const afec, + enum afec_interrupt_source interrupt_source); + +void afec_disable_interrupt(Afec *const afec, + enum afec_interrupt_source interrupt_source); + +/** + * \brief Get AFEC interrupt status. + * + * \param afec Base address of the AFEC. + * + * \return The interrupt status value. + */ +static inline uint32_t afec_get_interrupt_status(Afec *const afec) +{ + return afec->AFEC_ISR; +} + +/** + * \brief Get AFEC interrupt mask. + * + * \param afec Base address of the AFEC. + * + * \return The interrupt mask value. + */ +static inline uint32_t afec_get_interrupt_mask(Afec *const afec) +{ + return afec->AFEC_IMR; +} + +#if SAM4E +/** + * \brief Get PDC registers base address. + * + * \param afec Base address of the AFEC. + * + * \return AFEC PDC register base address. + */ +static inline Pdc *afec_get_pdc_base(Afec *const afec) +{ + Pdc *p_pdc_base = NULL; + +#ifdef PDC_AFEC0 + if (afec == AFEC0) { + p_pdc_base = PDC_AFEC0; + } +#endif + +#ifdef PDC_AFEC1 + else if (afec == AFEC1) { + p_pdc_base = PDC_AFEC1; + } +#endif + + return p_pdc_base; +} + +/** + * \brief Launch an automatic calibration of the AFEC on next sequence. + * + * \param afec Base address of the AFEC. + * + * \retval STATUS_OK An automatic calibration is launched. + * \retval STATUS_ERR_BUSY Automatic calibration can not be launched because + * the AFEC is in freerun mode. + */ +static inline enum status_code afec_start_calibration(Afec *const afec) +{ + uint32_t reg; + + reg = afec->AFEC_CHSR; + afec->AFEC_CDOR = reg; + + if ((afec->AFEC_MR & AFEC_MR_FREERUN) == AFEC_MR_FREERUN_ON) { + return STATUS_ERR_BUSY; + } + afec->AFEC_CR = AFEC_CR_AUTOCAL; + return STATUS_OK; +} +#endif + +/** + * \page sam_afec_quickstart Quickstart guide for SAM AFEC driver + * + * This is the quickstart guide for the \ref sam_drivers_afec_group + * "SAM AFEC driver" with step-by-step instructions on how to configure and use + * the driver in a selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section afec_basic_use_case Basic use case + * In this basic use case, the AFEC module and single channel are configured for: + * - 12 -bit resolution + * - AFEC clock frequency is 6MHz + * - Start Up Time is 64 periods AFEC clock + * - Analog Settling Time is 3 periods of AFEC clock + * - Tracking Time is 3 periods of AFEC clock + * - Transfer Period is 5 periods AFEC clock + * - Allows different analog settings for each channel + * - The controller converts channels in a simple numeric order + * - Appends the channel number to the conversion result in AFE_LDCR register + * - Only a Single Trigger is required to get an averaged value + * - AFE Bias Current Control value is 1 + * - Software triggering of conversions + * - Single channel measurement + * - AFEC_CHANNEL_5 of AFEC0 as input + * + * \subsection sam_afec_quickstart_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (Sysclock)" + * + * \section afec_basic_use_case_setup Setup steps + * \subsection afec_basic_use_case_setup_code Example code + * Add to application C-file: + * \code + afec_enable(AFEC0); + afec_get_config_defaults(&afec_cfg); + afec_init(AFEC0, &afec_cfg); + afec_set_trigger(AFEC0, AFEC_TRIG_SW); + afec_channel_enable(AFEC0, AFEC_CHANNEL_5); +\endcode + * + * \subsection afec_basic_use_case_setup_flow Workflow + * -# Enable AFEC Module: + * - \code afec_enable(AFEC0); \endcode + * -# Get the AFEC default configurations: + * - \code afec_get_config_defaults(&afec_cfg); \endcode + * -# Initialize the AFEC Module: + * - \code afec_init(AFEC0, &afec_cfg); \endcode + * -# Configure conversion trigger and free run mode: + * - \code afec_set_trigger(AFEC0, AFEC_TRIG_SW); \endcode + * -# Enable Channel: + * - \code afec_channel_enable(AFEC0, AFEC_CHANNEL_5); \endcode + * + * \section afec_basic_use_case_usage Usage steps + * \subsection afec_basic_use_case_usage_code Example code + * Add to, e.g., main loop in application C-file: + * \code + afec_start_software_conversion(AFEC0); + while (afec_get_interrupt_status(AFEC0) & (1 << AFEC_CHANNEL_5)); + uint32_t result = afec_channel_get_value(AFEC0, AFEC_CHANNEL_5); +\endcode + * + * \subsection afec_basic_use_case_usage_flow Workflow + * -# Start AFEC conversion on channel: + * - \code afec_start_software_conversion(AFEC0); \endcode + * -# Wait for the conversion over: + * - \code while (afec_get_interrupt_status(AFEC0) & (1 << AFEC_CHANNEL_5)); +\endcode + * -# Get the conversion result: + * - \code uint32_t result = afec_channel_get_value(AFEC0, AFEC_CHANNEL_5); +\endcode + */ +#endif /* AFEC_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c new file mode 100644 index 00000000..5378389d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c @@ -0,0 +1,646 @@ +/** + * \file + * + * \brief Digital-to-Analog Converter Controller (DACC) driver for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "dacc.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_dacc_group Digital-to-Analog Converter Controller (DACC) + * + * \par Purpose + * + * Driver for the Digital-to-Analog Converter Controller. It provides access to the main + * features of the DAC controller. + * + * \par Usage + * + * -# DACC clock should be enabled before using it. + * - \ref sysclk_enable_peripheral_clock() can be used to enable the clock. + * -# Reset DACC with \ref dacc_reset(). + * -# If DACC can be enabled/disabled, uses \ref dacc_enable() and + * \ref dacc_disable(). + * -# Initialize DACC timing with \ref dacc_set_timing() (different DAC + * peripheral may require different parameters). + * -# Write conversion data with \ref dacc_write_conversion_data(). + * -# Configure trigger with \ref dacc_set_trigger() + * and \ref dacc_disable_trigger(). + * -# Configure FIFO transfer mode with \ref dacc_set_transfer_mode(). + * -# Control interrupts with \ref dacc_enable_interrupt(), + * \ref dacc_disable_interrupt(), \ref dacc_get_interrupt_mask() and + * \ref dacc_get_interrupt_status(). + * -# DACC registers support write protect with \ref dacc_set_writeprotect() + * and \ref dacc_get_writeprotect_status(). + * -# If the DACC can work with PDC, use \ref dacc_get_pdc_base() to get + * PDC register base for the DAC controller. + * -# If the DACC has several channels to process, the following functions can + * be used: + * - Enable/Disable TAG and select output channel selection by + * \ref dacc_set_channel_selection(), + * \ref dacc_enable_flexible_channel_selection(). + * - Enable/disable channel by \ref dacc_enable_channel() / + * \ref dacc_disable_channel(), get channel status by + * \ref dacc_get_channel_status(). + * + * \section dependencies Dependencies + * This driver does not depend on other modules. + * + * @{ + */ + +//! Max channel number +#if (SAM3N) || (SAM4L) || (SAM4N) +# define MAX_CH_NB 0 +#else +# define MAX_CH_NB 1 +#endif + +//! DACC Write Protect Key "DAC" in ASCII +#define DACC_WP_KEY (0x444143) + +#ifndef DACC_WPMR_WPKEY_PASSWD +# define DACC_WPMR_WPKEY_PASSWD DACC_WPMR_WPKEY(DACC_WP_KEY) +#endif + +/** + * \brief Reset DACC. + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_reset(Dacc *p_dacc) +{ + p_dacc->DACC_CR = DACC_CR_SWRST; +} + +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +/** + * \brief Enable trigger and set the trigger source. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_trigger Trigger source number. + * \param channel Channel to be set + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_trigger(Dacc *p_dacc, uint32_t ul_trigger, uint32_t channel) +{ + if(channel == 0) { + uint32_t mr = p_dacc->DACC_TRIGR & (~(DACC_TRIGR_TRGSEL0_Msk)); + p_dacc->DACC_TRIGR = mr | DACC_TRIGR_TRGEN0_EN | DACC_TRIGR_TRGSEL0(ul_trigger); + }else if(channel == 1) { + uint32_t mr = p_dacc->DACC_TRIGR & (~(DACC_TRIGR_TRGSEL1_Msk)); + p_dacc->DACC_TRIGR = mr | DACC_TRIGR_TRGEN1_EN | DACC_TRIGR_TRGSEL1(ul_trigger); + + } + return DACC_RC_OK; +} +#else +/** + * \brief Enable trigger and set the trigger source. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_trigger Trigger source number. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_trigger(Dacc *p_dacc, uint32_t ul_trigger) +{ + uint32_t mr = p_dacc->DACC_MR & (~(DACC_MR_TRGSEL_Msk)); +#if (SAM3N) || (SAM4L) || (SAM4N) + p_dacc->DACC_MR = mr + | DACC_MR_TRGEN + | ((ul_trigger << DACC_MR_TRGSEL_Pos) & DACC_MR_TRGSEL_Msk); +#else + p_dacc->DACC_MR = mr | DACC_MR_TRGEN_EN | DACC_MR_TRGSEL(ul_trigger); +#endif + return DACC_RC_OK; +} +#endif + +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +/** + * \brief Disable trigger (free run mode). + * + * \param p_dacc Pointer to a DACC instance. + * \param channel Channel to be disabled + */ +void dacc_disable_trigger(Dacc *p_dacc, uint32_t channel) +{ + if(channel == 0) { + p_dacc->DACC_TRIGR &= ~(DACC_TRIGR_TRGEN0_EN); + }else if(channel == 1) { + p_dacc->DACC_TRIGR &= ~(DACC_TRIGR_TRGEN1_EN); + } +} +#else +/** + * \brief Disable trigger (free run mode). + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_disable_trigger(Dacc *p_dacc) +{ + p_dacc->DACC_MR &= ~DACC_MR_TRGEN; +} +#endif + +/** + * \brief Set the transfer mode. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_mode Transfer mode configuration. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_transfer_mode(Dacc *p_dacc, uint32_t ul_mode) +{ + if (ul_mode) { +#if (SAM3N) || (SAM4L) || (SAM4N) + p_dacc->DACC_MR |= DACC_MR_WORD; +#elif (SAM4S) || (SAM4E) + p_dacc->DACC_MR |= DACC_MR_ONE; + p_dacc->DACC_MR |= DACC_MR_WORD_WORD; +#elif (SAMV70 || SAMV71 || SAME70 || SAMS70) + p_dacc->DACC_MR = ul_mode; +#else + p_dacc->DACC_MR |= DACC_MR_WORD_WORD; +#endif + } else { +#if (SAM3N) || (SAM4L) || (SAM4N) + p_dacc->DACC_MR &= (~DACC_MR_WORD); +#elif (SAM4S) || (SAM4E) + p_dacc->DACC_MR |= DACC_MR_ONE; + p_dacc->DACC_MR &= (~DACC_MR_WORD_WORD); +#elif (SAMV70 || SAMV71 || SAME70 || SAMS70) + p_dacc->DACC_MR = ul_mode; +#else + p_dacc->DACC_MR &= (~DACC_MR_WORD_WORD); +#endif + } + return DACC_RC_OK; +} + +/** + * \brief Enable DACC interrupts. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_interrupt_mask The interrupt mask. + */ +void dacc_enable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask) +{ + p_dacc->DACC_IER = ul_interrupt_mask; +} + +/** + * \brief Disable DACC interrupts. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_interrupt_mask The interrupt mask. + */ +void dacc_disable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask) +{ + p_dacc->DACC_IDR = ul_interrupt_mask; +} + +/** + * \brief Get the interrupt mask. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return The interrupt mask. + */ +uint32_t dacc_get_interrupt_mask(Dacc *p_dacc) +{ + return p_dacc->DACC_IMR; +} + +/** + * \brief Get the interrupt status. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return The interrupt status. + */ +uint32_t dacc_get_interrupt_status(Dacc *p_dacc) +{ + return p_dacc->DACC_ISR; +} + +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +/** + * \brief Write data to conversion register. + * + * \note The \a ul_data could be output data or data with channel TAG when + * flexible mode is used. + * + * In flexible mode the 2 bits, DACC_CDR[13:12] which are otherwise unused, + * are employed to select the channel in the same way as with the USER_SEL + * field. Finally, if the WORD field is set, the 2 bits, DACC_CDR[13:12] are + * used for channel selection of the first data and the 2 bits, + * DACC_CDR[29:28] for channel selection of the second data. + * + * \see dacc_enable_flexible_selection() + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_data The data to be transferred to analog value. + * \param channel The channel to convert the data ul_data + */ +void dacc_write_conversion_data(Dacc *p_dacc, uint32_t ul_data, uint32_t channel) +{ + p_dacc->DACC_CDR[channel] = ul_data; +} +#else +/** + * \brief Write data to conversion register. + * + * \note The \a ul_data could be output data or data with channel TAG when + * flexible mode is used. + * + * In flexible mode the 2 bits, DACC_CDR[13:12] which are otherwise unused, + * are employed to select the channel in the same way as with the USER_SEL + * field. Finally, if the WORD field is set, the 2 bits, DACC_CDR[13:12] are + * used for channel selection of the first data and the 2 bits, + * DACC_CDR[29:28] for channel selection of the second data. + * + * \see dacc_enable_flexible_selection() + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_data The data to be transferred to analog value. + */ +void dacc_write_conversion_data(Dacc *p_dacc, uint32_t ul_data) +{ + p_dacc->DACC_CDR = ul_data; +} +#endif + +/** + * \brief Enable or disable write protect of DACC registers. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_enable 1 to enable, 0 to disable. + */ +void dacc_set_writeprotect(Dacc *p_dacc, uint32_t ul_enable) +{ + if (ul_enable) { + p_dacc->DACC_WPMR = DACC_WPMR_WPKEY_PASSWD + | DACC_WPMR_WPEN; + } else { + p_dacc->DACC_WPMR = DACC_WPMR_WPKEY_PASSWD; + } +} + +/** + * \brief Get the write protect status. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return Write protect status. + */ +uint32_t dacc_get_writeprotect_status(Dacc *p_dacc) +{ + return p_dacc->DACC_WPSR; +} + +#if !(SAM4L || SAMV70 || SAMV71 || SAME70 || SAMS70) +/** + * \brief Get PDC registers base address. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return DACC PDC register base address. + */ +Pdc *dacc_get_pdc_base(Dacc *p_dacc) +{ + /* avoid Cppcheck Warning */ + UNUSED(p_dacc); + return PDC_DACC; +} +#endif + +#if (SAM3N) || (SAM4L) || (SAM4N) || defined(__DOXYGEN__) +/** + * \brief Enable DACC. + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_enable(Dacc *p_dacc) +{ + p_dacc->DACC_MR |= DACC_MR_DACEN; +} + +/** + * \brief Disable DACC. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return \ref DACC_RC_OK for OK. + */ +void dacc_disable(Dacc *p_dacc) +{ + p_dacc->DACC_MR &= (~DACC_MR_DACEN); +} + +/** + * \brief Set the DACC timing. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_startup Startup time selection. + * \param ul_clock_divider Clock divider for internal trigger. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_timing(Dacc *p_dacc, uint32_t ul_startup, + uint32_t ul_clock_divider) +{ + uint32_t mr = p_dacc->DACC_MR + & ~(DACC_MR_STARTUP_Msk | DACC_MR_CLKDIV_Msk); + p_dacc->DACC_MR = mr | DACC_MR_STARTUP(ul_startup) + | DACC_MR_CLKDIV(ul_clock_divider); + return DACC_RC_OK; +} +#endif /* #if (SAM3N) || (SAM4L) || (SAM4N) */ + +#if (SAM3S) || (SAM3XA) || (SAM4S) || (SAM4E) || SAMV70 || SAMV71 || SAME70 || SAMS70 || defined(__DOXYGEN__) +#if !(SAMV70 || SAMV71 || SAME70 || SAMS70) +/** + * \brief Disable flexible (TAG) mode and select a channel for DAC outputs. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_channel Channel to select. + * + * \return \ref DACC_RC_OK if successful. + */ +uint32_t dacc_set_channel_selection(Dacc *p_dacc, uint32_t ul_channel) +{ + uint32_t mr = p_dacc->DACC_MR & (~DACC_MR_USER_SEL_Msk); + if (ul_channel > MAX_CH_NB) { + return DACC_RC_INVALID_PARAM; + } + mr &= ~(DACC_MR_TAG); + mr |= ul_channel << DACC_MR_USER_SEL_Pos; + p_dacc->DACC_MR = mr; + + return DACC_RC_OK; +} + +/** + * \brief Enable the flexible channel selection mode (TAG). + * + * In this mode the 2 bits, DACC_CDR[13:12] which are otherwise unused, are + * employed to select the channel in the same way as with the USER_SEL field. + * Finally, if the WORD field is set, the 2 bits, DACC_CDR[13:12] are used + * for channel selection of the first data and the 2 bits, DACC_CDR[29:28] + * for channel selection of the second data. + * + * \param p_dacc Pointer to a DACC instance. + */ +void dacc_enable_flexible_selection(Dacc *p_dacc) +{ + p_dacc->DACC_MR |= DACC_MR_TAG; +} +#endif + +#if (SAM3S) || (SAM3XA) || defined(__DOXYGEN__) +/** + * \brief Set the power save mode. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_sleep_mode Sleep mode configuration. + * \param ul_fast_wakeup_mode Fast wakeup mode configuration. + * + * \return \ref DACC_RC_OK if successful. + */ +uint32_t dacc_set_power_save(Dacc *p_dacc, + uint32_t ul_sleep_mode, uint32_t ul_fast_wakeup_mode) +{ + if (ul_sleep_mode) { + p_dacc->DACC_MR |= DACC_MR_SLEEP; + } else { + p_dacc->DACC_MR &= (~DACC_MR_SLEEP); + } + if (ul_fast_wakeup_mode) { + p_dacc->DACC_MR |= DACC_MR_FASTWKUP; + } else { + p_dacc->DACC_MR &= (~DACC_MR_FASTWKUP); + } + return DACC_RC_OK; +} +#endif /* (SAM3S) || (SAM3XA) */ + +#if !(SAMV70 || SAMV71 || SAME70 || SAMS70 || SAM4E) +/** + * \brief Set DACC timings. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_refresh Refresh period setting value. + * \param ul_maxs Max speed mode configuration. + * \param ul_startup Startup time selection. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_timing(Dacc *p_dacc, + uint32_t ul_refresh, uint32_t ul_maxs, uint32_t ul_startup) +{ + uint32_t mr = p_dacc->DACC_MR + & (~(DACC_MR_REFRESH_Msk | DACC_MR_STARTUP_Msk)); + mr |= DACC_MR_REFRESH(ul_refresh); + if (ul_maxs) { + mr |= DACC_MR_MAXS; + } else { + mr &= ~DACC_MR_MAXS; + } + mr |= (DACC_MR_STARTUP_Msk & ((ul_startup) << DACC_MR_STARTUP_Pos)); + + p_dacc->DACC_MR = mr; + return DACC_RC_OK; +} +#endif + +#if (SAM4E) +/** + * \brief Set DACC timings. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_maxs Max speed mode configuration. + * \param ul_startup Startup time selection. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_timing(Dacc *p_dacc, + uint32_t ul_maxs, uint32_t ul_startup) +{ + uint32_t mr = p_dacc->DACC_MR + & (~(DACC_MR_REFRESH_Msk | DACC_MR_STARTUP_Msk)); + if (ul_maxs) { + mr |= DACC_MR_MAXS; + } else { + mr &= ~DACC_MR_MAXS; + } + mr |= (DACC_MR_STARTUP_Msk & ((ul_startup) << DACC_MR_STARTUP_Pos)); + + p_dacc->DACC_MR = mr; + return DACC_RC_OK; +} +#endif + +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +/** + * \brief Set DACC prescaler. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_prescaler Prescaler value. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_prescaler(Dacc *p_dacc, uint32_t ul_prescaler) +{ + uint32_t mr = p_dacc->DACC_MR & (~DACC_MR_PRESCALER_Msk); + p_dacc->DACC_MR = mr | DACC_MR_PRESCALER(ul_prescaler); + return DACC_RC_OK; +} + +/** + * \brief Set DACC osr. + * + * \param p_dacc Pointer to a DACC instance. + * \param channel DACC osr channel to be set. + * \param ul_prescaler Osr value. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_osr(Dacc *p_dacc, uint32_t channel, uint32_t ul_osr) +{ + uint32_t mr = p_dacc->DACC_TRIGR; + if(channel == 0) { + mr &= (~DACC_TRIGR_OSR0_Msk); + mr |= DACC_TRIGR_OSR0(ul_osr); + }else if(channel == 1) { + mr &= (~DACC_TRIGR_OSR1_Msk); + mr |= DACC_TRIGR_OSR1(ul_osr); + } + p_dacc->DACC_TRIGR = mr; + return DACC_RC_OK; +} +#endif + +/** + * \brief Enable DACC channel. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_channel The output channel to enable. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_enable_channel(Dacc *p_dacc, uint32_t ul_channel) +{ + if (ul_channel > MAX_CH_NB) + return DACC_RC_INVALID_PARAM; + + p_dacc->DACC_CHER = DACC_CHER_CH0 << ul_channel; + return DACC_RC_OK; +} + +/** + * \brief Disable DACC channel. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_channel The output channel to disable. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_disable_channel(Dacc *p_dacc, uint32_t ul_channel) +{ + if (ul_channel > MAX_CH_NB) { + return DACC_RC_INVALID_PARAM; + } + p_dacc->DACC_CHDR = DACC_CHDR_CH0 << ul_channel; + return DACC_RC_OK; +} + +/** + * \brief Get the channel status. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return DACC channel status. + */ +uint32_t dacc_get_channel_status(Dacc *p_dacc) +{ + return p_dacc->DACC_CHSR; +} + +/** + * \brief Set the analog control value. + * + * \param p_dacc Pointer to a DACC instance. + * \param ul_analog_control Analog control configuration. + * + * \return \ref DACC_RC_OK for OK. + */ +uint32_t dacc_set_analog_control(Dacc *p_dacc, uint32_t ul_analog_control) +{ + p_dacc->DACC_ACR = ul_analog_control; + return DACC_RC_OK; +} + +/** + * \brief Get the analog control value. + * + * \param p_dacc Pointer to a DACC instance. + * + * \return Current setting of analog control. + */ +uint32_t dacc_get_analog_control(Dacc *p_dacc) +{ + return p_dacc->DACC_ACR; +} +#endif /* (SAM3S) || (SAM3XA) || (SAM4S) || (SAM4E) || (SAMV70) || (SAMV71) || (SAME70) || (SAMS70) */ + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h new file mode 100644 index 00000000..62a13d6a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h @@ -0,0 +1,140 @@ +/** + * \file + * + * \brief Digital-to-Analog Converter Controller (DACC) driver for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef DACC_H_INCLUDED +#define DACC_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +//! DACC return codes +typedef enum dacc_rc { + DACC_RC_OK = 0, //!< Operation OK + DACC_RC_INVALID_PARAM //!< Invalid parameter +} dacc_rc_t; + +#if (SAM3N) || (SAM4L) || (SAM4N) +//! DACC resolution in number of data bits +# define DACC_RESOLUTION 10 +#else +//! DACC resolution in number of data bits +# define DACC_RESOLUTION 12 +#endif +//! DACC max data value +#define DACC_MAX_DATA ((1 << DACC_RESOLUTION) - 1) + + +void dacc_reset(Dacc *p_dacc); +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +uint32_t dacc_set_trigger(Dacc *p_dacc, uint32_t ul_trigger, uint32_t channel); +#else +uint32_t dacc_set_trigger(Dacc *p_dacc, uint32_t ul_trigger); +#endif +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +void dacc_disable_trigger(Dacc *p_dacc, uint32_t channel); +#else +void dacc_disable_trigger(Dacc *p_dacc); +#endif +uint32_t dacc_set_transfer_mode(Dacc *p_dacc, uint32_t ul_mode); +void dacc_enable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask); +void dacc_disable_interrupt(Dacc *p_dacc, uint32_t ul_interrupt_mask); +uint32_t dacc_get_interrupt_mask(Dacc *p_dacc); +uint32_t dacc_get_interrupt_status(Dacc *p_dacc); +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +void dacc_write_conversion_data(Dacc *p_dacc, uint32_t ul_data, uint32_t channel); +#else +void dacc_write_conversion_data(Dacc *p_dacc, uint32_t ul_data); +#endif +void dacc_set_writeprotect(Dacc *p_dacc, uint32_t ul_enable); +uint32_t dacc_get_writeprotect_status(Dacc *p_dacc); +#if !(SAM4L || SAMV70 || SAMV71 || SAME70 || SAMS70) +Pdc *dacc_get_pdc_base(Dacc *p_dacc); +#endif + +#if (SAM3N) || (SAM4L) || (SAM4N) || defined(__DOXYGEN__) +void dacc_enable(Dacc *p_dacc); +void dacc_disable(Dacc *p_dacc); +uint32_t dacc_set_timing(Dacc *p_dacc, uint32_t ul_startup, + uint32_t ul_clock_divider); +#endif + +#if (SAM4E) +uint32_t dacc_set_timing(Dacc *p_dacc, + uint32_t ul_maxs,uint32_t ul_startup); +#endif + +#if (SAM3S) || (SAM3XA) || (SAM4S) || (SAM4E) || (SAMV70) || (SAMV71) || (SAME70) || (SAMS70) || defined(__DOXYGEN__) +#if !(SAMV70 || SAMV71 || SAME70 || SAMS70) +uint32_t dacc_set_channel_selection(Dacc *p_dacc, uint32_t ul_channel); +void dacc_enable_flexible_selection(Dacc *p_dacc); +#endif + +#if (SAM3S) || (SAM3XA) +uint32_t dacc_set_power_save(Dacc *p_dacc, uint32_t ul_sleep_mode, + uint32_t ul_fast_wakeup_mode); +#endif + +#if !(SAMV70 || SAMV71 || SAME70 || SAMS70 || SAM4E) +uint32_t dacc_set_timing(Dacc *p_dacc, uint32_t ul_refresh, uint32_t ul_maxs, + uint32_t ul_startup); +#endif +#if (SAMV70 || SAMV71 || SAME70 || SAMS70) +uint32_t dacc_set_prescaler(Dacc *p_dacc, uint32_t ul_prescaler); +uint32_t dacc_set_osr(Dacc *p_dacc, uint32_t channel, uint32_t ul_osr); +#endif +uint32_t dacc_enable_channel(Dacc *p_dacc, uint32_t ul_channel); +uint32_t dacc_disable_channel(Dacc *p_dacc, uint32_t ul_channel); +uint32_t dacc_get_channel_status(Dacc *p_dacc); +uint32_t dacc_set_analog_control(Dacc *p_dacc, uint32_t ul_analog_control); +uint32_t dacc_get_analog_control(Dacc *p_dacc); +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* DACC_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c new file mode 100644 index 00000000..75cefa3b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c @@ -0,0 +1,178 @@ +/** + * \file + * + * \brief SAMV70/SAMV71/SAME70/SAMS70-XULTRA board mpu config. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "mpu.h" + +/** + * \defgroup sam_drivers_mpu_group MPU - Memory Protect Unit + * @{ + */ + +/** \file */ + +/** + * \addtogroup mmu MMU Initialization + * + * \section Usage + * + * Translation Look-aside Buffers (TLBs) are an implementation technique that + * caches translations or translation table entries. TLBs avoid the requirement + * for every memory access to perform a translation table lookup. + * The ARM architecture does not specify the exact form of the TLB structures + * for any design. In a similar way to the requirements for caches, the + * architecture only defines certain principles for TLBs: + * + * The MMU supports memory accesses based on memory sections or pages: + * Super-sections Consist of 16MB blocks of memory. Support for Super sections + * is optional. + * -# Sections Consist of 1MB blocks of memory. + * -# Large pages Consist of 64KB blocks of memory. + * -# Small pages Consist of 4KB blocks of memory. + * + * Access to a memory region is controlled by the access permission bits and + * the domain field in the TLB entry. + * Memory region attributes + * Each TLB entry has an associated set of memory region attributes. These + * control accesses to the caches, + * how the write buffer is used, and if the memory region is Shareable and + * therefore must be kept coherent. + * + * Related files:\n + * \ref mmu.c\n + * \ref mmu.h \n + */ + +/*---------------------------------------------------------------------------- + * Exported functions + + *----------------------------------------------------------------------------*/ +/** + * \brief Enables the MPU module. + * + * \param dwMPUEnable Enable/Disable the memory region. + */ +void mpu_enable(uint32_t dw_mpu_enable) +{ + MPU->CTRL = dw_mpu_enable ; +} + +/** + * \brief Set active memory region. + * + * \param dwRegionNum The memory region to be active. + */ +void mpu_set_region_num(uint32_t dw_region_num) +{ + MPU->RNR = dw_region_num; +} + +/** + * \brief Disable the current active region. + */ +void mpu_disable_region(void) +{ + MPU->RASR &= 0xfffffffe; +} + +/** + * \brief Setup a memory region. + * + * \param dwRegionBaseAddr Memory region base address. + * \param dwRegionAttr Memory region attributes. + */ +void mpu_set_region(uint32_t dw_region_base_addr, uint32_t dw_region_attr) +{ + MPU->RBAR = dw_region_base_addr; + MPU->RASR = dw_region_attr; +} + + +/** + * \brief Calculate region size for the RASR. + */ +uint32_t mpu_cal_mpu_region_size(uint32_t dw_actual_size_in_bytes) +{ + uint32_t dwRegionSize = 32; + uint32_t dwReturnValue = 4; + + while( dwReturnValue < 31 ) { + if( dw_actual_size_in_bytes <= dwRegionSize ) { + break; + } else { + dwReturnValue++; + } + dwRegionSize <<= 1; + } + + return ( dwReturnValue << 1 ); +} + + +/** + * \brief Update MPU regions. + * + * \return Unused (ANSI-C compatibility). + */ +void mpu_update_regions(uint32_t dw_region_num, uint32_t dw_region_base_addr, uint32_t dw_region_attr) +{ + volatile irqflags_t flags; + + /* Get and clear the global interrupt flags */ + flags = cpu_irq_save(); + + /* Clean up data and instruction buffer */ + __DSB(); + __ISB(); + + /* Set active region */ + mpu_set_region_num(dw_region_num); + + /* Disable region */ + mpu_disable_region(); + + /* Update region attribute */ + mpu_set_region( dw_region_base_addr, dw_region_attr); + + /* Clean up data and instruction buffer to make the new region taking + effect at once */ + __DSB(); + __ISB(); + + /* Restore global interrupt flags */ + cpu_irq_restore(flags); +} + +//@} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h new file mode 100644 index 00000000..97019db3 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h @@ -0,0 +1,190 @@ +/** + * \file + * + * \brief SAMV70/SAMV71/SAME70/SAMS70-XULTRA board mpu config. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + + +#ifndef _MPU_H_ +#define _MPU_H_ + +#include "compiler.h" + +/*---------------------------------------------------------------------------- + * Definitions + *----------------------------------------------------------------------------*/ +#define ARM_MODE_USR 0x10 + +#define PRIVILEGE_MODE 0 +#define USER_MODE 1 + +#define MPU_DEFAULT_ITCM_REGION ( 1 ) +#define MPU_DEFAULT_IFLASH_REGION ( 2 ) +#define MPU_DEFAULT_DTCM_REGION ( 3 ) +#define MPU_DEFAULT_SRAM_REGION_1 ( 4 ) +#define MPU_DEFAULT_SRAM_REGION_2 ( 5 ) +#define MPU_PERIPHERALS_REGION ( 6 ) +#define MPU_EXT_EBI_REGION ( 7 ) +#define MPU_DEFAULT_SDRAM_REGION ( 8 ) +#define MPU_QSPIMEM_REGION ( 9 ) +#define MPU_USBHSRAM_REGION ( 10 ) +#if defined MPU_HAS_NOCACHE_REGION +#define MPU_NOCACHE_SRAM_REGION ( 11 ) +#endif + +#define MPU_REGION_VALID ( 0x10 ) +#define MPU_REGION_ENABLE ( 0x01 ) +#define MPU_REGION_DISABLE ( 0x0 ) + +#define MPU_ENABLE ( 0x1 << MPU_CTRL_ENABLE_Pos) +#define MPU_HFNMIENA ( 0x1 << MPU_CTRL_HFNMIENA_Pos ) +#define MPU_PRIVDEFENA ( 0x1 << MPU_CTRL_PRIVDEFENA_Pos ) + + +#define MPU_REGION_BUFFERABLE ( 0x01 << MPU_RASR_B_Pos ) +#define MPU_REGION_CACHEABLE ( 0x01 << MPU_RASR_C_Pos ) +#define MPU_REGION_SHAREABLE ( 0x01 << MPU_RASR_S_Pos ) + +#define MPU_REGION_EXECUTE_NEVER ( 0x01 << MPU_RASR_XN_Pos ) + +#define MPU_AP_NO_ACCESS ( 0x00 << MPU_RASR_AP_Pos ) +#define MPU_AP_PRIVILEGED_READ_WRITE ( 0x01 << MPU_RASR_AP_Pos ) +#define MPU_AP_UNPRIVILEGED_READONLY ( 0x02 << MPU_RASR_AP_Pos ) +#define MPU_AP_FULL_ACCESS ( 0x03 << MPU_RASR_AP_Pos ) +#define MPU_AP_RES ( 0x04 << MPU_RASR_AP_Pos ) +#define MPU_AP_PRIVILEGED_READONLY ( 0x05 << MPU_RASR_AP_Pos ) +#define MPU_AP_READONLY ( 0x06 << MPU_RASR_AP_Pos ) +#define MPU_AP_READONLY2 ( 0x07 << MPU_RASR_AP_Pos ) + +#define MPU_TEX_B000 ( 0x00 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B001 ( 0x01 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B010 ( 0x02 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B011 ( 0x03 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B100 ( 0x04 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B101 ( 0x05 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B110 ( 0x06 << MPU_RASR_TEX_Pos ) +#define MPU_TEX_B111 ( 0x07 << MPU_RASR_TEX_Pos ) + +#define SHAREABLE 1 +#define NON_SHAREABLE 0 + +#define INNER_NORMAL_WB_RWA_TYPE(x) (( 0x04 << MPU_RASR_TEX_Pos ) | ( DISABLE << MPU_RASR_C_Pos ) | ( ENABLE << MPU_RASR_B_Pos ) | ( x << MPU_RASR_S_Pos )) +#define INNER_NORMAL_WB_NWA_TYPE(x) (( 0x04 << MPU_RASR_TEX_Pos ) | ( ENABLE << MPU_RASR_C_Pos ) | ( ENABLE << MPU_RASR_B_Pos ) | ( x << MPU_RASR_S_Pos )) +#define INNER_OUTER_NORMAL_NOCACHE_TYPE(x) ((0x01 << MPU_RASR_TEX_Pos) | (DISABLE << MPU_RASR_C_Pos) | (DISABLE << MPU_RASR_B_Pos) | (x << MPU_RASR_S_Pos)) +#define STRONGLY_ORDERED_SHAREABLE_TYPE (( 0x00 << MPU_RASR_TEX_Pos ) | ( DISABLE << MPU_RASR_C_Pos ) | ( DISABLE << MPU_RASR_B_Pos )) // DO not care // +#define SHAREABLE_DEVICE_TYPE (( 0x00 << MPU_RASR_TEX_Pos ) | ( DISABLE << MPU_RASR_C_Pos ) | ( ENABLE << MPU_RASR_B_Pos )) // DO not care // + + +/* Default memory map + Address range Memory region Memory type Shareability Cache policy + 0x00000000- 0x1FFFFFFF Code Normal Non-shareable WT + 0x20000000- 0x3FFFFFFF SRAM Normal Non-shareable WBWA + 0x40000000- 0x5FFFFFFF Peripheral Device Non-shareable - + 0x60000000- 0x7FFFFFFF RAM Normal Non-shareable WBWA + 0x80000000- 0x9FFFFFFF RAM Normal Non-shareable WT + 0xA0000000- 0xBFFFFFFF Device Device Shareable + 0xC0000000- 0xDFFFFFFF Device Device Non Shareable + 0xE0000000- 0xFFFFFFFF System - - + */ + +/********* IFLASH memory macros *********************/ +#define ITCM_START_ADDRESS 0x00000000UL +#define ITCM_END_ADDRESS 0x003FFFFFUL +#define IFLASH_START_ADDRESS 0x00400000UL +#define IFLASH_END_ADDRESS 0x005FFFFFUL + + +#define IFLASH_PRIVILEGE_START_ADDRESS (IFLASH_START_ADDRESS) +#define IFLASH_PRIVILEGE_END_ADDRESS (IFLASH_START_ADDRESS + 0xFFF) + +#define IFLASH_UNPRIVILEGE_START_ADDRESS (IFLASH_PRIVILEGE_END_ADDRESS + 1) +#define IFLASH_UNPRIVILEGE_END_ADDRESS (IFLASH_END_ADDRESS) + +/**************** DTCM *******************************/ +#define DTCM_START_ADDRESS 0x20000000UL +#define DTCM_END_ADDRESS 0x203FFFFFUL + + +/******* SRAM memory macros ***************************/ + +#define SRAM_START_ADDRESS 0x20400000UL +#define SRAM_END_ADDRESS 0x2045FFFFUL + +#if defined MPU_HAS_NOCACHE_REGION +#define NOCACHE_SRAM_REGION_SIZE 0x1000 +#endif + +/* Regions should be a 2^(N+1) where 4 < N < 31 */ +#define SRAM_FIRST_START_ADDRESS (SRAM_START_ADDRESS) +#define SRAM_FIRST_END_ADDRESS (SRAM_FIRST_START_ADDRESS + 0x3FFFF) // (2^18) 256 KB + +#if defined MPU_HAS_NOCACHE_REGION +#define SRAM_SECOND_START_ADDRESS (SRAM_FIRST_END_ADDRESS+1) +#define SRAM_SECOND_END_ADDRESS (SRAM_END_ADDRESS - NOCACHE_SRAM_REGION_SIZE ) // (2^17) 128 - 0x1000 KB +#define SRAM_NOCACHE_START_ADDRESS (SRAM_SECOND_END_ADDRESS + 1) +#define SRAM_NOCACHE_END_ADDRESS (SRAM_END_ADDRESS ) +#else +#define SRAM_SECOND_START_ADDRESS (SRAM_FIRST_END_ADDRESS + 1) +#define SRAM_SECOND_END_ADDRESS (SRAM_END_ADDRESS) // (2^17) 128 KB +#endif +/************** Peripherals memory region macros ********/ +#define PERIPHERALS_START_ADDRESS 0x40000000UL +#define PERIPHERALS_END_ADDRESS 0x5FFFFFFFUL + +/******* Ext EBI memory macros ***************************/ +#define EXT_EBI_START_ADDRESS 0x60000000UL +#define EXT_EBI_END_ADDRESS 0x6FFFFFFFUL + +/******* Ext-SRAM memory macros ***************************/ +#define SDRAM_START_ADDRESS 0x70000000UL +#define SDRAM_END_ADDRESS 0x7FFFFFFFUL + +/******* QSPI macros ***************************/ +#define QSPI_START_ADDRESS 0x80000000UL +#define QSPI_END_ADDRESS 0x9FFFFFFFUL + +/************** USBHS_RAM region macros ******************/ +#define USBHSRAM_START_ADDRESS 0xA0100000UL +#define USBHSRAM_END_ADDRESS 0xA01FFFFFUL + +/*---------------------------------------------------------------------------- + * Export functions + *----------------------------------------------------------------------------*/ +void mpu_enable(uint32_t dw_mpu_enable); +void mpu_set_region(uint32_t dw_region_base_addr, uint32_t dw_region_attr); +void mpu_set_region_num(uint32_t dw_region_num); +void mpu_disable_region(void); +uint32_t mpu_cal_mpu_region_size(uint32_t dw_actual_size_in_bytes); +void mpu_update_regions(uint32_t dw_region_num, uint32_t dw_region_base_addr, uint32_t dw_region_attr); + +#endif /* #ifndef _MPU_H_ */ \ No newline at end of file diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c new file mode 100644 index 00000000..a9983ced --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c @@ -0,0 +1,1173 @@ +/** + * \file + * + * \brief Parallel Input/Output (PIO) Controller driver for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "pio.h" + +#ifndef PIO_WPMR_WPKEY_PASSWD +# define PIO_WPMR_WPKEY_PASSWD PIO_WPMR_WPKEY(0x50494Fu) +#endif + +/** + * \defgroup sam_drivers_pio_group Peripheral Parallel Input/Output (PIO) Controller + * + * \par Purpose + * + * The Parallel Input/Output Controller (PIO) manages up to 32 fully + * programmable input/output lines. Each I/O line may be dedicated as a + * general-purpose I/O or be assigned to a function of an embedded peripheral. + * This assures effective optimization of the pins of a product. + * + * @{ + */ + +#ifndef FREQ_SLOW_CLOCK_EXT +/* External slow clock frequency (hz) */ +#define FREQ_SLOW_CLOCK_EXT 32768 +#endif + +/** + * \brief Configure PIO internal pull-up. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * \param ul_pull_up_enable Indicates if the pin(s) internal pull-up shall be + * configured. + */ +void pio_pull_up(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_pull_up_enable) +{ + /* Enable the pull-up(s) if necessary */ + if (ul_pull_up_enable) { + p_pio->PIO_PUER = ul_mask; + } else { + p_pio->PIO_PUDR = ul_mask; + } +} + +/** + * \brief Configure Glitch or Debouncing filter for the specified input(s). + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * \param ul_cut_off Cuts off frequency for debouncing filter. + */ +void pio_set_debounce_filter(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_cut_off) +{ +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + /* Set Debouncing, 0 bit field no effect */ + p_pio->PIO_IFSCER = ul_mask; +#elif (SAM3XA || SAM3U) + /* Set Debouncing, 0 bit field no effect */ + p_pio->PIO_DIFSR = ul_mask; +#else +#error "Unsupported device" +#endif + + /* + * The debouncing filter can filter a pulse of less than 1/2 Period of a + * programmable Divided Slow Clock: + * Tdiv_slclk = ((DIV+1)*2).Tslow_clock + */ + p_pio->PIO_SCDR = PIO_SCDR_DIV((FREQ_SLOW_CLOCK_EXT / + (2 * (ul_cut_off))) - 1); +} + +/** + * \brief Set a high output level on all the PIOs defined in ul_mask. + * This has no immediate effects on PIOs that are not output, but the PIO + * controller will save the value if they are changed to outputs. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_set(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_SODR = ul_mask; +} + +/** + * \brief Set a low output level on all the PIOs defined in ul_mask. + * This has no immediate effects on PIOs that are not output, but the PIO + * controller will save the value if they are changed to outputs. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_clear(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_CODR = ul_mask; +} + +/** + * \brief Return 1 if one or more PIOs of the given Pin instance currently have + * a high level; otherwise returns 0. This method returns the actual value that + * is being read on the pin. To return the supposed output value of a pin, use + * pio_get_output_data_status() instead. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_type PIO type. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * + * \retval 1 at least one PIO currently has a high level. + * \retval 0 all PIOs have a low level. + */ +uint32_t pio_get(Pio *p_pio, const pio_type_t ul_type, + const uint32_t ul_mask) +{ + uint32_t ul_reg; + + if ((ul_type == PIO_OUTPUT_0) || (ul_type == PIO_OUTPUT_1)) { + ul_reg = p_pio->PIO_ODSR; + } else { + ul_reg = p_pio->PIO_PDSR; + } + + if ((ul_reg & ul_mask) == 0) { + return 0; + } else { + return 1; + } +} + +/** + * \brief Configure IO of a PIO controller as being controlled by a specific + * peripheral. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_type PIO type. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_set_peripheral(Pio *p_pio, const pio_type_t ul_type, + const uint32_t ul_mask) +{ + uint32_t ul_sr; + + /* Disable interrupts on the pin(s) */ + p_pio->PIO_IDR = ul_mask; + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + switch (ul_type) { + case PIO_PERIPH_A: + ul_sr = p_pio->PIO_ABCDSR[0]; + p_pio->PIO_ABCDSR[0] &= (~ul_mask & ul_sr); + + ul_sr = p_pio->PIO_ABCDSR[1]; + p_pio->PIO_ABCDSR[1] &= (~ul_mask & ul_sr); + break; + case PIO_PERIPH_B: + ul_sr = p_pio->PIO_ABCDSR[0]; + p_pio->PIO_ABCDSR[0] = (ul_mask | ul_sr); + + ul_sr = p_pio->PIO_ABCDSR[1]; + p_pio->PIO_ABCDSR[1] &= (~ul_mask & ul_sr); + break; +#if (!SAMG) + case PIO_PERIPH_C: + ul_sr = p_pio->PIO_ABCDSR[0]; + p_pio->PIO_ABCDSR[0] &= (~ul_mask & ul_sr); + + ul_sr = p_pio->PIO_ABCDSR[1]; + p_pio->PIO_ABCDSR[1] = (ul_mask | ul_sr); + break; + case PIO_PERIPH_D: + ul_sr = p_pio->PIO_ABCDSR[0]; + p_pio->PIO_ABCDSR[0] = (ul_mask | ul_sr); + + ul_sr = p_pio->PIO_ABCDSR[1]; + p_pio->PIO_ABCDSR[1] = (ul_mask | ul_sr); + break; +#endif + /* Other types are invalid in this function */ + case PIO_INPUT: + case PIO_OUTPUT_0: + case PIO_OUTPUT_1: + case PIO_NOT_A_PIN: + return; + } +#elif (SAM3XA|| SAM3U) + switch (ul_type) { + case PIO_PERIPH_A: + ul_sr = p_pio->PIO_ABSR; + p_pio->PIO_ABSR &= (~ul_mask & ul_sr); + break; + + case PIO_PERIPH_B: + ul_sr = p_pio->PIO_ABSR; + p_pio->PIO_ABSR = (ul_mask | ul_sr); + break; + + // other types are invalid in this function + case PIO_INPUT: + case PIO_OUTPUT_0: + case PIO_OUTPUT_1: + case PIO_NOT_A_PIN: + return; + } +#else +#error "Unsupported device" +#endif + + /* Remove the pins from under the control of PIO */ + p_pio->PIO_PDR = ul_mask; +} + +/** + * \brief Configure one or more pin(s) or a PIO controller as inputs. + * Optionally, the corresponding internal pull-up(s) and glitch filter(s) can + * be enabled. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask indicating which pin(s) to configure as input(s). + * \param ul_attribute PIO attribute(s). + */ +void pio_set_input(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_attribute) +{ + pio_disable_interrupt(p_pio, ul_mask); + pio_pull_up(p_pio, ul_mask, ul_attribute & PIO_PULLUP); + + /* Enable Input Filter if necessary */ + if (ul_attribute & (PIO_DEGLITCH | PIO_DEBOUNCE)) { + p_pio->PIO_IFER = ul_mask; + } else { + p_pio->PIO_IFDR = ul_mask; + } + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + /* Enable de-glitch or de-bounce if necessary */ + if (ul_attribute & PIO_DEGLITCH) { + p_pio->PIO_IFSCDR = ul_mask; + } else { + if (ul_attribute & PIO_DEBOUNCE) { + p_pio->PIO_IFSCER = ul_mask; + } + } +#elif (SAM3XA|| SAM3U) + /* Enable de-glitch or de-bounce if necessary */ + if (ul_attribute & PIO_DEGLITCH) { + p_pio->PIO_SCIFSR = ul_mask; + } else { + if (ul_attribute & PIO_DEBOUNCE) { + p_pio->PIO_DIFSR = ul_mask; + } + } +#else +#error "Unsupported device" +#endif + + /* Configure pin as input */ + p_pio->PIO_ODR = ul_mask; + p_pio->PIO_PER = ul_mask; +} + +/** + * \brief Configure one or more pin(s) of a PIO controller as outputs, with + * the given default value. Optionally, the multi-drive feature can be enabled + * on the pin(s). + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask indicating which pin(s) to configure. + * \param ul_default_level Default level on the pin(s). + * \param ul_multidrive_enable Indicates if the pin(s) shall be configured as + * open-drain. + * \param ul_pull_up_enable Indicates if the pin shall have its pull-up + * activated. + */ +void pio_set_output(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_default_level, + const uint32_t ul_multidrive_enable, + const uint32_t ul_pull_up_enable) +{ + pio_disable_interrupt(p_pio, ul_mask); + pio_pull_up(p_pio, ul_mask, ul_pull_up_enable); + + /* Enable multi-drive if necessary */ + if (ul_multidrive_enable) { + p_pio->PIO_MDER = ul_mask; + } else { + p_pio->PIO_MDDR = ul_mask; + } + + /* Set default value */ + if (ul_default_level) { + p_pio->PIO_SODR = ul_mask; + } else { + p_pio->PIO_CODR = ul_mask; + } + + /* Configure pin(s) as output(s) */ + p_pio->PIO_OER = ul_mask; + p_pio->PIO_PER = ul_mask; +} + +/** + * \brief Perform complete pin(s) configuration; general attributes and PIO init + * if necessary. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_type PIO type. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * \param ul_attribute Pins attributes. + * + * \return Whether the pin(s) have been configured properly. + */ +uint32_t pio_configure(Pio *p_pio, const pio_type_t ul_type, + const uint32_t ul_mask, const uint32_t ul_attribute) +{ + /* Configure pins */ + switch (ul_type) { + case PIO_PERIPH_A: + case PIO_PERIPH_B: +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + case PIO_PERIPH_C: + case PIO_PERIPH_D: +#endif + pio_set_peripheral(p_pio, ul_type, ul_mask); + pio_pull_up(p_pio, ul_mask, (ul_attribute & PIO_PULLUP)); + break; + + case PIO_INPUT: + pio_set_input(p_pio, ul_mask, ul_attribute); + break; + + case PIO_OUTPUT_0: + case PIO_OUTPUT_1: + pio_set_output(p_pio, ul_mask, (ul_type == PIO_OUTPUT_1), + (ul_attribute & PIO_OPENDRAIN) ? 1 : 0, + (ul_attribute & PIO_PULLUP) ? 1 : 0); + break; + + default: + return 0; + } + + return 1; +} + +/** + * \brief Return 1 if one or more PIOs of the given Pin are configured to + * output a high level (even if they are not output). + * To get the actual value of the pin, use PIO_Get() instead. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s). + * + * \retval 1 At least one PIO is configured to output a high level. + * \retval 0 All PIOs are configured to output a low level. + */ +uint32_t pio_get_output_data_status(const Pio *p_pio, + const uint32_t ul_mask) +{ + if ((p_pio->PIO_ODSR & ul_mask) == 0) { + return 0; + } else { + return 1; + } +} + +/** + * \brief Configure PIO pin multi-driver. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * \param ul_multi_driver_enable Indicates if the pin(s) multi-driver shall be + * configured. + */ +void pio_set_multi_driver(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_multi_driver_enable) +{ + /* Enable the multi-driver if necessary */ + if (ul_multi_driver_enable) { + p_pio->PIO_MDER = ul_mask; + } else { + p_pio->PIO_MDDR = ul_mask; + } +} + +/** + * \brief Get multi-driver status. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The multi-driver mask value. + */ +uint32_t pio_get_multi_driver_status(const Pio *p_pio) +{ + return p_pio->PIO_MDSR; +} + + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Configure PIO pin internal pull-down. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * \param ul_pull_down_enable Indicates if the pin(s) internal pull-down shall + * be configured. + */ +void pio_pull_down(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_pull_down_enable) +{ + /* Enable the pull-down if necessary */ + if (ul_pull_down_enable) { + p_pio->PIO_PPDER = ul_mask; + } else { + p_pio->PIO_PPDDR = ul_mask; + } +} +#endif + +/** + * \brief Enable PIO output write for synchronous data output. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_enable_output_write(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_OWER = ul_mask; +} + +/** + * \brief Disable PIO output write. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_disable_output_write(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_OWDR = ul_mask; +} + +/** + * \brief Read PIO output write status. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The output write mask value. + */ +uint32_t pio_get_output_write_status(const Pio *p_pio) +{ + return p_pio->PIO_OWSR; +} + +/** + * \brief Synchronously write on output pins. + * \note Only bits unmasked by PIO_OWSR (Output Write Status Register) are + * written. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_sync_output_write(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_ODSR = ul_mask; +} + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Configure PIO pin schmitt trigger. By default the Schmitt trigger is + * active. + * Disabling the Schmitt Trigger is requested when using the QTouch Library. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_set_schmitt_trigger(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_SCHMITT = ul_mask; +} + +/** + * \brief Get PIO pin schmitt trigger status. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The schmitt trigger mask value. + */ +uint32_t pio_get_schmitt_trigger(const Pio *p_pio) +{ + return p_pio->PIO_SCHMITT; +} +#endif + +/** + * \brief Configure the given interrupt source. + * Interrupt can be configured to trigger on rising edge, falling edge, + * high level, low level or simply on level change. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Interrupt source bit map. + * \param ul_attr Interrupt source attributes. + */ +void pio_configure_interrupt(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_attr) +{ + /* Configure additional interrupt mode registers. */ + if (ul_attr & PIO_IT_AIME) { + /* Enable additional interrupt mode. */ + p_pio->PIO_AIMER = ul_mask; + + /* If bit field of the selected pin is 1, set as + Rising Edge/High level detection event. */ + if (ul_attr & PIO_IT_RE_OR_HL) { + /* Rising Edge or High Level */ + p_pio->PIO_REHLSR = ul_mask; + } else { + /* Falling Edge or Low Level */ + p_pio->PIO_FELLSR = ul_mask; + } + + /* If bit field of the selected pin is 1, set as + edge detection source. */ + if (ul_attr & PIO_IT_EDGE) { + /* Edge select */ + p_pio->PIO_ESR = ul_mask; + } else { + /* Level select */ + p_pio->PIO_LSR = ul_mask; + } + } else { + /* Disable additional interrupt mode. */ + p_pio->PIO_AIMDR = ul_mask; + } +} + +/** + * \brief Enable the given interrupt source. + * The PIO must be configured as an NVIC interrupt source as well. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Interrupt sources bit map. + */ +void pio_enable_interrupt(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_IER = ul_mask; +} + +/** + * \brief Disable a given interrupt source, with no added side effects. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Interrupt sources bit map. + */ +void pio_disable_interrupt(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_IDR = ul_mask; +} + +/** + * \brief Read and clear PIO interrupt status. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The interrupt status value. + */ +uint32_t pio_get_interrupt_status(const Pio *p_pio) +{ + return p_pio->PIO_ISR; +} + +/** + * \brief Read PIO interrupt mask. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The interrupt mask value. + */ +uint32_t pio_get_interrupt_mask(const Pio *p_pio) +{ + return p_pio->PIO_IMR; +} + +/** + * \brief Set additional interrupt mode. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Interrupt sources bit map. + * \param ul_attribute Pin(s) attributes. + */ +void pio_set_additional_interrupt_mode(Pio *p_pio, + const uint32_t ul_mask, const uint32_t ul_attribute) +{ + /* Enables additional interrupt mode if needed */ + if (ul_attribute & PIO_IT_AIME) { + /* Enables additional interrupt mode */ + p_pio->PIO_AIMER = ul_mask; + + /* Configures the Polarity of the event detection */ + /* (Rising/Falling Edge or High/Low Level) */ + if (ul_attribute & PIO_IT_RE_OR_HL) { + /* Rising Edge or High Level */ + p_pio->PIO_REHLSR = ul_mask; + } else { + /* Falling Edge or Low Level */ + p_pio->PIO_FELLSR = ul_mask; + } + + /* Configures the type of event detection (Edge or Level) */ + if (ul_attribute & PIO_IT_EDGE) { + /* Edge select */ + p_pio->PIO_ESR = ul_mask; + } else { + /* Level select */ + p_pio->PIO_LSR = ul_mask; + } + } else { + /* Disable additional interrupt mode */ + p_pio->PIO_AIMDR = ul_mask; + } +} + +#ifndef PIO_WPMR_WPKEY_PASSWD +#define PIO_WPMR_WPKEY_PASSWD PIO_WPMR_WPKEY(0x50494FU) +#endif + +/** + * \brief Enable or disable write protect of PIO registers. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_enable 1 to enable, 0 to disable. + */ +void pio_set_writeprotect(Pio *p_pio, const uint32_t ul_enable) +{ + p_pio->PIO_WPMR = PIO_WPMR_WPKEY_PASSWD | (ul_enable & PIO_WPMR_WPEN); +} + +/** + * \brief Read write protect status. + * + * \param p_pio Pointer to a PIO instance. + * + * \return Return write protect status. + */ +uint32_t pio_get_writeprotect_status(const Pio *p_pio) +{ + return p_pio->PIO_WPSR; +} + +/** + * \brief Return the value of a pin. + * + * \param ul_pin The pin number. + * + * \return The pin value. + * + * \note If pin is output: a pull-up or pull-down could hide the actual value. + * The function \ref pio_get can be called to get the actual pin output + * level. + * \note If pin is input: PIOx must be clocked to sample the signal. + * See PMC driver. + */ +uint32_t pio_get_pin_value(uint32_t ul_pin) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + return (p_pio->PIO_PDSR >> (ul_pin & 0x1F)) & 1; +} + +/** + * \brief Drive a GPIO pin to 1. + * + * \param ul_pin The pin index. + * + * \note The function \ref pio_configure_pin must be called beforehand. + */ +void pio_set_pin_high(uint32_t ul_pin) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + /* Value to be driven on the I/O line: 1. */ + p_pio->PIO_SODR = 1 << (ul_pin & 0x1F); +} + +/** + * \brief Drive a GPIO pin to 0. + * + * \param ul_pin The pin index. + * + * \note The function \ref pio_configure_pin must be called before. + */ +void pio_set_pin_low(uint32_t ul_pin) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + /* Value to be driven on the I/O line: 0. */ + p_pio->PIO_CODR = 1 << (ul_pin & 0x1F); +} + +/** + * \brief Toggle a GPIO pin. + * + * \param ul_pin The pin index. + * + * \note The function \ref pio_configure_pin must be called before. + */ +void pio_toggle_pin(uint32_t ul_pin) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + if (p_pio->PIO_ODSR & (1 << (ul_pin & 0x1F))) { + /* Value to be driven on the I/O line: 0. */ + p_pio->PIO_CODR = 1 << (ul_pin & 0x1F); + } else { + /* Value to be driven on the I/O line: 1. */ + p_pio->PIO_SODR = 1 << (ul_pin & 0x1F); + } +} + +/** + * \brief Perform complete pin(s) configuration; general attributes and PIO init + * if necessary. + * + * \param ul_pin The pin index. + * \param ul_flags Pins attributes. + * + * \return Whether the pin(s) have been configured properly. + */ +uint32_t pio_configure_pin(uint32_t ul_pin, const uint32_t ul_flags) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + /* Configure pins */ + switch (ul_flags & PIO_TYPE_Msk) { + case PIO_TYPE_PIO_PERIPH_A: + pio_set_peripheral(p_pio, PIO_PERIPH_A, (1 << (ul_pin & 0x1F))); + pio_pull_up(p_pio, (1 << (ul_pin & 0x1F)), + (ul_flags & PIO_PULLUP)); + break; + case PIO_TYPE_PIO_PERIPH_B: + pio_set_peripheral(p_pio, PIO_PERIPH_B, (1 << (ul_pin & 0x1F))); + pio_pull_up(p_pio, (1 << (ul_pin & 0x1F)), + (ul_flags & PIO_PULLUP)); + break; +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + case PIO_TYPE_PIO_PERIPH_C: + pio_set_peripheral(p_pio, PIO_PERIPH_C, (1 << (ul_pin & 0x1F))); + pio_pull_up(p_pio, (1 << (ul_pin & 0x1F)), + (ul_flags & PIO_PULLUP)); + break; + case PIO_TYPE_PIO_PERIPH_D: + pio_set_peripheral(p_pio, PIO_PERIPH_D, (1 << (ul_pin & 0x1F))); + pio_pull_up(p_pio, (1 << (ul_pin & 0x1F)), + (ul_flags & PIO_PULLUP)); + break; +#endif + + case PIO_TYPE_PIO_INPUT: + pio_set_input(p_pio, (1 << (ul_pin & 0x1F)), ul_flags); + break; + + case PIO_TYPE_PIO_OUTPUT_0: + case PIO_TYPE_PIO_OUTPUT_1: + pio_set_output(p_pio, (1 << (ul_pin & 0x1F)), + ((ul_flags & PIO_TYPE_PIO_OUTPUT_1) + == PIO_TYPE_PIO_OUTPUT_1) ? 1 : 0, + (ul_flags & PIO_OPENDRAIN) ? 1 : 0, + (ul_flags & PIO_PULLUP) ? 1 : 0); + break; + + default: + return 0; + } + + return 1; +} + +/** + * \brief Drive a GPIO port to 1. + * + * \param p_pio Base address of the PIO port. + * \param ul_mask Bitmask of one or more pin(s) to toggle. + */ +void pio_set_pin_group_high(Pio *p_pio, uint32_t ul_mask) +{ + /* Value to be driven on the I/O line: 1. */ + p_pio->PIO_SODR = ul_mask; +} + +/** + * \brief Drive a GPIO port to 0. + * + * \param p_pio Base address of the PIO port. + * \param ul_mask Bitmask of one or more pin(s) to toggle. + */ +void pio_set_pin_group_low(Pio *p_pio, uint32_t ul_mask) +{ + /* Value to be driven on the I/O line: 0. */ + p_pio->PIO_CODR = ul_mask; +} + +/** + * \brief Toggle a GPIO group. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + */ +void pio_toggle_pin_group(Pio *p_pio, uint32_t ul_mask) +{ + if (p_pio->PIO_ODSR & ul_mask) { + /* Value to be driven on the I/O line: 0. */ + p_pio->PIO_CODR = ul_mask; + } else { + /* Value to be driven on the I/O line: 1. */ + p_pio->PIO_SODR = ul_mask; + } +} + +/** + * \brief Perform complete pin(s) configuration; general attributes and PIO init + * if necessary. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Bitmask of one or more pin(s) to configure. + * \param ul_flags Pin(s) attributes. + * + * \return Whether the pin(s) have been configured properly. + */ +uint32_t pio_configure_pin_group(Pio *p_pio, + uint32_t ul_mask, const uint32_t ul_flags) +{ + /* Configure pins */ + switch (ul_flags & PIO_TYPE_Msk) { + case PIO_TYPE_PIO_PERIPH_A: + pio_set_peripheral(p_pio, PIO_PERIPH_A, ul_mask); + pio_pull_up(p_pio, ul_mask, (ul_flags & PIO_PULLUP)); + break; + case PIO_TYPE_PIO_PERIPH_B: + pio_set_peripheral(p_pio, PIO_PERIPH_B, ul_mask); + pio_pull_up(p_pio, ul_mask, (ul_flags & PIO_PULLUP)); + break; +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + case PIO_TYPE_PIO_PERIPH_C: + pio_set_peripheral(p_pio, PIO_PERIPH_C, ul_mask); + pio_pull_up(p_pio, ul_mask, (ul_flags & PIO_PULLUP)); + break; + case PIO_TYPE_PIO_PERIPH_D: + pio_set_peripheral(p_pio, PIO_PERIPH_D, ul_mask); + pio_pull_up(p_pio, ul_mask, (ul_flags & PIO_PULLUP)); + break; +#endif + + case PIO_TYPE_PIO_INPUT: + pio_set_input(p_pio, ul_mask, ul_flags); + break; + + case PIO_TYPE_PIO_OUTPUT_0: + case PIO_TYPE_PIO_OUTPUT_1: + pio_set_output(p_pio, ul_mask, + ((ul_flags & PIO_TYPE_PIO_OUTPUT_1) + == PIO_TYPE_PIO_OUTPUT_1) ? 1 : 0, + (ul_flags & PIO_OPENDRAIN) ? 1 : 0, + (ul_flags & PIO_PULLUP) ? 1 : 0); + break; + + default: + return 0; + } + + return 1; +} + +/** + * \brief Enable interrupt for a GPIO pin. + * + * \param ul_pin The pin index. + * + * \note The function \ref gpio_configure_pin must be called before. + */ +void pio_enable_pin_interrupt(uint32_t ul_pin) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + p_pio->PIO_IER = 1 << (ul_pin & 0x1F); +} + + +/** + * \brief Disable interrupt for a GPIO pin. + * + * \param ul_pin The pin index. + * + * \note The function \ref gpio_configure_pin must be called before. + */ +void pio_disable_pin_interrupt(uint32_t ul_pin) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + + p_pio->PIO_IDR = 1 << (ul_pin & 0x1F); +} + + +/** + * \brief Return GPIO port for a GPIO pin. + * + * \param ul_pin The pin index. + * + * \return Pointer to \ref Pio struct for GPIO port. + */ +Pio *pio_get_pin_group(uint32_t ul_pin) +{ + Pio *p_pio; + +#if (SAM4C || SAM4CP) +# ifdef ID_PIOD + if (ul_pin > PIO_PC9_IDX) { + p_pio = PIOD; + } else if (ul_pin > PIO_PB31_IDX) { +# else + if (ul_pin > PIO_PB31_IDX) { +# endif + p_pio = PIOC; + } else { + p_pio = (Pio *)((uint32_t)PIOA + (PIO_DELTA * (ul_pin >> 5))); + } +#elif (SAM4CM) + if (ul_pin > PIO_PB21_IDX) { + p_pio = PIOC; + } else { + p_pio = (Pio *)((uint32_t)PIOA + (PIO_DELTA * (ul_pin >> 5))); + } +#else + p_pio = (Pio *)((uint32_t)PIOA + (PIO_DELTA * (ul_pin >> 5))); +#endif + return p_pio; +} + +/** + * \brief Return GPIO port peripheral ID for a GPIO pin. + * + * \param ul_pin The pin index. + * + * \return GPIO port peripheral ID. + */ +uint32_t pio_get_pin_group_id(uint32_t ul_pin) +{ + uint32_t ul_id; + +#if (SAM4C || SAM4CP) +# ifdef ID_PIOD + if (ul_pin > PIO_PC9_IDX) { + ul_id = ID_PIOD; + } else if (ul_pin > PIO_PB31_IDX) { +# else + if (ul_pin > PIO_PB31_IDX) { +# endif + ul_id = ID_PIOC; + } else { + ul_id = ID_PIOA + (ul_pin >> 5); + } +#elif (SAM4CM) + if (ul_pin > PIO_PB21_IDX) { + ul_id = ID_PIOC; + } else { + ul_id = ID_PIOA + (ul_pin >> 5); + } +#elif (SAMV70 || SAMV71 || SAME70 || SAMS70) + ul_id = ID_PIOA + (ul_pin >> 5); + + #ifdef ID_PIOD + if (ul_pin >= PIO_PD0_IDX) ul_id = ID_PIOD; + #endif + + #ifdef ID_PIOE + if (ul_pin >= PIO_PE0_IDX) ul_id = ID_PIOE; + #endif +#else + ul_id = ID_PIOA + (ul_pin >> 5); +#endif + return ul_id; +} + + +/** + * \brief Return GPIO port pin mask for a GPIO pin. + * + * \param ul_pin The pin index. + * + * \return GPIO port pin mask. + */ +uint32_t pio_get_pin_group_mask(uint32_t ul_pin) +{ + uint32_t ul_mask = 1 << (ul_pin & 0x1F); + return ul_mask; +} + +#if (SAM3S || SAM4S || SAM4E || SAMV71 || SAMV70 || SAME70 || SAMS70) +/* Capture mode enable flag */ +uint32_t pio_capture_enable_flag; + +/** + * \brief Configure PIO capture mode. + * \note PIO capture mode will be disabled automatically. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mode Bitmask of one or more modes. + */ +void pio_capture_set_mode(Pio *p_pio, uint32_t ul_mode) +{ + ul_mode &= (~PIO_PCMR_PCEN); /* Disable PIO capture mode */ + p_pio->PIO_PCMR = ul_mode; +} + +/** + * \brief Enable PIO capture mode. + * + * \param p_pio Pointer to a PIO instance. + */ +void pio_capture_enable(Pio *p_pio) +{ + p_pio->PIO_PCMR |= PIO_PCMR_PCEN; + pio_capture_enable_flag = true; +} + +/** + * \brief Disable PIO capture mode. + * + * \param p_pio Pointer to a PIO instance. + */ +void pio_capture_disable(Pio *p_pio) +{ + p_pio->PIO_PCMR &= (~PIO_PCMR_PCEN); + pio_capture_enable_flag = false; +} + +/** + * \brief Read from Capture Reception Holding Register. + * \note Data presence should be tested before any read attempt. + * + * \param p_pio Pointer to a PIO instance. + * \param pul_data Pointer to store the data. + * + * \retval 0 Success. + * \retval 1 I/O Failure, Capture data is not ready. + */ +uint32_t pio_capture_read(const Pio *p_pio, uint32_t *pul_data) +{ + /* Check if the data is ready */ + if ((p_pio->PIO_PCISR & PIO_PCISR_DRDY) == 0) { + return 1; + } + + /* Read data */ + *pul_data = p_pio->PIO_PCRHR; + return 0; +} + +/** + * \brief Enable the given interrupt source of PIO capture. The status + * register of the corresponding PIO capture controller is cleared prior + * to enabling the interrupt. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Interrupt sources bit map. + */ +void pio_capture_enable_interrupt(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_PCISR; + p_pio->PIO_PCIER = ul_mask; +} + +/** + * \brief Disable a given interrupt source of PIO capture. + * + * \param p_pio Pointer to a PIO instance. + * \param ul_mask Interrupt sources bit map. + */ +void pio_capture_disable_interrupt(Pio *p_pio, const uint32_t ul_mask) +{ + p_pio->PIO_PCIDR = ul_mask; +} + +/** + * \brief Read PIO interrupt status of PIO capture. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The interrupt status mask value. + */ +uint32_t pio_capture_get_interrupt_status(const Pio *p_pio) +{ + return p_pio->PIO_PCISR; +} + +/** + * \brief Read PIO interrupt mask of PIO capture. + * + * \param p_pio Pointer to a PIO instance. + * + * \return The interrupt mask value. + */ +uint32_t pio_capture_get_interrupt_mask(const Pio *p_pio) +{ + return p_pio->PIO_PCIMR; +} +#if !(SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Get PDC registers base address. + * + * \param p_pio Pointer to an PIO peripheral. + * + * \return PIOA PDC register base address. + */ +Pdc *pio_capture_get_pdc_base(const Pio *p_pio) +{ + UNUSED(p_pio); /* Stop warning */ + return PDC_PIOA; +} +#endif +#endif + +#if (SAM4C || SAM4CP || SAM4CM || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Set PIO IO drive. + * + * \param p_pio Pointer to an PIO peripheral. + * \param ul_line Line index (0..31). + * \param mode IO drive mode. + */ +void pio_set_io_drive(Pio *p_pio, uint32_t ul_line, + enum pio_io_drive_mode mode) +{ + p_pio->PIO_DRIVER &= ~(1 << ul_line); + p_pio->PIO_DRIVER |= mode << ul_line; +} +#endif + +//@} + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h new file mode 100644 index 00000000..fedf3f58 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h @@ -0,0 +1,367 @@ +/** + * \file + * + * \brief Parallel Input/Output (PIO) Controller driver for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef PIO_H_INCLUDED +#define PIO_H_INCLUDED + +#include "compiler.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Compute PIO register length */ +#define PIO_DELTA ((uint32_t) PIOB - (uint32_t) PIOA) + +/* GPIO Support */ +#define PIO_TYPE_Pos 27 +/* PIO Type Mask */ +#define PIO_TYPE_Msk (0xFu << PIO_TYPE_Pos) +/* The pin is not a function pin. */ +#define PIO_TYPE_NOT_A_PIN (0x0u << PIO_TYPE_Pos) +/* The pin is controlled by the peripheral A. */ +#define PIO_TYPE_PIO_PERIPH_A (0x1u << PIO_TYPE_Pos) +/* The pin is controlled by the peripheral B. */ +#define PIO_TYPE_PIO_PERIPH_B (0x2u << PIO_TYPE_Pos) +/* The pin is controlled by the peripheral C. */ +#define PIO_TYPE_PIO_PERIPH_C (0x3u << PIO_TYPE_Pos) +/* The pin is controlled by the peripheral D. */ +#define PIO_TYPE_PIO_PERIPH_D (0x4u << PIO_TYPE_Pos) +/* The pin is an input. */ +#define PIO_TYPE_PIO_INPUT (0x5u << PIO_TYPE_Pos) +/* The pin is an output and has a default level of 0. */ +#define PIO_TYPE_PIO_OUTPUT_0 (0x6u << PIO_TYPE_Pos) +/* The pin is an output and has a default level of 1. */ +#define PIO_TYPE_PIO_OUTPUT_1 (0x7u << PIO_TYPE_Pos) + +typedef enum _pio_type { + PIO_NOT_A_PIN = PIO_TYPE_NOT_A_PIN, + PIO_PERIPH_A = PIO_TYPE_PIO_PERIPH_A, + PIO_PERIPH_B = PIO_TYPE_PIO_PERIPH_B, +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) + PIO_PERIPH_C = PIO_TYPE_PIO_PERIPH_C, + PIO_PERIPH_D = PIO_TYPE_PIO_PERIPH_D, +#endif + PIO_INPUT = PIO_TYPE_PIO_INPUT, + PIO_OUTPUT_0 = PIO_TYPE_PIO_OUTPUT_0, + PIO_OUTPUT_1 = PIO_TYPE_PIO_OUTPUT_1 +} pio_type_t; + +/* Default pin configuration (no attribute). */ +#define PIO_DEFAULT (0u << 0) +/* The internal pin pull-up is active. */ +#define PIO_PULLUP (1u << 0) +/* The internal glitch filter is active. */ +#define PIO_DEGLITCH (1u << 1) +/* The pin is open-drain. */ +#define PIO_OPENDRAIN (1u << 2) + +/* The internal debouncing filter is active. */ +#define PIO_DEBOUNCE (1u << 3) + +/* Enable additional interrupt modes. */ +#define PIO_IT_AIME (1u << 4) + +/* Interrupt High Level/Rising Edge detection is active. */ +#define PIO_IT_RE_OR_HL (1u << 5) +/* Interrupt Edge detection is active. */ +#define PIO_IT_EDGE (1u << 6) + +/* Low level interrupt is active */ +#define PIO_IT_LOW_LEVEL (0 | 0 | PIO_IT_AIME) +/* High level interrupt is active */ +#define PIO_IT_HIGH_LEVEL (PIO_IT_RE_OR_HL | 0 | PIO_IT_AIME) +/* Falling edge interrupt is active */ +#define PIO_IT_FALL_EDGE (0 | PIO_IT_EDGE | PIO_IT_AIME) +/* Rising edge interrupt is active */ +#define PIO_IT_RISE_EDGE (PIO_IT_RE_OR_HL | PIO_IT_EDGE | PIO_IT_AIME) + +/* + * The #attribute# field is a bitmask that can either be set to PIO_DEFAULT, + * or combine (using bitwise OR '|') any number of the following constants: + * - PIO_PULLUP + * - PIO_DEGLITCH + * - PIO_DEBOUNCE + * - PIO_OPENDRAIN + * - PIO_IT_LOW_LEVEL + * - PIO_IT_HIGH_LEVEL + * - PIO_IT_FALL_EDGE + * - PIO_IT_RISE_EDGE + */ +void pio_pull_up(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_pull_up_enable); +void pio_set_debounce_filter(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_cut_off); +void pio_set(Pio *p_pio, const uint32_t ul_mask); +void pio_clear(Pio *p_pio, const uint32_t ul_mask); +uint32_t pio_get(Pio *p_pio, const pio_type_t ul_type, + const uint32_t ul_mask); +void pio_set_peripheral(Pio *p_pio, const pio_type_t ul_type, + const uint32_t ul_mask); +void pio_set_input(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_attribute); +void pio_set_output(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_default_level, + const uint32_t ul_multidrive_enable, + const uint32_t ul_pull_up_enable); +uint32_t pio_configure(Pio *p_pio, const pio_type_t ul_type, + const uint32_t ul_mask, const uint32_t ul_attribute); +uint32_t pio_get_output_data_status(const Pio *p_pio, + const uint32_t ul_mask); +void pio_set_multi_driver(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_multi_driver_enable); +uint32_t pio_get_multi_driver_status(const Pio *p_pio); + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pio_pull_down(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_pull_down_enable); +#endif + +void pio_enable_output_write(Pio *p_pio, const uint32_t ul_mask); +void pio_disable_output_write(Pio *p_pio, const uint32_t ul_mask); +uint32_t pio_get_output_write_status(const Pio *p_pio); +void pio_sync_output_write(Pio *p_pio, const uint32_t ul_mask); + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pio_set_schmitt_trigger(Pio *p_pio, const uint32_t ul_mask); +uint32_t pio_get_schmitt_trigger(const Pio *p_pio); +#endif + +void pio_configure_interrupt(Pio *p_pio, const uint32_t ul_mask, + const uint32_t ul_attr); +void pio_enable_interrupt(Pio *p_pio, const uint32_t ul_mask); +void pio_disable_interrupt(Pio *p_pio, const uint32_t ul_mask); +uint32_t pio_get_interrupt_status(const Pio *p_pio); +uint32_t pio_get_interrupt_mask(const Pio *p_pio); +void pio_set_additional_interrupt_mode(Pio *p_pio, + const uint32_t ul_mask, const uint32_t ul_attribute); +void pio_set_writeprotect(Pio *p_pio, const uint32_t ul_enable); +uint32_t pio_get_writeprotect_status(const Pio *p_pio); + +#if (SAM3S || SAM4S || SAM4E || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pio_capture_set_mode(Pio *p_pio, uint32_t ul_mode); +void pio_capture_enable(Pio *p_pio); +void pio_capture_disable(Pio *p_pio); +uint32_t pio_capture_read(const Pio *p_pio, uint32_t * pul_data); +void pio_capture_enable_interrupt(Pio *p_pio, const uint32_t ul_mask); +void pio_capture_disable_interrupt(Pio * p_pio, const uint32_t ul_mask); +uint32_t pio_capture_get_interrupt_status(const Pio *p_pio); +uint32_t pio_capture_get_interrupt_mask(const Pio *p_pio); +#if !(SAMV71 || SAMV70 || SAME70 || SAMS70) +Pdc *pio_capture_get_pdc_base(const Pio *p_pio); +#endif +#endif + +/* GPIO Support */ +uint32_t pio_get_pin_value(uint32_t pin); +void pio_set_pin_high(uint32_t pin); +void pio_set_pin_low(uint32_t pin); +void pio_toggle_pin(uint32_t pin); +void pio_enable_pin_interrupt(uint32_t pin); +void pio_disable_pin_interrupt(uint32_t pin); +Pio *pio_get_pin_group(uint32_t pin); +uint32_t pio_get_pin_group_id(uint32_t pin); +uint32_t pio_get_pin_group_mask(uint32_t pin); +uint32_t pio_configure_pin(uint32_t ul_pin, const uint32_t ul_flags); +void pio_set_pin_group_high(Pio *p_pio, uint32_t ul_mask); +void pio_set_pin_group_low(Pio *p_pio, uint32_t ul_mask); +void pio_toggle_pin_group(Pio *p_pio, uint32_t ul_mask); +uint32_t pio_configure_pin_group(Pio *p_pio, uint32_t ul_mask, + const uint32_t ul_flags); + +#if (SAM4C || SAM4CP || SAM4CM || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +enum pio_io_drive_mode { + PIO_IO_DRIVE_LOW = 0, + PIO_IO_DRIVE_HIGH, +}; +void pio_set_io_drive(Pio *p_pio, uint32_t ul_line, + enum pio_io_drive_mode mode); +#endif + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +void pio_keypad_enable(Pio *p_pio); +void pio_keypad_disable(Pio *p_pio); +void pio_keypad_set_row_num(Pio *p_pio, uint8_t num); +uint8_t pio_keypad_get_row_num(const Pio *p_pio); +void pio_keypad_set_column_num(Pio *p_pio, uint8_t num); +uint8_t pio_keypad_get_column_num(const Pio *p_pio); +void pio_keypad_set_debouncing_value(Pio *p_pio, uint16_t value); +uint16_t pio_keypad_get_debouncing_value(const Pio *p_pio); +void pio_keypad_enable_interrupt(Pio *p_pio, uint32_t ul_mask); +void pio_keypad_disable_interrupt(Pio *p_pio, uint32_t ul_mask); +uint32_t pio_keypad_get_interrupt_mask(const Pio *p_pio); +uint32_t pio_keypad_get_press_status(const Pio *p_pio); +uint32_t pio_keypad_get_release_status(const Pio *p_pio); +uint8_t pio_keypad_get_simult_press_num(const Pio *p_pio); +uint8_t pio_keypad_get_simult_release_num(const Pio *p_pio); +uint8_t pio_keypad_get_press_row_index(const Pio *p_pio, uint8_t queue); +uint8_t pio_keypad_get_press_column_index(const Pio *p_pio, uint8_t queue); +uint8_t pio_keypad_get_release_row_index(const Pio *p_pio, uint8_t queue); +uint8_t pio_keypad_get_release_column_index(const Pio *p_pio, uint8_t queue); +#endif +/** + * \page sam_pio_quickstart Quick Start Guide for the SAM PIO driver + * + * This is the quick start guide for the \ref sam_drivers_pio_group "PIO Driver", + * with step-by-step instructions on how to configure and use the driver for + * specific use cases. + * + * The section described below can be compiled into e.g. the main application + * loop or any other function that will need to interface with the IO port. + * + * \section sam_pio_usecases PIO use cases + * - \ref sam_pio_quickstart_basic + * - \ref sam_pio_quickstart_use_case_2 + * + * \section sam_pio_quickstart_basic Basic usage of the PIO driver + * This section will present a basic use case for the PIO driver. This use case + * will configure pin 23 on port A as output and pin 16 as an input with pullup, + * and then toggle the output pin's value to match that of the input pin. + * + * \subsection sam_pio_quickstart_use_case_1_prereq Prerequisites + * - \ref group_pmc "Power Management Controller driver" + * + * \subsection sam_pio_quickstart_use_case_1_setup_steps Initialization code + * Add to the application initialization code: + * \code + pmc_enable_periph_clk(ID_PIOA); + + pio_set_output(PIOA, PIO_PA23, LOW, DISABLE, ENABLE); + pio_set_input(PIOA, PIO_PA16, PIO_PULLUP); +\endcode + * + * \subsection sam_pio_quickstart_use_case_1_setup_steps_workflow Workflow + * -# Enable the module clock to the PIOA peripheral: + * \code pmc_enable_periph_clk(ID_PIOA); \endcode + * -# Set pin 23 direction on PIOA as output, default low level: + * \code pio_set_output(PIOA, PIO_PA23, LOW, DISABLE, ENABLE); \endcode + * -# Set pin 16 direction on PIOA as input, with pullup: + * \code pio_set_input(PIOA, PIO_PA16, PIO_PULLUP); \endcode + * + * \subsection sam_pio_quickstart_use_case_1_example_code Example code + * Set the state of output pin 23 to match input pin 16: + * \code + if (pio_get(PIOA, PIO_TYPE_PIO_INPUT, PIO_PA16)) + pio_clear(PIOA, PIO_PA23); + else + pio_set(PIOA, PIO_PA23); +\endcode + * + * \subsection sam_pio_quickstart_use_case_1_example_workflow Workflow + * -# We check the value of the pin: + * \code + if (pio_get(PIOA, PIO_TYPE_PIO_INPUT, PIO_PA16)) +\endcode + * -# Then we set the new output value based on the read pin value: + * \code + pio_clear(PIOA, PIO_PA23); + else + pio_set(PIOA, PIO_PA23); +\endcode + */ + +/** + * \page sam_pio_quickstart_use_case_2 Advanced use case - Interrupt driven edge detection + * + * \section sam_pio_quickstart_use_case_2 Advanced Use Case 1 + * This section will present a more advanced use case for the PIO driver. This use case + * will configure pin 23 on port A as output and pin 16 as an input with pullup, + * and then toggle the output pin's value to match that of the input pin using the interrupt + * controller within the device. + * + * \subsection sam_pio_quickstart_use_case_2_prereq Prerequisites + * - \ref group_pmc "Power Management Controller driver" + * + * \subsection sam_pio_quickstart_use_case_2_setup_steps Initialization code + * Add to the application initialization code: + * \code + pmc_enable_periph_clk(ID_PIOA); + + pio_set_output(PIOA, PIO_PA23, LOW, DISABLE, ENABLE); + pio_set_input(PIOA, PIO_PA16, PIO_PULLUP); + + pio_handler_set(PIOA, ID_PIOA, PIO_PA16, PIO_IT_EDGE, pin_edge_handler); + pio_enable_interrupt(PIOA, PIO_PA16); + + NVIC_EnableIRQ(PIOA_IRQn); +\endcode + * + * \subsection sam_pio_quickstart_use_case_2_setup_steps_workflow Workflow + * -# Enable the module clock to the PIOA peripheral: + * \code pmc_enable_periph_clk(ID_PIOA); \endcode + * -# Set pin 23 direction on PIOA as output, default low level: + * \code pio_set_output(PIOA, PIO_PA23, LOW, DISABLE, ENABLE); \endcode + * -# Set pin 16 direction on PIOA as input, with pullup: + * \code pio_set_input(PIOA, PIO_PA16, PIO_PULLUP); \endcode + * -# Configure the input pin 16 interrupt mode and handler: + * \code pio_handler_set(PIOA, ID_PIOA, PIO_PA16, PIO_IT_EDGE, pin_edge_handler); \endcode + * -# Enable the interrupt for the configured input pin: + * \code pio_enable_interrupt(PIOA, PIO_PA16); \endcode + * -# Enable interrupt handling from the PIOA module: + * \code NVIC_EnableIRQ(PIOA_IRQn); \endcode + * + * \subsection sam_pio_quickstart_use_case_2_example_code Example code + * Add the following function to your application: + * \code + void pin_edge_handler(const uint32_t id, const uint32_t index) + { + if ((id == ID_PIOA) && (index == PIO_PA16)){ + if (pio_get(PIOA, PIO_TYPE_PIO_INPUT, PIO_PA16)) + pio_clear(PIOA, PIO_PA23); + else + pio_set(PIOA, PIO_PA23); + } + } +\endcode + * + * \subsection sam_pio_quickstart_use_case_2_example_workflow Workflow + * -# We check the value of the pin: + * \code + if (pio_get(PIOA, PIO_TYPE_PIO_INPUT, PIO_PA16)) +\endcode + * -# Then we set the new output value based on the read pin value: + * \code + pio_clear(PIOA, PIO_PA23); + else + pio_set(PIOA, PIO_PA23); +\endcode + */ + +#ifdef __cplusplus +} +#endif + +#endif /* PIO_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c new file mode 100644 index 00000000..ac40cfdb --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c @@ -0,0 +1,286 @@ +/** + * \file + * + * \brief Parallel Input/Output (PIO) interrupt handler for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "pio.h" +#include "pio_handler.h" + +/** + * Maximum number of interrupt sources that can be defined. This + * constant can be increased, but the current value is the smallest possible one + * that will be compatible with all existing projects. + */ +#define MAX_INTERRUPT_SOURCES 7 + +/** + * Describes a PIO interrupt source, including the PIO instance triggering the + * interrupt and the associated interrupt handler. + */ +struct s_interrupt_source { + uint32_t id; + uint32_t mask; + uint32_t attr; + + /* Interrupt handler. */ + void (*handler) (const uint32_t, const uint32_t); +}; + + +/* List of interrupt sources. */ +static struct s_interrupt_source gs_interrupt_sources[MAX_INTERRUPT_SOURCES]; + +/* Number of currently defined interrupt sources. */ +static uint32_t gs_ul_nb_sources = 0; + +#if (SAM3S || SAM4S || SAM4E) +/* PIO Capture handler */ +static void (*pio_capture_handler)(Pio *) = NULL; +extern uint32_t pio_capture_enable_flag; +#endif + +/** + * \brief Process an interrupt request on the given PIO controller. + * + * \param p_pio PIO controller base address. + * \param ul_id PIO controller ID. + */ +void pio_handler_process(Pio *p_pio, uint32_t ul_id) +{ + uint32_t status; + uint32_t i; + + /* Read PIO controller status */ + status = pio_get_interrupt_status(p_pio); + status &= pio_get_interrupt_mask(p_pio); + + /* Check pending events */ + if (status != 0) { + /* Find triggering source */ + i = 0; + while (status != 0) { + /* Source is configured on the same controller */ + if (gs_interrupt_sources[i].id == ul_id) { + /* Source has PIOs whose statuses have changed */ + if ((status & gs_interrupt_sources[i].mask) != 0) { + gs_interrupt_sources[i].handler(gs_interrupt_sources[i].id, + gs_interrupt_sources[i].mask); + status &= ~(gs_interrupt_sources[i].mask); + } + } + i++; + if (i >= MAX_INTERRUPT_SOURCES) { + break; + } + } + } + + /* Check capture events */ +#if (SAM3S || SAM4S || SAM4E) + if (pio_capture_enable_flag) { + if (pio_capture_handler) { + pio_capture_handler(p_pio); + } + } +#endif +} + +/** + * \brief Set an interrupt handler for the provided pins. + * The provided handler will be called with the triggering pin as its parameter + * as soon as an interrupt is detected. + * + * \param p_pio PIO controller base address. + * \param ul_id PIO ID. + * \param ul_mask Pins (bit mask) to configure. + * \param ul_attr Pins attribute to configure. + * \param p_handler Interrupt handler function pointer. + * + * \return 0 if successful, 1 if the maximum number of sources has been defined. + */ +uint32_t pio_handler_set(Pio *p_pio, uint32_t ul_id, uint32_t ul_mask, + uint32_t ul_attr, void (*p_handler) (uint32_t, uint32_t)) +{ + uint8_t i; + struct s_interrupt_source *pSource; + + if (gs_ul_nb_sources >= MAX_INTERRUPT_SOURCES) + return 1; + + /* Check interrupt for this pin, if already defined, redefine it. */ + for (i = 0; i <= gs_ul_nb_sources; i++) { + pSource = &(gs_interrupt_sources[i]); + if (pSource->id == ul_id && pSource->mask == ul_mask) { + break; + } + } + + /* Define new source */ + pSource->id = ul_id; + pSource->mask = ul_mask; + pSource->attr = ul_attr; + pSource->handler = p_handler; + if (i == gs_ul_nb_sources + 1) { + gs_ul_nb_sources++; + } + + /* Configure interrupt mode */ + pio_configure_interrupt(p_pio, ul_mask, ul_attr); + + return 0; +} + +#if (SAM3S || SAM4S || SAM4E) +/** + * \brief Set a capture interrupt handler for all PIO. + * + * The handler will be called with the triggering PIO as its parameter + * as soon as an interrupt is detected. + * + * \param p_handler Interrupt handler function pointer. + * + */ +void pio_capture_handler_set(void (*p_handler)(Pio *)) +{ + pio_capture_handler = p_handler; +} +#endif + +#ifdef ID_PIOA +/** + * \brief Set an interrupt handler for the specified pin. + * The provided handler will be called with the triggering pin as its parameter + * as soon as an interrupt is detected. + * + * \param ul_pin Pin index to configure. + * \param ul_flag Pin flag. + * \param p_handler Interrupt handler function pointer. + * + * \return 0 if successful, 1 if the maximum number of sources has been defined. + */ +uint32_t pio_handler_set_pin(uint32_t ul_pin, uint32_t ul_flag, + void (*p_handler) (uint32_t, uint32_t)) +{ + Pio *p_pio = pio_get_pin_group(ul_pin); + uint32_t group_id = pio_get_pin_group_id(ul_pin); + uint32_t group_mask = pio_get_pin_group_mask(ul_pin); + + return pio_handler_set(p_pio, group_id, group_mask, ul_flag, p_handler); +} + +/** + * \brief Parallel IO Controller A interrupt handler. + * Redefined PIOA interrupt handler for NVIC interrupt table. + */ +void PIOA_Handler(void) +{ + pio_handler_process(PIOA, ID_PIOA); +} +#endif + +#ifdef ID_PIOB +/** + * \brief Parallel IO Controller B interrupt handler + * Redefined PIOB interrupt handler for NVIC interrupt table. + */ +void PIOB_Handler(void) +{ + pio_handler_process(PIOB, ID_PIOB); +} +#endif + +#ifdef ID_PIOC +/** + * \brief Parallel IO Controller C interrupt handler. + * Redefined PIOC interrupt handler for NVIC interrupt table. + */ +void PIOC_Handler(void) +{ + pio_handler_process(PIOC, ID_PIOC); +} +#endif + +#ifdef ID_PIOD +/** + * \brief Parallel IO Controller D interrupt handler. + * Redefined PIOD interrupt handler for NVIC interrupt table. + */ +void PIOD_Handler(void) +{ + pio_handler_process(PIOD, ID_PIOD); +} +#endif + +#ifdef ID_PIOE +/** + * \brief Parallel IO Controller E interrupt handler. + * Redefined PIOE interrupt handler for NVIC interrupt table. + */ +void PIOE_Handler(void) +{ + pio_handler_process(PIOE, ID_PIOE); +} +#endif + +#ifdef ID_PIOF +/** + * \brief Parallel IO Controller F interrupt handler. + * Redefined PIOF interrupt handler for NVIC interrupt table. + */ +void PIOF_Handler(void) +{ + pio_handler_process(PIOF, ID_PIOF); +} +#endif + +/** + * \brief Initialize PIO interrupt management logic. + * + * \param p_pio PIO controller base address. + * \param ul_irqn NVIC line number. + * \param ul_priority PIO controller interrupts priority. + */ +void pio_handler_set_priority(Pio *p_pio, IRQn_Type ul_irqn, uint32_t ul_priority) +{ + uint32_t bitmask = 0; + + bitmask = pio_get_interrupt_mask(p_pio); + pio_disable_interrupt(p_pio, 0xFFFFFFFF); + pio_get_interrupt_status(p_pio); + NVIC_DisableIRQ(ul_irqn); + NVIC_ClearPendingIRQ(ul_irqn); + NVIC_SetPriority(ul_irqn, ul_priority); + NVIC_EnableIRQ(ul_irqn); + pio_enable_interrupt(p_pio, bitmask); +} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h new file mode 100644 index 00000000..36518900 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h @@ -0,0 +1,59 @@ +/** + * \file + * + * \brief Parallel Input/Output (PIO) interrupt handler for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef PIO_HANDLER_H_INCLUDED +#define PIO_HANDLER_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +void pio_handler_process(Pio *p_pio, uint32_t ul_id); +void pio_handler_set_priority(Pio *p_pio, IRQn_Type ul_irqn, uint32_t ul_priority); +uint32_t pio_handler_set(Pio *p_pio, uint32_t ul_id, uint32_t ul_mask, + uint32_t ul_attr, void (*p_handler) (uint32_t, uint32_t)); +uint32_t pio_handler_set_pin(uint32_t ul_pin, uint32_t ul_flag, + void (*p_handler) (uint32_t, uint32_t)); + +#if (SAM3S || SAM4S || SAM4E) +void pio_capture_handler_set(void (*p_handler)(Pio *)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PIO_HANDLER_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c new file mode 100644 index 00000000..bc78ef5e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c @@ -0,0 +1,1723 @@ +/** + * \file + * + * \brief Power Management Controller (PMC) driver for SAM. + * + * Copyright (c) 2011-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "pmc.h" + +#if (SAM3N) +# define MAX_PERIPH_ID 31 +#elif (SAM3XA) +# define MAX_PERIPH_ID 44 +#elif (SAM3U) +# define MAX_PERIPH_ID 29 +#elif (SAM3S || SAM4S) +# define MAX_PERIPH_ID 34 +#elif (SAM4E) +# define MAX_PERIPH_ID 47 +#elif (SAMV71) +# define MAX_PERIPH_ID 63 +#elif (SAMV70) +# define MAX_PERIPH_ID 63 +#elif (SAME70) +# define MAX_PERIPH_ID 63 +#elif (SAMS70) +# define MAX_PERIPH_ID 63 +#elif (SAM4N) +# define MAX_PERIPH_ID 31 +#elif (SAM4C || SAM4CM || SAM4CP) +# define MAX_PERIPH_ID 43 +#elif (SAMG51) +# define MAX_PERIPH_ID 47 +#elif (SAMG53) +# define MAX_PERIPH_ID 47 +#elif (SAMG54) +# define MAX_PERIPH_ID 47 +#elif (SAMG55) +# define MAX_PERIPH_ID 50 +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_pmc_group Power Management Controller (PMC) + * + * \par Purpose + * + * The Power Management Controller (PMC) optimizes power consumption by + * controlling all system and user peripheral clocks. The PMC enables/disables + * the clock inputs to many of the peripherals and the Cortex-M Processor. + * + * @{ + */ + +/** + * \brief Set the prescaler of the MCK. + * + * \param ul_pres Prescaler value. + */ +void pmc_mck_set_prescaler(uint32_t ul_pres) +{ + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); +} + +#if SAMV71 || SAMV70 || SAME70 || SAMS70 +/** + * \brief Set the division of the MCK. + * + * \param ul_div Division value. + */ +void pmc_mck_set_division(uint32_t ul_div) +{ + switch (ul_div) { + case 1: + ul_div = PMC_MCKR_MDIV_EQ_PCK; + break; + case 2: + ul_div = PMC_MCKR_MDIV_PCK_DIV2; + break; + case 3: + ul_div = PMC_MCKR_MDIV_PCK_DIV3; + break; + case 4: + ul_div = PMC_MCKR_MDIV_PCK_DIV4; + break; + default: + ul_div = PMC_MCKR_MDIV_EQ_PCK; + break; + } + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_MDIV_Msk)) | ul_div; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); +} +#endif + +/** + * \brief Set the source of the MCK. + * + * \param ul_source Source selection value. + */ +void pmc_mck_set_source(uint32_t ul_source) +{ + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | ul_source; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); +} + +/** + * \brief Switch master clock source selection to slow clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_sclk(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_SLOW_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch master clock source selection to main clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_mainck(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_MAIN_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch master clock source selection to PLLA clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_pllack(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_PLLA_CLK; + + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP || SAMG55) +/** + * \brief Switch master clock source selection to PLLB clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_pllbck(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_PLLB_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +#if (SAM3XA || SAM3U || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Switch master clock source selection to UPLL clock. + * + * \param ul_pres Processor clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_mck_to_upllck(uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_PRES_Msk)) | ul_pres; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & (~PMC_MCKR_CSS_Msk)) | + PMC_MCKR_CSS_UPLL_CLK; + for (ul_timeout = PMC_TIMEOUT; !(PMC->PMC_SR & PMC_SR_MCKRDY); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +/** + * \brief Switch slow clock source selection to external 32k (Xtal or Bypass). + * + * \note Switching SCLK back to 32krc is only possible by shutting down the + * VDDIO power supply. + * + * \param ul_bypass 0 for Xtal, 1 for bypass. + */ +void pmc_switch_sclk_to_32kxtal(uint32_t ul_bypass) +{ + /* Set Bypass mode if required */ + if (ul_bypass == 1) { + SUPC->SUPC_MR |= SUPC_MR_KEY_PASSWD | + SUPC_MR_OSCBYPASS; + } + + SUPC->SUPC_CR = SUPC_CR_KEY_PASSWD | SUPC_CR_XTALSEL; +} + +/** + * \brief Check if the external 32k Xtal is ready. + * + * \retval 1 External 32k Xtal is ready. + * \retval 0 External 32k Xtal is not ready. + */ +uint32_t pmc_osc_is_ready_32kxtal(void) +{ + return ((SUPC->SUPC_SR & SUPC_SR_OSCSEL) + && (PMC->PMC_SR & PMC_SR_OSCSELS)); +} + +/** + * \brief Switch main clock source selection to internal fast RC. + * + * \param ul_moscrcf Fast RC oscillator(4/8/12Mhz). + * + * \retval 0 Success. + * \retval 1 Timeout error. + * \retval 2 Invalid frequency. + */ +void pmc_switch_mainck_to_fastrc(uint32_t ul_moscrcf) +{ + /* Enable Fast RC oscillator but DO NOT switch to RC now */ + PMC->CKGR_MOR |= (CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCRCEN); + + /* Wait the Fast RC to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); + + /* Change Fast RC oscillator frequency */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCF_Msk) | + CKGR_MOR_KEY_PASSWD | ul_moscrcf; + + /* Wait the Fast RC to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); + + /* Switch to Fast RC */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCSEL) | + CKGR_MOR_KEY_PASSWD; +} + +/** + * \brief Enable fast RC oscillator. + * + * \param ul_rc Fast RC oscillator(4/8/12Mhz). + */ +void pmc_osc_enable_fastrc(uint32_t ul_rc) +{ + /* Enable Fast RC oscillator but DO NOT switch to RC */ + PMC->CKGR_MOR |= (CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCRCEN); + /* Wait the Fast RC to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); + + /* Change Fast RC oscillator frequency */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCF_Msk) | + CKGR_MOR_KEY_PASSWD | ul_rc; + /* Wait the Fast RC to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); +} + +/** + * \brief Disable the internal fast RC. + */ +void pmc_osc_disable_fastrc(void) +{ + /* Disable Fast RC oscillator */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCEN & + ~CKGR_MOR_MOSCRCF_Msk) + | CKGR_MOR_KEY_PASSWD; +} + +/** + * \brief Check if the main fastrc is ready. + * + * \retval 0 Xtal is not ready, otherwise ready. + */ +uint32_t pmc_osc_is_ready_fastrc(void) +{ + return (PMC->PMC_SR & PMC_SR_MOSCRCS); +} + +/** + * \brief Enable main XTAL oscillator. + * + * \param ul_xtal_startup_time Xtal start-up time, in number of slow clocks. + */ +void pmc_osc_enable_main_xtal(uint32_t ul_xtal_startup_time) +{ + uint32_t mor = PMC->CKGR_MOR; + mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); + mor |= CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCXTEN | + CKGR_MOR_MOSCXTST(ul_xtal_startup_time); + PMC->CKGR_MOR = mor; + /* Wait the main Xtal to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); +} + +/** + * \brief Bypass main XTAL. + */ +void pmc_osc_bypass_main_xtal(void) +{ + uint32_t mor = PMC->CKGR_MOR; + mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); + mor |= CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCXTBY; + /* Enable Crystal oscillator but DO NOT switch now. Keep MOSCSEL to 0 */ + PMC->CKGR_MOR = mor; + /* The MOSCXTS in PMC_SR is automatically set */ +} + +/** + * \brief Disable the main Xtal. + */ +void pmc_osc_disable_main_xtal(void) +{ + uint32_t mor = PMC->CKGR_MOR; + mor &= ~(CKGR_MOR_MOSCXTBY|CKGR_MOR_MOSCXTEN); + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | mor; +} + +/** + * \brief Check if the main crystal is bypassed. + * + * \retval 0 Xtal is bypassed, otherwise not. + */ +uint32_t pmc_osc_is_bypassed_main_xtal(void) +{ + return (PMC->CKGR_MOR & CKGR_MOR_MOSCXTBY); +} + +/** + * \brief Check if the main crystal is ready. + * + * \note If main crystal is bypassed, it's always ready. + * + * \retval 0 main crystal is not ready, otherwise ready. + */ +uint32_t pmc_osc_is_ready_main_xtal(void) +{ + return (PMC->PMC_SR & PMC_SR_MOSCXTS); +} + +/** + * \brief Switch main clock source selection to external Xtal/Bypass. + * + * \note The function may switch MCK to SCLK if MCK source is MAINCK to avoid + * any system crash. + * + * \note If used in Xtal mode, the Xtal is automatically enabled. + * + * \param ul_bypass 0 for Xtal, 1 for bypass. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +void pmc_switch_mainck_to_xtal(uint32_t ul_bypass, + uint32_t ul_xtal_startup_time) +{ + /* Enable Main Xtal oscillator */ + if (ul_bypass) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCXTBY | + CKGR_MOR_MOSCSEL; + } else { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | + CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCXTEN | + CKGR_MOR_MOSCXTST(ul_xtal_startup_time); + /* Wait the Xtal to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); + + PMC->CKGR_MOR |= CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCSEL; + } +} + +/** + * \brief Disable the external Xtal. + * + * \param ul_bypass 0 for Xtal, 1 for bypass. + */ +void pmc_osc_disable_xtal(uint32_t ul_bypass) +{ + /* Disable xtal oscillator */ + if (ul_bypass) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | + CKGR_MOR_KEY_PASSWD; + } else { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + CKGR_MOR_KEY_PASSWD; + } +} + +/** + * \brief Check if the MAINCK is ready. Depending on MOSCEL, MAINCK can be one + * of Xtal, bypass or internal RC. + * + * \retval 1 Xtal is ready. + * \retval 0 Xtal is not ready. + */ +uint32_t pmc_osc_is_ready_mainck(void) +{ + return PMC->PMC_SR & PMC_SR_MOSCSELS; +} + +/** + * \brief Select Main Crystal or internal RC as main clock source. + * + * \note This function will not enable/disable RC or Main Crystal. + * + * \param ul_xtal_rc 0 internal RC is selected, otherwise Main Crystal. + */ +void pmc_mainck_osc_select(uint32_t ul_xtal_rc) +{ + uint32_t mor = PMC->CKGR_MOR; + if (ul_xtal_rc) { + mor |= CKGR_MOR_MOSCSEL; + } else { + mor &= ~CKGR_MOR_MOSCSEL; + } + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | mor; +} + +/** + * \brief Enable PLLA clock. + * + * \param mula PLLA multiplier. + * \param pllacount PLLA counter. + * \param diva Divider. + */ +void pmc_enable_pllack(uint32_t mula, uint32_t pllacount, uint32_t diva) +{ + /* first disable the PLL to unlock the lock */ + pmc_disable_pllack(); + +#if (SAM4C || SAM4CM || SAM4CP || SAMG) + PMC->CKGR_PLLAR = CKGR_PLLAR_PLLAEN(diva) | + CKGR_PLLAR_PLLACOUNT(pllacount) | CKGR_PLLAR_MULA(mula); +#else + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | CKGR_PLLAR_DIVA(diva) | + CKGR_PLLAR_PLLACOUNT(pllacount) | CKGR_PLLAR_MULA(mula); +#endif + while ((PMC->PMC_SR & PMC_SR_LOCKA) == 0); +} + +/** + * \brief Disable PLLA clock. + */ +void pmc_disable_pllack(void) +{ +#if (SAM4C || SAM4CM || SAM4CP || SAMG) + PMC->CKGR_PLLAR = CKGR_PLLAR_MULA(0); +#else + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | CKGR_PLLAR_MULA(0); +#endif +} + +/** + * \brief Is PLLA locked? + * + * \retval 0 Not locked. + * \retval 1 Locked. + */ +uint32_t pmc_is_locked_pllack(void) +{ + return (PMC->PMC_SR & PMC_SR_LOCKA); +} + +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP || SAMG55) +/** + * \brief Enable PLLB clock. + * + * \param mulb PLLB multiplier. + * \param pllbcount PLLB counter. + * \param divb Divider. + */ +void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb) +{ + /* first disable the PLL to unlock the lock */ + pmc_disable_pllbck(); + +#if SAMG55 + PMC->CKGR_PLLAR = CKGR_PLLAR_PLLAEN(divb) | + CKGR_PLLAR_PLLACOUNT(pllbcount) | CKGR_PLLAR_MULA(mulb); +#else + PMC->CKGR_PLLBR = + CKGR_PLLBR_DIVB(divb) | CKGR_PLLBR_PLLBCOUNT(pllbcount) + | CKGR_PLLBR_MULB(mulb); +#endif + while ((PMC->PMC_SR & PMC_SR_LOCKB) == 0); +} + +/** + * \brief Disable PLLB clock. + */ +void pmc_disable_pllbck(void) +{ + PMC->CKGR_PLLBR = CKGR_PLLBR_MULB(0); +} + +/** + * \brief Is PLLB locked? + * + * \retval 0 Not locked. + * \retval 1 Locked. + */ +uint32_t pmc_is_locked_pllbck(void) +{ + return (PMC->PMC_SR & PMC_SR_LOCKB); +} +#endif + +#if (SAM3XA || SAM3U || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Enable UPLL clock. + */ +void pmc_enable_upll_clock(void) +{ + PMC->CKGR_UCKR = CKGR_UCKR_UPLLCOUNT(3) | CKGR_UCKR_UPLLEN; + + /* Wait UTMI PLL Lock Status */ + while (!(PMC->PMC_SR & PMC_SR_LOCKU)); +} + +/** + * \brief Disable UPLL clock. + */ +void pmc_disable_upll_clock(void) +{ + PMC->CKGR_UCKR &= ~CKGR_UCKR_UPLLEN; +} + +/** + * \brief Is UPLL locked? + * + * \retval 0 Not locked. + * \retval 1 Locked. + */ +uint32_t pmc_is_locked_upll(void) +{ + return (PMC->PMC_SR & PMC_SR_LOCKU); +} +#endif + +/** + * \brief Enable the specified peripheral clock. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Success. + * \retval 1 Invalid parameter. + */ +uint32_t pmc_enable_periph_clk(uint32_t ul_id) +{ +#if defined(REG_PMC_PCR) && !SAMG55 + uint32_t pcr; + PMC->PMC_PCR = ul_id & 0x7F; + pcr = PMC->PMC_PCR | PMC_PCR_EN | PMC_PCR_CMD; + PMC->PMC_PCR = pcr; + return 0; +#else + if (ul_id > MAX_PERIPH_ID) { + return 1; + } + + if (ul_id < 32) { + if ((PMC->PMC_PCSR0 & (1u << ul_id)) != (1u << ul_id)) { + PMC->PMC_PCER0 = 1 << ul_id; + } +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAM4C || SAM4CM || SAM4CP || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) + } else { + ul_id -= 32; + if ((PMC->PMC_PCSR1 & (1u << ul_id)) != (1u << ul_id)) { + PMC->PMC_PCER1 = 1 << ul_id; + } +#endif + } + + return 0; +#endif /* defined(REG_PMC_PCR) && !SAMG55 */ +} + +/** + * \brief Disable the specified peripheral clock. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Success. + * \retval 1 Invalid parameter. + */ +uint32_t pmc_disable_periph_clk(uint32_t ul_id) +{ +#if defined(REG_PMC_PCR) && !SAMG55 + uint32_t pcr; + PMC->PMC_PCR = ul_id & 0x7F; + pcr = PMC->PMC_PCR | PMC_PCR_CMD; + PMC->PMC_PCR = pcr; + return 0; +#else + if (ul_id > MAX_PERIPH_ID) { + return 1; + } + + if (ul_id < 32) { + if ((PMC->PMC_PCSR0 & (1u << ul_id)) == (1u << ul_id)) { + PMC->PMC_PCDR0 = 1 << ul_id; + } +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAM4C || SAM4CM || SAM4CP || SAMG55 || SAMV71 \ + || SAMV70 || SAME70 || SAMS70) + } else { + ul_id -= 32; + if ((PMC->PMC_PCSR1 & (1u << ul_id)) == (1u << ul_id)) { + PMC->PMC_PCDR1 = 1 << ul_id; + } +#endif + } + return 0; +#endif /* defined(REG_PMC_PCR) && !SAMG55 */ +} + +/** + * \brief Enable all peripheral clocks. + */ +void pmc_enable_all_periph_clk(void) +{ + PMC->PMC_PCER0 = PMC_MASK_STATUS0; + while ((PMC->PMC_PCSR0 & PMC_MASK_STATUS0) != PMC_MASK_STATUS0); + +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAM4C || SAM4CM || SAM4CP || SAMV71 \ + || SAMV70 || SAME70 || SAMS70) + PMC->PMC_PCER1 = PMC_MASK_STATUS1; + while ((PMC->PMC_PCSR1 & PMC_MASK_STATUS1) != PMC_MASK_STATUS1); +#endif + +#if defined(REG_PMC_PCR) && !SAMG55 + for (uint32_t id = 64; id <= 0x7F; id ++) { + pmc_enable_periph_clk(id); + } +#endif +} + +/** + * \brief Disable all peripheral clocks. + */ +void pmc_disable_all_periph_clk(void) +{ + PMC->PMC_PCDR0 = PMC_MASK_STATUS0; + while ((PMC->PMC_PCSR0 & PMC_MASK_STATUS0) != 0); + +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAM4C || SAM4CM || SAM4CP || SAMV71 \ + || SAMV70 || SAME70 || SAMS70) + PMC->PMC_PCDR1 = PMC_MASK_STATUS1; + while ((PMC->PMC_PCSR1 & PMC_MASK_STATUS1) != 0); +#endif + +#if defined(REG_PMC_PCR) && !SAMG55 + for (uint32_t id = 64; id <= 0x7F; id ++) { + pmc_disable_periph_clk(id); + } +#endif +} + +/** + * \brief Check if the specified peripheral clock is enabled. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Peripheral clock is disabled or unknown. + * \retval 1 Peripheral clock is enabled. + */ +uint32_t pmc_is_periph_clk_enabled(uint32_t ul_id) +{ +#if defined(REG_PMC_PCR) && !SAMG55 + PMC->PMC_PCR = ul_id & 0x7F; + return (PMC->PMC_PCR & PMC_PCR_EN) ? 1 : 0; +#else + if (ul_id > MAX_PERIPH_ID) { + return 0; + } + +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAM4C || SAM4CM || SAM4CP || SAMV71 \ + || SAMV70 || SAME70 || SAMS70) + if (ul_id < 32) { +#endif + if ((PMC->PMC_PCSR0 & (1u << ul_id))) { + return 1; + } else { + return 0; + } +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAM4C || SAM4CM || SAM4CP || SAMV71 \ + || SAMV70 || SAME70 || SAMS70) + } else { + ul_id -= 32; + if ((PMC->PMC_PCSR1 & (1u << ul_id))) { + return 1; + } else { + return 0; + } + } +#endif +#endif /* defined(REG_PMC_PCR) && !SAMG55 */ +} + +/** + * \brief Set the prescaler for the specified programmable clock. + * + * \param ul_id Peripheral ID. + * \param ul_pres Prescaler value. + */ +void pmc_pck_set_prescaler(uint32_t ul_id, uint32_t ul_pres) +{ + PMC->PMC_PCK[ul_id] = + (PMC->PMC_PCK[ul_id] & ~PMC_PCK_PRES_Msk) | ul_pres; + while ((PMC->PMC_SCER & (PMC_SCER_PCK0 << ul_id)) + && !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id))); +} + +/** + * \brief Set the source oscillator for the specified programmable clock. + * + * \param ul_id Peripheral ID. + * \param ul_source Source selection value. + */ +void pmc_pck_set_source(uint32_t ul_id, uint32_t ul_source) +{ + PMC->PMC_PCK[ul_id] = + (PMC->PMC_PCK[ul_id] & ~PMC_PCK_CSS_Msk) | ul_source; + while ((PMC->PMC_SCER & (PMC_SCER_PCK0 << ul_id)) + && !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id))); +} + +/** + * \brief Switch programmable clock source selection to slow clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_sclk(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_SLOW_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch programmable clock source selection to main clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_mainck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_MAIN_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Switch programmable clock source selection to PLLA clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_pllack(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_PLLA_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Get Slow clock source configuration. + * + * \retval Crystal Oscillator Select value. + */ +uint32_t pmc_get_slck_config(void) +{ + return (SUPC->SUPC_CR & SUPC_CR_XTALSEL); +} + +/** + * \brief Get Main clock source configuration. + * + * \retval Main Clock Source Oscillator Selection and Main RC Oscillator Frequency Selection values. + */ +uint32_t pmc_get_mainck_config(void) +{ + return (PMC->CKGR_MOR & (CKGR_MOR_MOSCSEL | CKGR_MOR_MOSCRCF_Msk)); +} + +/** + * \brief Get PLLA clock configuration. + * + * \retval PLLA Multiplier and PLLA Front End Divider values. + */ +uint32_t pmc_get_pllack_config(void) +{ + return (PMC->CKGR_PLLAR & (CKGR_PLLAR_DIVA_Msk | CKGR_PLLAR_MULA_Msk)); +} + +/** + * \brief Get UPLLCKDIV configuration. + * + * \retval UPLL Divider by 2 value. + */ +uint32_t pmc_get_upllckdiv_config(void) +{ + return (PMC->PMC_MCKR & PMC_MCKR_UPLLDIV2); +} +#endif + +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP || SAMG55) +/** + * \brief Switch programmable clock source selection to PLLB clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_pllbck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_PLLB_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +#if (SAM3XA || SAM3U || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Switch programmable clock source selection to UPLL clock. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_upllck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_UPLL_CLK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); + --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} +#endif + +/** + * \brief Switch programmable clock source selection to mck. + * + * \param ul_id Id of the programmable clock. + * \param ul_pres Programmable clock prescaler. + * + * \retval 0 Success. + * \retval 1 Timeout error. + */ +uint32_t pmc_switch_pck_to_mck(uint32_t ul_id, uint32_t ul_pres) +{ + uint32_t ul_timeout; + + PMC->PMC_PCK[ul_id] = PMC_PCK_CSS_MCK | ul_pres; + for (ul_timeout = PMC_TIMEOUT; + !(PMC->PMC_SR & (PMC_SR_PCKRDY0 << ul_id)); --ul_timeout) { + if (ul_timeout == 0) { + return 1; + } + } + + return 0; +} + +/** + * \brief Enable the specified programmable clock. + * + * \param ul_id Id of the programmable clock. + */ +void pmc_enable_pck(uint32_t ul_id) +{ + PMC->PMC_SCER = PMC_SCER_PCK0 << ul_id; +} + +/** + * \brief Disable the specified programmable clock. + * + * \param ul_id Id of the programmable clock. + */ +void pmc_disable_pck(uint32_t ul_id) +{ + PMC->PMC_SCDR = PMC_SCER_PCK0 << ul_id; +} + +/** + * \brief Enable all programmable clocks. + */ +void pmc_enable_all_pck(void) +{ + PMC->PMC_SCER = PMC_SCER_PCK0 | PMC_SCER_PCK1 | PMC_SCER_PCK2; +} + +/** + * \brief Disable all programmable clocks. + */ +void pmc_disable_all_pck(void) +{ + PMC->PMC_SCDR = PMC_SCDR_PCK0 | PMC_SCDR_PCK1 | PMC_SCDR_PCK2; +} + +/** + * \brief Check if the specified programmable clock is enabled. + * + * \param ul_id Id of the programmable clock. + * + * \retval 0 Programmable clock is disabled or unknown. + * \retval 1 Programmable clock is enabled. + */ +uint32_t pmc_is_pck_enabled(uint32_t ul_id) +{ + if (ul_id > 2) { + return 0; + } + + return (PMC->PMC_SCSR & (PMC_SCSR_PCK0 << ul_id)); +} + +#if (SAM4C || SAM4CM || SAM4CP) +/** + * \brief Enable Coprocessor Clocks. + */ +void pmc_enable_cpck(void) +{ + PMC->PMC_SCER = PMC_SCER_CPCK | PMC_SCER_CPKEY_PASSWD; +} + +/** + * \brief Disable Coprocessor Clocks. + */ +void pmc_disable_cpck(void) +{ + PMC->PMC_SCDR = PMC_SCDR_CPCK | PMC_SCDR_CPKEY_PASSWD; +} + +/** + * \brief Check if the Coprocessor Clocks is enabled. + * + * \retval 0 Coprocessor Clocks is disabled. + * \retval 1 Coprocessor Clocks is enabled. + */ +bool pmc_is_cpck_enabled(void) +{ + if(PMC->PMC_SCSR & PMC_SCSR_CPCK) { + return 1; + } else { + return 0; + } +} + +/** + * \brief Enable Coprocessor Bus Master Clocks. + */ +void pmc_enable_cpbmck(void) +{ + PMC->PMC_SCER = PMC_SCER_CPBMCK | PMC_SCER_CPKEY_PASSWD; +} + +/** + * \brief Disable Coprocessor Bus Master Clocks. + */ +void pmc_disable_cpbmck(void) +{ + PMC->PMC_SCDR = PMC_SCDR_CPBMCK | PMC_SCDR_CPKEY_PASSWD; +} + +/** + * \brief Check if the Coprocessor Bus Master Clocks is enabled. + * + * \retval 0 Coprocessor Bus Master Clocks is disabled. + * \retval 1 Coprocessor Bus Master Clocks is enabled. + */ +bool pmc_is_cpbmck_enabled(void) +{ + if(PMC->PMC_SCSR & PMC_SCSR_CPBMCK) { + return 1; + } else { + return 0; + } +} + +/** + * \brief Set the prescaler for the Coprocessor Master Clock. + * + * \param ul_pres Prescaler value. + */ +void pmc_cpck_set_prescaler(uint32_t ul_pres) +{ + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_CPPRES_Msk)) | PMC_MCKR_CPPRES(ul_pres); +} + +/** + * \brief Set the source for the Coprocessor Master Clock. + * + * \param ul_source Source selection value. + */ +void pmc_cpck_set_source(uint32_t ul_source) +{ + PMC->PMC_MCKR = + (PMC->PMC_MCKR & (~PMC_MCKR_CPCSS_Msk)) | ul_source; +} +#endif + +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Switch UDP (USB) clock source selection to PLLA clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_udpck_to_pllack(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv); +} +#endif + +#if (SAM3S || SAM4S || SAMG55) +/** + * \brief Switch UDP (USB) clock source selection to PLLB clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_udpck_to_pllbck(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv) | PMC_USB_USBS; +} +#endif + +#if (SAM3XA || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Switch UDP (USB) clock source selection to UPLL clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_udpck_to_upllck(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBS | PMC_USB_USBDIV(ul_usbdiv); +} +#endif + +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Enable UDP (USB) clock. + */ +void pmc_enable_udpck(void) +{ +#if (SAM3S || SAM4S || SAM4E || SAMG55) + PMC->PMC_SCER = PMC_SCER_UDP; +#elif (SAMV71 || SAMV70 || SAME70 || SAMS70) + PMC->PMC_SCER = PMC_SCER_USBCLK; +#else + PMC->PMC_SCER = PMC_SCER_UOTGCLK; +# endif +} + +/** + * \brief Disable UDP (USB) clock. + */ +void pmc_disable_udpck(void) +{ +#if (SAM3S || SAM4S || SAM4E || SAMG55) + PMC->PMC_SCDR = PMC_SCDR_UDP; +#elif (SAMV71 || SAMV70 || SAME70 || SAMS70) + PMC->PMC_SCDR = PMC_SCDR_USBCLK; +#else + PMC->PMC_SCDR = PMC_SCDR_UOTGCLK; +# endif +} +#endif + +#if SAMG55 +/** + * \brief Switch UHP (USB) clock source selection to PLLA clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_uhpck_to_pllack(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv); +} + +/** + * \brief Switch UHP (USB) clock source selection to PLLB clock. + * + * \param ul_usbdiv Clock divisor. + */ +void pmc_switch_uhpck_to_pllbck(uint32_t ul_usbdiv) +{ + PMC->PMC_USB = PMC_USB_USBDIV(ul_usbdiv) | PMC_USB_USBS; +} + +/** + * \brief Enable UHP (USB) clock. + */ +void pmc_enable_uhpck(void) +{ + PMC->PMC_SCER = PMC_SCER_UHP; +} +#endif + +/** + * \brief Enable PMC interrupts. + * + * \param ul_sources Interrupt sources bit map. + */ +void pmc_enable_interrupt(uint32_t ul_sources) +{ + PMC->PMC_IER = ul_sources; +} + +/** + * \brief Disable PMC interrupts. + * + * \param ul_sources Interrupt sources bit map. + */ +void pmc_disable_interrupt(uint32_t ul_sources) +{ + PMC->PMC_IDR = ul_sources; +} + +/** + * \brief Get PMC interrupt mask. + * + * \return The interrupt mask value. + */ +uint32_t pmc_get_interrupt_mask(void) +{ + return PMC->PMC_IMR; +} + +/** + * \brief Get current status. + * + * \return The current PMC status. + */ +uint32_t pmc_get_status(void) +{ + return PMC->PMC_SR; +} + +/** + * \brief Set the wake-up inputs for fast startup mode registers + * (event generation). + * + * \param ul_inputs Wake up inputs to enable. + */ +void pmc_set_fast_startup_input(uint32_t ul_inputs) +{ + ul_inputs &= PMC_FAST_STARTUP_Msk; + PMC->PMC_FSMR |= ul_inputs; +} + +/** + * \brief Clear the wake-up inputs for fast startup mode registers + * (remove event generation). + * + * \param ul_inputs Wake up inputs to disable. + */ +void pmc_clr_fast_startup_input(uint32_t ul_inputs) +{ + ul_inputs &= PMC_FAST_STARTUP_Msk; + PMC->PMC_FSMR &= ~ul_inputs; +} + +#if (SAM4C || SAM4CM || SAM4CP) +/** + * \brief Set the wake-up inputs of coprocessor for fast startup mode registers + * (event generation). + * + * \param ul_inputs Wake up inputs to enable. + */ +void pmc_cp_set_fast_startup_input(uint32_t ul_inputs) +{ + ul_inputs &= PMC_FAST_STARTUP_Msk; + PMC->PMC_CPFSMR |= ul_inputs; +} + +/** + * \brief Clear the wake-up inputs of coprocessor for fast startup mode registers + * (remove event generation). + * + * \param ul_inputs Wake up inputs to disable. + */ +void pmc_cp_clr_fast_startup_input(uint32_t ul_inputs) +{ + ul_inputs &= PMC_FAST_STARTUP_Msk; + PMC->PMC_CPFSMR &= ~ul_inputs; +} +#endif + +/** + * \brief Enable Sleep Mode. + * Enter condition: (WFE or WFI) + (SLEEPDEEP bit = 0) + (LPM bit = 0) + * + * \param uc_type 0 for wait for interrupt, 1 for wait for event. + * \note For SAM4S, SAM4C, SAM4CM, SAM4CP, SAMV71 and SAM4E series, + * since only WFI is effective, uc_type = 1 will be treated as uc_type = 0. + */ +void pmc_enable_sleepmode(uint8_t uc_type) +{ +#if !(SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) + PMC->PMC_FSMR &= (uint32_t) ~ PMC_FSMR_LPM; // Enter Sleep mode +#endif + SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; // Deep sleep + +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) + UNUSED(uc_type); + __DSB(); + __WFI(); +#else + if (uc_type == 0) { + __DSB(); + __WFI(); + } else { + __DSB(); + __WFE(); + } +#endif +} + +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) +static uint32_t ul_flash_in_wait_mode = PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN; +/** + * \brief Set the embedded flash state in wait mode + * + * \param ul_flash_state PMC_WAIT_MODE_FLASH_STANDBY flash in standby mode, + * PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN flash in deep power down mode. + */ +void pmc_set_flash_in_wait_mode(uint32_t ul_flash_state) +{ + ul_flash_in_wait_mode = ul_flash_state; +} + +/** + * \brief Enable Wait Mode. Enter condition: (WAITMODE bit = 1) + FLPM + * + * \note In this function, FLPM will retain, WAITMODE bit will be set, + * Generally, this function will be called by pmc_sleep() in order to + * complete all sequence entering wait mode. + * See \ref pmc_sleep() for entering different sleep modes. + */ +void pmc_enable_waitmode(void) +{ + uint32_t i; + + /* Flash in wait mode */ + i = PMC->PMC_FSMR; + i &= ~PMC_FSMR_FLPM_Msk; +#if !(SAMV71 || SAMV70 || SAME70 || SAMS70) + i |= ul_flash_in_wait_mode; +#else + (void)ul_flash_in_wait_mode; + i |= PMC_WAIT_MODE_FLASH_IDLE; +#endif + PMC->PMC_FSMR = i; + + /* Set the WAITMODE bit = 1 */ + PMC->CKGR_MOR |= CKGR_MOR_KEY_PASSWD | CKGR_MOR_WAITMODE; + + /* Waiting for Master Clock Ready MCKRDY = 1 */ + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); + + /* Waiting for MOSCRCEN bit cleared is strongly recommended + * to ensure that the core will not execute undesired instructions + */ + for (i = 0; i < 500; i++) { + __NOP(); + } + while (!(PMC->CKGR_MOR & CKGR_MOR_MOSCRCEN)); + +#if (!SAMG) + /* Restore Flash in idle mode */ + i = PMC->PMC_FSMR; + i &= ~PMC_FSMR_FLPM_Msk; + i |= PMC_WAIT_MODE_FLASH_IDLE; + PMC->PMC_FSMR = i; +#endif +} +#else +/** + * \brief Enable Wait Mode. Enter condition: WFE + (SLEEPDEEP bit = 0) + + * (LPM bit = 1) + */ +void pmc_enable_waitmode(void) +{ + uint32_t i; + + PMC->PMC_FSMR |= PMC_FSMR_LPM; /* Enter Wait mode */ + SCB->SCR &= (uint32_t) ~ SCB_SCR_SLEEPDEEP_Msk; /* Deep sleep */ + + __DSB(); + __WFE(); + + /* Waiting for MOSCRCEN bit cleared is strongly recommended + * to ensure that the core will not execute undesired instructions + */ + for (i = 0; i < 500; i++) { + __NOP(); + } + while (!(PMC->CKGR_MOR & CKGR_MOR_MOSCRCEN)); + +} +#endif + +#if (!(SAMG51 || SAMG53 || SAMG54)) +/** + * \brief Enable Backup Mode. Enter condition: WFE/(VROFF bit = 1) + + * (SLEEPDEEP bit = 1) + */ +void pmc_enable_backupmode(void) +{ +#if (SAM4C || SAM4CM || SAM4CP) + uint32_t tmp = SUPC->SUPC_MR & ~(SUPC_MR_BUPPOREN | SUPC_MR_KEY_Msk); + SUPC->SUPC_MR = tmp | SUPC_MR_KEY_PASSWD; + while (SUPC->SUPC_SR & SUPC_SR_BUPPORS); +#endif + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) + SUPC->SUPC_CR = SUPC_CR_KEY_PASSWD | SUPC_CR_VROFF_STOP_VREG; + uint32_t ul_dummy = SUPC->SUPC_MR; + UNUSED(ul_dummy); + __DSB(); + __WFE(); + __WFI(); +#else + __DSB(); + __WFE(); +#endif +} +#endif + +/** + * \brief Enable Clock Failure Detector. + */ +void pmc_enable_clock_failure_detector(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR; + + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | CKGR_MOR_CFDEN | ul_reg; +} + +/** + * \brief Disable Clock Failure Detector. + */ +void pmc_disable_clock_failure_detector(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR & (~CKGR_MOR_CFDEN); + + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | ul_reg; +} + +#if (SAM4N || SAM4C || SAM4CM || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Enable Slow Crystal Oscillator Frequency Monitoring. + */ +void pmc_enable_sclk_osc_freq_monitor(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR; + + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | CKGR_MOR_XT32KFME | ul_reg; +} + +/** + * \brief Disable Slow Crystal Oscillator Frequency Monitoring. + */ +void pmc_disable_sclk_osc_freq_monitor(void) +{ + uint32_t ul_reg = PMC->CKGR_MOR & (~CKGR_MOR_XT32KFME); + + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | ul_reg; +} +#endif + +/** + * \brief Enable or disable write protect of PMC registers. + * + * \param ul_enable 1 to enable, 0 to disable. + */ +void pmc_set_writeprotect(uint32_t ul_enable) +{ + if (ul_enable) { + PMC->PMC_WPMR = PMC_WPMR_WPKEY_PASSWD | PMC_WPMR_WPEN; + } else { + PMC->PMC_WPMR = PMC_WPMR_WPKEY_PASSWD; + } +} + +/** + * \brief Return write protect status. + * + * \return Return write protect status. + */ +uint32_t pmc_get_writeprotect_status(void) +{ + return PMC->PMC_WPSR; +} + +#if (SAMG53 || SAMG54 || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Enable the specified peripheral clock. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Success. + * \retval 1 Fail. + */ +uint32_t pmc_enable_sleepwalking(uint32_t ul_id) +{ + uint32_t temp; +#if (SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) + if ((7 <= ul_id) && (ul_id<= 29)) { +#else + if ((8 <= ul_id) && (ul_id<= 29)) { +#endif + temp = pmc_get_active_status0(); + if (temp & (1 << ul_id)) { + return 1; + } + PMC->PMC_SLPWK_ER0 = 1 << ul_id; + temp = pmc_get_active_status0(); + if (temp & (1 << ul_id)) { + pmc_disable_sleepwalking(ul_id); + return 1; + } + return 0; + } +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) + else if ((32 <= ul_id) && (ul_id<= 60)) { + ul_id -= 32; + temp = pmc_get_active_status1(); + if (temp & (1 << ul_id)) { + return 1; + } + PMC->PMC_SLPWK_ER1 = 1 << ul_id; + temp = pmc_get_active_status1(); + if (temp & (1 << ul_id)) { + pmc_disable_sleepwalking(ul_id); + return 1; + } + return 0; + } +#endif + else { + return 1; + } +} + +/** + * \brief Disable the sleepwalking of specified peripheral. + * + * \note The ID must NOT be shifted (i.e., 1 << ID_xxx). + * + * \param ul_id Peripheral ID (ID_xxx). + * + * \retval 0 Success. + * \retval 1 Invalid parameter. + */ +uint32_t pmc_disable_sleepwalking(uint32_t ul_id) +{ +#if (SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) + if ((7 <= ul_id) && (ul_id<= 29)) { +#else + if ((8 <= ul_id) && (ul_id<= 29)) { +#endif + PMC->PMC_SLPWK_DR0 = 1 << ul_id; + return 0; + } +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) + else if ((32 <= ul_id) && (ul_id<= 60)) { + ul_id -= 32; + PMC->PMC_SLPWK_DR1 = 1 << ul_id; + return 0; + } +#endif + else { + return 1; + } +} + +/** + * \brief Return peripheral sleepwalking enable status. + * + * \return the status register value. + */ +uint32_t pmc_get_sleepwalking_status0(void) +{ + return PMC->PMC_SLPWK_SR0; +} + +/** + * \brief Return peripheral active status. + * + * \return the status register value. + */ +uint32_t pmc_get_active_status0(void) +{ + return PMC->PMC_SLPWK_ASR0; +} + +#endif + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Return peripheral sleepwalking enable status. + * + * \return the status register value. + */ +uint32_t pmc_get_sleepwalking_status1(void) +{ + return PMC->PMC_SLPWK_SR1; +} + +/** + * \brief Return peripheral active status. + * + * \return the status register value. + */ +uint32_t pmc_get_active_status1(void) +{ + return PMC->PMC_SLPWK_ASR1; +} +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h new file mode 100644 index 00000000..4fe59030 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h @@ -0,0 +1,546 @@ +/** + * \file + * + * \brief Power Management Controller (PMC) driver for SAM. + * + * Copyright (c) 2011-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef PMC_H_INCLUDED +#define PMC_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** Bit mask for peripheral clocks (PCER0) */ +#define PMC_MASK_STATUS0 (0xFFFFFFFC) + +/** Bit mask for peripheral clocks (PCER1) */ +#define PMC_MASK_STATUS1 (0xFFFFFFFF) + +/** Loop counter timeout value */ +#if !(SAME70) +#define PMC_TIMEOUT (2048) +#else +#define PMC_TIMEOUT (4096) +#endif + +/** Key to unlock CKGR_MOR register */ +#ifndef CKGR_MOR_KEY_PASSWD +#define CKGR_MOR_KEY_PASSWD CKGR_MOR_KEY(0x37U) +#endif + +/** Key used to write SUPC registers */ +#ifndef SUPC_CR_KEY_PASSWD +#define SUPC_CR_KEY_PASSWD SUPC_CR_KEY(0xA5U) +#endif + +#ifndef SUPC_MR_KEY_PASSWD +#define SUPC_MR_KEY_PASSWD SUPC_MR_KEY(0xA5U) +#endif + +/** Mask to access fast startup input */ +#define PMC_FAST_STARTUP_Msk (0x7FFFFu) + +/** PMC_WPMR Write Protect KEY, unlock it */ +#ifndef PMC_WPMR_WPKEY_PASSWD +#define PMC_WPMR_WPKEY_PASSWD PMC_WPMR_WPKEY((uint32_t) 0x504D43) +#endif + +/** Using external oscillator */ +#define PMC_OSC_XTAL 0 + +/** Oscillator in bypass mode */ +#define PMC_OSC_BYPASS 1 + +#define PMC_PCK_0 0 /* PCK0 ID */ +#define PMC_PCK_1 1 /* PCK1 ID */ +#define PMC_PCK_2 2 /* PCK2 ID */ +#if (SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +#define PMC_PCK_3 3 /* PCK3 ID */ +#define PMC_PCK_4 4 /* PCK4 ID */ +#define PMC_PCK_5 5 /* PCK5 ID */ +#define PMC_PCK_6 6 /* PCK6 ID */ +#if SAMG55 +#define PMC_PCK_7 7 /* PCK7 ID */ +#endif +#endif + +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** Flash state in Wait Mode */ +#define PMC_WAIT_MODE_FLASH_STANDBY PMC_FSMR_FLPM_FLASH_STANDBY +#define PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN +#define PMC_WAIT_MODE_FLASH_IDLE PMC_FSMR_FLPM_FLASH_IDLE +#endif + +/** Convert startup time from us to MOSCXTST */ +#define pmc_us_to_moscxtst(startup_us, slowck_freq) \ + ((startup_us * slowck_freq / 8 / 1000000) < 0x100 ? \ + (startup_us * slowck_freq / 8 / 1000000) : 0xFF) + +/** + * \name Master clock (MCK) Source and Prescaler configuration + * + * \note The following functions may be used to select the clock source and + * prescaler for the master clock. + */ +//@{ + +void pmc_mck_set_prescaler(uint32_t ul_pres); +#if SAMV71 || SAMV70 || SAME70 || SAMS70 +void pmc_mck_set_division(uint32_t ul_div); +#endif +void pmc_mck_set_source(uint32_t ul_source); +uint32_t pmc_switch_mck_to_sclk(uint32_t ul_pres); +uint32_t pmc_switch_mck_to_mainck(uint32_t ul_pres); +uint32_t pmc_switch_mck_to_pllack(uint32_t ul_pres); +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP || SAMG55) +uint32_t pmc_switch_mck_to_pllbck(uint32_t ul_pres); +#endif +#if (SAM3XA || SAM3U || SAMV71 || SAMV70 || SAME70 || SAMS70) +uint32_t pmc_switch_mck_to_upllck(uint32_t ul_pres); +#endif +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pmc_set_flash_in_wait_mode(uint32_t ul_flash_state); +#endif + + +//@} + +/** + * \name Slow clock (SLCK) oscillator and configuration + * + */ +//@{ + +void pmc_switch_sclk_to_32kxtal(uint32_t ul_bypass); +uint32_t pmc_osc_is_ready_32kxtal(void); + +//@} + +/** + * \name Main Clock (MAINCK) oscillator and configuration + * + */ +//@{ + +void pmc_switch_mainck_to_fastrc(uint32_t ul_moscrcf); +void pmc_osc_enable_fastrc(uint32_t ul_rc); +void pmc_osc_disable_fastrc(void); +uint32_t pmc_osc_is_ready_fastrc(void); +void pmc_osc_enable_main_xtal(uint32_t ul_xtal_startup_time); +void pmc_osc_bypass_main_xtal(void); +void pmc_osc_disable_main_xtal(void); +uint32_t pmc_osc_is_bypassed_main_xtal(void); +uint32_t pmc_osc_is_ready_main_xtal(void); +void pmc_switch_mainck_to_xtal(uint32_t ul_bypass, + uint32_t ul_xtal_startup_time); +void pmc_osc_disable_xtal(uint32_t ul_bypass); +uint32_t pmc_osc_is_ready_mainck(void); +void pmc_mainck_osc_select(uint32_t ul_xtal_rc); + +//@} + +/** + * \name PLL oscillator and configuration + * + */ +//@{ + +void pmc_enable_pllack(uint32_t mula, uint32_t pllacount, uint32_t diva); +void pmc_disable_pllack(void); +uint32_t pmc_is_locked_pllack(void); + +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP || SAMG55) +void pmc_enable_pllbck(uint32_t mulb, uint32_t pllbcount, uint32_t divb); +void pmc_disable_pllbck(void); +uint32_t pmc_is_locked_pllbck(void); +#endif + +#if (SAM3XA || SAM3U || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pmc_enable_upll_clock(void); +void pmc_disable_upll_clock(void); +uint32_t pmc_is_locked_upll(void); +#endif + +//@} + +/** + * \name Peripherals clock configuration + * + */ +//@{ + +uint32_t pmc_enable_periph_clk(uint32_t ul_id); +uint32_t pmc_disable_periph_clk(uint32_t ul_id); +void pmc_enable_all_periph_clk(void); +void pmc_disable_all_periph_clk(void); +uint32_t pmc_is_periph_clk_enabled(uint32_t ul_id); + +//@} + +/** + * \name Programmable clock Source and Prescaler configuration + * + * The following functions may be used to select the clock source and + * prescaler for the specified programmable clock. + */ +//@{ + +void pmc_pck_set_prescaler(uint32_t ul_id, uint32_t ul_pres); +void pmc_pck_set_source(uint32_t ul_id, uint32_t ul_source); +uint32_t pmc_switch_pck_to_sclk(uint32_t ul_id, uint32_t ul_pres); +uint32_t pmc_switch_pck_to_mainck(uint32_t ul_id, uint32_t ul_pres); +uint32_t pmc_switch_pck_to_pllack(uint32_t ul_id, uint32_t ul_pres); +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +uint32_t pmc_get_slck_config(void); +uint32_t pmc_get_mainck_config(void); +uint32_t pmc_get_pllack_config(void); +uint32_t pmc_get_upllckdiv_config(void); +#endif +#if (SAM4C || SAM4CM || SAM4CP) +void pmc_enable_cpck(void); +void pmc_disable_cpck(void); +bool pmc_is_cpck_enabled(void); +void pmc_enable_cpbmck(void); +void pmc_disable_cpbmck(void); +bool pmc_is_cpbmck_enabled(void); +void pmc_cpck_set_prescaler(uint32_t ul_pres); +void pmc_cpck_set_source(uint32_t ul_source); +#endif +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP || SAMG55) +uint32_t pmc_switch_pck_to_pllbck(uint32_t ul_id, uint32_t ul_pres); +#endif +#if (SAM3XA || SAM3U || SAMV71 || SAMV70 || SAME70 || SAMS70) +uint32_t pmc_switch_pck_to_upllck(uint32_t ul_id, uint32_t ul_pres); +#endif +uint32_t pmc_switch_pck_to_mck(uint32_t ul_id, uint32_t ul_pres); +void pmc_enable_pck(uint32_t ul_id); +void pmc_disable_pck(uint32_t ul_id); +void pmc_enable_all_pck(void); +void pmc_disable_all_pck(void); +uint32_t pmc_is_pck_enabled(uint32_t ul_id); + +//@} + +/** + * \name USB clock configuration + * + */ +//@{ + +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pmc_switch_udpck_to_pllack(uint32_t ul_usbdiv); +#endif +#if (SAM3S || SAM4S || SAMG55) +void pmc_switch_udpck_to_pllbck(uint32_t ul_usbdiv); +#endif +#if (SAM3XA || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pmc_switch_udpck_to_upllck(uint32_t ul_usbdiv); +#endif +#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +void pmc_enable_udpck(void); +void pmc_disable_udpck(void); +#endif +#if SAMG55 +void pmc_switch_uhpck_to_pllack(uint32_t ul_usbdiv); +void pmc_switch_uhpck_to_pllbck(uint32_t ul_usbdiv); +void pmc_enable_uhpck(void); +#endif + +//@} + +/** + * \name Interrupt and status management + * + */ +//@{ + +void pmc_enable_interrupt(uint32_t ul_sources); +void pmc_disable_interrupt(uint32_t ul_sources); +uint32_t pmc_get_interrupt_mask(void); +uint32_t pmc_get_status(void); + +//@} + +/** + * \name Power management + * + * The following functions are used to configure sleep mode and additional + * wake up inputs. + */ +//@{ + +void pmc_set_fast_startup_input(uint32_t ul_inputs); +void pmc_clr_fast_startup_input(uint32_t ul_inputs); +#if (SAM4C || SAM4CM || SAM4CP) +void pmc_cp_set_fast_startup_input(uint32_t ul_inputs); +void pmc_cp_clr_fast_startup_input(uint32_t ul_inputs); +#endif +void pmc_enable_sleepmode(uint8_t uc_type); +void pmc_enable_waitmode(void); +#if (!(SAMG51 || SAMG53 || SAMG54)) +void pmc_enable_backupmode(void); +#endif +//@} + +/** + * \name Failure detector + * + */ +//@{ + +void pmc_enable_clock_failure_detector(void); +void pmc_disable_clock_failure_detector(void); + +//@} + +#if (SAM4N || SAM4C || SAM4CM || SAM4CP || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \name Slow Crystal Oscillator Frequency Monitoring + * + */ +//@{ + +void pmc_enable_sclk_osc_freq_monitor(void); +void pmc_disable_sclk_osc_freq_monitor(void); + +//@} +#endif + +/** + * \name Write protection + * + */ +//@{ + +void pmc_set_writeprotect(uint32_t ul_enable); +uint32_t pmc_get_writeprotect_status(void); + +//@} + +#if (SAMG53 || SAMG54 || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \name Sleepwalking configuration + * + */ +//@{ + +uint32_t pmc_enable_sleepwalking(uint32_t ul_id); +uint32_t pmc_disable_sleepwalking(uint32_t ul_id); +uint32_t pmc_get_sleepwalking_status0(void); +uint32_t pmc_get_active_status0(void); +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +uint32_t pmc_get_sleepwalking_status1(void); +uint32_t pmc_get_active_status1(void); +#endif +//@} +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +//! @} + +/** + * \page sam_pmc_quickstart Quick start guide for the SAM PMC module + * + * This is the quick start guide for the \ref sam_drivers_pmc_group "PMC module", + * with step-by-step instructions on how to configure and use the driver in a + * selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \section pmc_use_cases PMC use cases + * - \ref pmc_basic_use_case Basic use case - Switch Main Clock sources + * - \ref pmc_use_case_2 Advanced use case - Configure Programmable Clocks + * + * \section pmc_basic_use_case Basic use case - Switch Main Clock sources + * In this use case, the PMC module is configured for a variety of system clock + * sources and speeds. A LED is used to visually indicate the current clock + * speed as the source is switched. + * + * \section pmc_basic_use_case_setup Setup + * + * \subsection pmc_basic_use_case_setup_prereq Prerequisites + * -# \ref gpio_group "General Purpose I/O Management (gpio)" + * + * \subsection pmc_basic_use_case_setup_code Code + * The following function needs to be added to the user application, to flash a + * board LED a variable number of times at a rate given in CPU ticks. + * + * \code + #define FLASH_TICK_COUNT 0x00012345 + + void flash_led(uint32_t tick_count, uint8_t flash_count) + { + SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; + SysTick->LOAD = tick_count; + + while (flash_count--) + { + gpio_toggle_pin(LED0_GPIO); + while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); + gpio_toggle_pin(LED0_GPIO); + while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); + } + } +\endcode + * + * \section pmc_basic_use_case_usage Use case + * + * \subsection pmc_basic_use_case_usage_code Example code + * Add to application C-file: + * \code + for (;;) + { + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + flash_led(FLASH_TICK_COUNT, 5); + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + flash_led(FLASH_TICK_COUNT, 5); + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + flash_led(FLASH_TICK_COUNT, 5); + pmc_switch_mainck_to_xtal(0); + flash_led(FLASH_TICK_COUNT, 5); + } +\endcode + * + * \subsection pmc_basic_use_case_usage_flow Workflow + * -# Wrap the code in an infinite loop: + * \code + for (;;) +\endcode + * -# Switch the Master CPU frequency to the internal 12MHz RC oscillator, flash + * a LED on the board several times: + * \code + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_12_MHz); + flash_led(FLASH_TICK_COUNT, 5); +\endcode + * -# Switch the Master CPU frequency to the internal 8MHz RC oscillator, flash + * a LED on the board several times: + * \code + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_8_MHz); + flash_led(FLASH_TICK_COUNT, 5); +\endcode + * -# Switch the Master CPU frequency to the internal 4MHz RC oscillator, flash + * a LED on the board several times: + * \code + pmc_switch_mainck_to_fastrc(CKGR_MOR_MOSCRCF_4_MHz); + flash_led(FLASH_TICK_COUNT, 5); +\endcode + * -# Switch the Master CPU frequency to the external crystal oscillator, flash + * a LED on the board several times: + * \code + pmc_switch_mainck_to_xtal(0, BOARD_OSC_STARTUP_US); + flash_led(FLASH_TICK_COUNT, 5); +\endcode + * + * \section pmc_use_case_2 Use case #2 - Configure Programmable Clocks + * In this use case, the PMC module is configured to start the Slow Clock from + * an attached 32KHz crystal, and start one of the Programmable Clock modules + * sourced from the Slow Clock divided down with a prescale factor of 64. + * + * \section pmc_use_case_2_setup Setup + * + * \subsection pmc_use_case_2_setup_prereq Prerequisites + * -# \ref pio_group "Parallel Input/Output Controller (pio)" + * + * \subsection pmc_use_case_2_setup_code Code + * The following code must be added to the user application: + * \code + pio_set_peripheral(PIOA, PIO_PERIPH_B, PIO_PA17); +\endcode + * + * \subsection pmc_use_case_2_setup_code_workflow Workflow + * -# Configure the PCK1 pin to output on a specific port pin (in this case, + * PIOA pin 17) of the microcontroller. + * \code + pio_set_peripheral(PIOA, PIO_PERIPH_B, PIO_PA17); +\endcode + * \note The peripheral selection and pin will vary according to your selected + * SAM device model. Refer to the "Peripheral Signal Multiplexing on I/O + * Lines" of your device's datasheet. + * + * \section pmc_use_case_2_usage Use case + * The generated PCK1 clock output can be viewed on an oscilloscope attached to + * the correct pin of the microcontroller. + * + * \subsection pmc_use_case_2_usage_code Example code + * Add to application C-file: + * \code + pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); + pmc_switch_pck_to_sclk(PMC_PCK_1, PMC_PCK_PRES_CLK_64); + pmc_enable_pck(PMC_PCK_1); + + for (;;) + { + // Do Nothing + } +\endcode + * + * \subsection pmc_use_case_2_usage_flow Workflow + * -# Switch the Slow Clock source input to an external 32KHz crystal: + * \code + pmc_switch_sclk_to_32kxtal(PMC_OSC_XTAL); +\endcode + * -# Switch the Programmable Clock module PCK1 source clock to the Slow Clock, + * with a prescaler of 64: + * \code + pmc_switch_pck_to_sclk(PMC_PCK_1, PMC_PCK_PRES_CLK_64); +\endcode + * -# Enable Programmable Clock module PCK1: + * \code + pmc_enable_pck(PMC_PCK_1); +\endcode + * -# Enter an infinite loop: + * \code + for (;;) + { + // Do Nothing + } +\endcode + */ + +#endif /* PMC_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c new file mode 100644 index 00000000..33142b62 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c @@ -0,0 +1,381 @@ +/** + * \file + * + * \brief Sleep mode access + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include +#include "sleep.h" + +/* SAM3,SAM4,SAMG,SAMV,SAMS and SAME series */ +#if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N || SAM4C || \ + SAM4CM || SAMG || SAM4CP || SAMV71 || SAMV70 || SAMS70 || SAME70) +# include "pmc.h" +# include "board.h" + +/* Checking board configuration of main clock xtal statup time */ +#if !defined(BOARD_OSC_STARTUP_US) +# warning The board main clock xtal statup time has not been defined. Using default settings. +# define BOARD_OSC_STARTUP_US (15625UL) +#endif + +#if !defined(EFC0) +# define EFC0 EFC +#endif + +/** + * Save clock settings and shutdown PLLs + */ +__always_inline static void pmc_save_clock_settings( + uint32_t *p_osc_setting, + uint32_t *p_pll0_setting, + uint32_t *p_pll1_setting, + uint32_t *p_mck_setting, + uint32_t *p_fmr_setting, +#if defined(EFC1) + uint32_t *p_fmr_setting1, +#endif + const bool disable_xtal) +{ + uint32_t mor = PMC->CKGR_MOR; + uint32_t mckr = PMC->PMC_MCKR; + uint32_t fmr = EFC0->EEFC_FMR; +# if defined(EFC1) + uint32_t fmr1 = EFC1->EEFC_FMR; +# endif + + if (p_osc_setting) { + *p_osc_setting = mor; + } + if (p_pll0_setting) { + *p_pll0_setting = PMC->CKGR_PLLAR; + } + if (p_pll1_setting) { +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP) + *p_pll1_setting = PMC->CKGR_PLLBR; +#elif (SAM3U || SAM3XA) + *p_pll1_setting = PMC->CKGR_UCKR; +#else + *p_pll1_setting = 0; +#endif + } + if (p_mck_setting) { + *p_mck_setting = mckr; + } + if (p_fmr_setting) { + *p_fmr_setting = fmr; + } +#if defined(EFC1) + if (p_fmr_setting1) { + *p_fmr_setting1 = fmr1; + } +#endif + + /* Enable FAST RC */ + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | mor | CKGR_MOR_MOSCRCEN; + /* if MCK source is PLL, switch to mainck */ + if ((mckr & PMC_MCKR_CSS_Msk) > PMC_MCKR_CSS_MAIN_CLK) { + /* MCK -> MAINCK */ + mckr = (mckr & (~PMC_MCKR_CSS_Msk)) | PMC_MCKR_CSS_MAIN_CLK; + PMC->PMC_MCKR = mckr; + while(!(PMC->PMC_SR & PMC_SR_MCKRDY)); + } + /* MCK prescale -> 1 */ + if (mckr & PMC_MCKR_PRES_Msk) { + mckr = (mckr & (~PMC_MCKR_PRES_Msk)); + PMC->PMC_MCKR = mckr; + while(!(PMC->PMC_SR & PMC_SR_MCKRDY)); + } + /* Disable PLLs */ + pmc_disable_pllack(); +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP) + pmc_disable_pllbck(); +#elif (SAM3U || SAM3XA) + pmc_disable_upll_clock(); +#endif + + /* Prepare for entering WAIT mode */ + /* Wait fast RC ready */ + while (!(PMC->PMC_SR & PMC_SR_MOSCRCS)); + + /* Switch mainck to FAST RC */ +#if SAMG + /** + * For the sleepwalking feature, we need an accurate RC clock. Only 24M and + * 16M are trimmed in production. Here we select the 24M. + * And so wait state need to be 1. + */ + EFC0->EEFC_FMR = (fmr & (~EEFC_FMR_FWS_Msk)) | EEFC_FMR_FWS(1); + + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCSEL) | CKGR_MOR_MOSCRCF_24_MHz | + CKGR_MOR_KEY_PASSWD; +#else + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCSEL) | + CKGR_MOR_KEY_PASSWD; +#endif + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)); + +#if (!SAMG) + /* FWS update */ + EFC0->EEFC_FMR = fmr & (~EEFC_FMR_FWS_Msk); +#if defined(EFC1) + EFC1->EEFC_FMR = fmr1 & (~EEFC_FMR_FWS_Msk); +#endif +#endif + + /* Disable XTALs */ + if (disable_xtal) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + CKGR_MOR_KEY_PASSWD; + } +} + +/** + * Restore clock settings + */ +__always_inline static void pmc_restore_clock_setting( + const uint32_t osc_setting, + const uint32_t pll0_setting, + const uint32_t pll1_setting, + const uint32_t mck_setting, + const uint32_t fmr_setting +#if defined(EFC1) + , const uint32_t fmr_setting1 +#endif + ) +{ + uint32_t mckr; + uint32_t pll_sr = 0; + + /* Switch mainck to external xtal */ + if (CKGR_MOR_MOSCXTBY == (osc_setting & CKGR_MOR_MOSCXTBY)) { + /* Bypass mode */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTEN) | + CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCXTBY | + CKGR_MOR_MOSCSEL; + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCEN & + ~CKGR_MOR_MOSCRCF_Msk) + | CKGR_MOR_KEY_PASSWD; + } else if (CKGR_MOR_MOSCXTEN == (osc_setting & CKGR_MOR_MOSCXTEN)) { + /* Enable External XTAL */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCXTEN)) { + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY) | + CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCXTEN; + /* Wait the Xtal to stabilize */ + while (!(PMC->PMC_SR & PMC_SR_MOSCXTS)); + } + /* Select External XTAL */ + if (!(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL)) { + PMC->CKGR_MOR |= CKGR_MOR_KEY_PASSWD | CKGR_MOR_MOSCSEL; + while (!(PMC->PMC_SR & PMC_SR_MOSCSELS)); + } + /* Disable Fast RC */ + PMC->CKGR_MOR = (PMC->CKGR_MOR & ~CKGR_MOR_MOSCRCEN & + ~CKGR_MOR_MOSCRCF_Msk) + | CKGR_MOR_KEY_PASSWD; + } + + if (pll0_setting & CKGR_PLLAR_MULA_Msk) { +#if (SAM4C || SAM4CM || SAMG || SAM4CP) + PMC->CKGR_PLLAR = pll0_setting; +#else + PMC->CKGR_PLLAR = CKGR_PLLAR_ONE | pll0_setting; +#endif + pll_sr |= PMC_SR_LOCKA; + } +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP) + if (pll1_setting & CKGR_PLLBR_MULB_Msk) { + PMC->CKGR_PLLBR = pll1_setting; + pll_sr |= PMC_SR_LOCKB; + } +#elif (SAM3U || SAM3XA) + if (pll1_setting & CKGR_UCKR_UPLLEN) { + PMC->CKGR_UCKR = pll1_setting; + pll_sr |= PMC_SR_LOCKU; + } +#else + UNUSED(pll1_setting); +#endif + /* Wait MCK source ready */ + switch(mck_setting & PMC_MCKR_CSS_Msk) { + case PMC_MCKR_CSS_PLLA_CLK: + while (!(PMC->PMC_SR & PMC_SR_LOCKA)); + break; +#if (SAM3S || SAM4S || SAM4C || SAM4CM || SAM4CP) + case PMC_MCKR_CSS_PLLB_CLK: + while (!(PMC->PMC_SR & PMC_SR_LOCKB)); + break; +#elif (SAM3U || SAM3XA) + case PMC_MCKR_CSS_UPLL_CLK: + while (!(PMC->PMC_SR & PMC_SR_LOCKU)); + break; +#endif + } + + /* Switch to faster clock */ + mckr = PMC->PMC_MCKR; + + /* Set PRES */ + PMC->PMC_MCKR = (mckr & ~PMC_MCKR_PRES_Msk) + | (mck_setting & PMC_MCKR_PRES_Msk); + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); + + /* Restore flash wait states */ + EFC0->EEFC_FMR = fmr_setting; +#if defined(EFC1) + EFC1->EEFC_FMR = fmr_setting1; +#endif + + /* Set CSS and others */ + PMC->PMC_MCKR = mck_setting; + while (!(PMC->PMC_SR & PMC_SR_MCKRDY)); + + /* Waiting all restored PLLs ready */ + while (!(PMC->PMC_SR & pll_sr)); +} + +/** If clocks are switched for some sleep mode */ +static volatile bool b_is_sleep_clock_used = false; +/** Callback invoked once when clocks are restored */ +static pmc_callback_wakeup_clocks_restored_t callback_clocks_restored = NULL; + +void pmc_sleep(int sleep_mode) +{ + switch (sleep_mode) { + case SAM_PM_SMODE_SLEEP_WFI: + case SAM_PM_SMODE_SLEEP_WFE: +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG || SAMV71 || SAMV70 || SAMS70 || SAME70) + SCB->SCR &= (uint32_t)~SCR_SLEEPDEEP; + cpu_irq_enable(); + __DSB(); + __WFI(); + break; +#else + PMC->PMC_FSMR &= (uint32_t)~PMC_FSMR_LPM; + SCB->SCR &= (uint32_t)~SCR_SLEEPDEEP; + cpu_irq_enable(); + if (sleep_mode == SAM_PM_SMODE_SLEEP_WFI) { + __DSB(); + __WFI(); + } else { + __DSB(); + __WFE(); + } + break; +#endif + + case SAM_PM_SMODE_WAIT_FAST: + case SAM_PM_SMODE_WAIT: { + uint32_t mor, pllr0, pllr1, mckr; + uint32_t fmr; +#if defined(EFC1) + uint32_t fmr1; +#endif +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG || SAMV71 || SAMV70 || SAMS70 || SAME70) + (sleep_mode == SAM_PM_SMODE_WAIT_FAST) ? + pmc_set_flash_in_wait_mode(PMC_FSMR_FLPM_FLASH_STANDBY) : + pmc_set_flash_in_wait_mode(PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN); +#endif + cpu_irq_disable(); + b_is_sleep_clock_used = true; + +#if (SAM4C || SAM4CM || SAM4CP) + /* Backup the sub-system 1 status and stop sub-system 1 */ + uint32_t cpclk_backup = PMC->PMC_SCSR & + (PMC_SCSR_CPCK | PMC_SCSR_CPBMCK); + PMC->PMC_SCDR = cpclk_backup | PMC_SCDR_CPKEY_PASSWD; +#endif + pmc_save_clock_settings(&mor, &pllr0, &pllr1, &mckr, &fmr, +#if defined(EFC1) + &fmr1, +#endif + (sleep_mode == SAM_PM_SMODE_WAIT)); + + /* Enter wait mode */ + cpu_irq_enable(); + + pmc_enable_waitmode(); + + cpu_irq_disable(); + pmc_restore_clock_setting(mor, pllr0, pllr1, mckr, fmr +#if defined(EFC1) + , fmr1 +#endif + ); + +#if (SAM4C || SAM4CM || SAM4CP) + /* Restore the sub-system 1 */ + PMC->PMC_SCER = cpclk_backup | PMC_SCER_CPKEY_PASSWD; +#endif + b_is_sleep_clock_used = false; + if (callback_clocks_restored) { + callback_clocks_restored(); + callback_clocks_restored = NULL; + } + cpu_irq_enable(); + + break; + } +#if (!(SAMG51 || SAMG53 || SAMG54)) + case SAM_PM_SMODE_BACKUP: + SCB->SCR |= SCR_SLEEPDEEP; +#if (SAM4S || SAM4E || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG55 || SAMV71 || SAMV70 || SAMS70 || SAME70) + SUPC->SUPC_CR = SUPC_CR_KEY_PASSWD | SUPC_CR_VROFF_STOP_VREG; + cpu_irq_enable(); + __WFI() ; +#else + cpu_irq_enable(); + __WFE() ; +#endif + break; +#endif + } +} + +bool pmc_is_wakeup_clocks_restored(void) +{ + return !b_is_sleep_clock_used; +} + +void pmc_wait_wakeup_clocks_restore( + pmc_callback_wakeup_clocks_restored_t callback) +{ + if (b_is_sleep_clock_used) { + cpu_irq_disable(); + callback_clocks_restored = callback; + } else if (callback) { + callback(); + } +} + +#endif diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h new file mode 100644 index 00000000..1a61237a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h @@ -0,0 +1,117 @@ +/** + * \file + * + * \brief Sleep mode access + * + * Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef SLEEP_H +#define SLEEP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** + * \defgroup sleep_group Power Manager (PM) + * + * This is a stub on the SAM Power Manager Control (PMC) for the sleepmgr + * service. + * + * \note To minimize the code overhead, these functions do not feature + * interrupt-protected access since they are likely to be called inside + * interrupt handlers or in applications where such protection is not + * necessary. If such protection is needed, it must be ensured by the calling + * code. + * + * @{ + */ + +#if defined(__DOXYGEN__) +/** + * \brief Sets the MCU in the specified sleep mode + * \param sleep_mode Sleep mode to set. + */ +#endif +/* SAM3,SAM4,SAMG,SAMV,SAME and SAMS series */ +#if (SAM3S || SAM3N || SAM3XA || SAM3U || SAM4S || SAM4E || SAM4N || SAM4C || \ + SAM4CM || SAM4CP || SAMG || SAMV71 || SAME70 || SAMS70) +# define SAM_PM_SMODE_ACTIVE 0 /**< Active */ +# define SAM_PM_SMODE_SLEEP_WFE 1 /**< Wait for Events */ +# define SAM_PM_SMODE_SLEEP_WFI 2 /**< Wait for Interrupts */ +# define SAM_PM_SMODE_WAIT_FAST 3 /**< Wait Mode, startup fast (in 3ms) */ +# define SAM_PM_SMODE_WAIT 4 /**< Wait Mode */ +#if (!(SAMG51 || SAMG53 || SAMG54)) +# define SAM_PM_SMODE_BACKUP 5 /**< Backup Mode */ +#endif + +/** (SCR) Sleep deep bit */ +#define SCR_SLEEPDEEP (0x1 << 2) + +/** + * Clocks restored callback function type. + * Registered by routine pmc_wait_wakeup_clocks_restore() + * Callback called when all clocks are restored. + */ +typedef void (*pmc_callback_wakeup_clocks_restored_t) (void); + +/** + * Enter sleep mode + * \param sleep_mode Sleep mode to enter + */ +void pmc_sleep(int sleep_mode); + +/** + * Check if clocks are restored after wakeup + * (For WAIT mode. In WAIT mode, clocks are switched to FASTRC. + * After wakeup clocks should be restored, before that some of the + * ISR should not be served, otherwise there may be timing or clock issue.) + */ +bool pmc_is_wakeup_clocks_restored(void); + +/** + * \return true if start waiting + */ +void pmc_wait_wakeup_clocks_restore( + pmc_callback_wakeup_clocks_restored_t callback); + +#endif + +//! @} + +#ifdef __cplusplus +} +#endif + +#endif /* SLEEP_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c new file mode 100644 index 00000000..888f2f88 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c @@ -0,0 +1,552 @@ +/** + * \file + * + * \brief Universal Asynchronous Receiver Transceiver (UART) driver for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "uart.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_uart_group Universal Asynchronous Receiver Transceiver (UART) + * + * The Universal Asynchronous Receiver Transmitter features a two-pin UART that + * can be used for communication and trace purposes and offers an ideal medium + * for in-situ programming solutions. Moreover, the association with two + * peripheral DMA controller (PDC) channels permits packet handling for these + * tasks with processor time reduced to a minimum. + * + * \par Usage + * + * -# Enable the UART peripheral clock in the PMC. + * -# Enable the required UART PIOs (see pio.h). + * -# Configure the UART by calling uart_init. + * -# Send data through the UART using the uart_write. + * -# Receive data from the UART using the uart_read; the availability of data + * can be polled with uart_is_rx_ready. + * -# Disable the transmitter and/or the receiver of the UART with + * uart_disable_tx and uart_disable_rx. + * + * @{ + */ + +/** + * \brief Configure UART with the specified parameters. + * + * \note The PMC and PIOs must be configured first. + * + * \param p_uart Pointer to a UART instance. + * \param p_uart_opt Pointer to sam_uart_opt_t instance. + * + * \retval 0 Success. + * \retval 1 Bad baud rate generator value. + */ +uint32_t uart_init(Uart *p_uart, const sam_uart_opt_t *p_uart_opt) +{ + uint32_t cd = 0; + + /* Reset and disable receiver & transmitter */ + p_uart->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX + | UART_CR_RXDIS | UART_CR_TXDIS; + + /* Check and configure baudrate */ + /* Asynchronous, no oversampling */ + cd = (p_uart_opt->ul_mck / p_uart_opt->ul_baudrate) / UART_MCK_DIV; + if (cd < UART_MCK_DIV_MIN_FACTOR || cd > UART_MCK_DIV_MAX_FACTOR) + return 1; + + p_uart->UART_BRGR = cd; + /* Configure mode */ + p_uart->UART_MR = p_uart_opt->ul_mode; + +#if (!SAMV71 && !SAMV70 && !SAME70 && !SAMS70) + /* Disable PDC channel */ + p_uart->UART_PTCR = UART_PTCR_RXTDIS | UART_PTCR_TXTDIS; +#endif + + /* Enable receiver and transmitter */ + p_uart->UART_CR = UART_CR_RXEN | UART_CR_TXEN; + + return 0; +} + +/** + * \brief Enable UART transmitter. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_enable_tx(Uart *p_uart) +{ + /* Enable transmitter */ + p_uart->UART_CR = UART_CR_TXEN; +} + +/** + * \brief Disable UART transmitter. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_disable_tx(Uart *p_uart) +{ + /* Disable transmitter */ + p_uart->UART_CR = UART_CR_TXDIS; +} + +/** + * \brief Reset UART transmitter. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_reset_tx(Uart *p_uart) +{ + /* Reset transmitter */ + p_uart->UART_CR = UART_CR_RSTTX | UART_CR_TXDIS; +} + +/** + * \brief Enable UART receiver. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_enable_rx(Uart *p_uart) +{ + /* Enable receiver */ + p_uart->UART_CR = UART_CR_RXEN; +} + +/** + * \brief Disable UART receiver. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_disable_rx(Uart *p_uart) +{ + /* Disable receiver */ + p_uart->UART_CR = UART_CR_RXDIS; +} + +/** + * \brief Reset UART receiver. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_reset_rx(Uart *p_uart) +{ + /* Reset receiver */ + p_uart->UART_CR = UART_CR_RSTRX | UART_CR_RXDIS; +} + +/** + * \brief Enable UART receiver and transmitter. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_enable(Uart *p_uart) +{ + /* Enable receiver and transmitter */ + p_uart->UART_CR = UART_CR_RXEN | UART_CR_TXEN; +} + +/** + * \brief Disable UART receiver and transmitter. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_disable(Uart *p_uart) +{ + /* Disable receiver and transmitter */ + p_uart->UART_CR = UART_CR_RXDIS | UART_CR_TXDIS; +} + +/** + * \brief Reset UART receiver and transmitter. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_reset(Uart *p_uart) +{ + /* Reset and disable receiver & transmitter */ + p_uart->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX + | UART_CR_RXDIS | UART_CR_TXDIS; +} + +/** \brief Enable UART interrupts. + * + * \param p_uart Pointer to a UART instance. + * \param ul_sources Interrupts to be enabled. + */ +void uart_enable_interrupt(Uart *p_uart, uint32_t ul_sources) +{ + p_uart->UART_IER = ul_sources; +} + +/** \brief Disable UART interrupts. + * + * \param p_uart Pointer to a UART instance. + * \param ul_sources Interrupts to be disabled. + */ +void uart_disable_interrupt(Uart *p_uart, uint32_t ul_sources) +{ + p_uart->UART_IDR = ul_sources; +} + +/** \brief Read UART interrupt mask. + * + * \param p_uart Pointer to a UART instance. + * + * \return The interrupt mask value. + */ +uint32_t uart_get_interrupt_mask(Uart *p_uart) +{ + return p_uart->UART_IMR; +} + +/** + * \brief Get current status. + * + * \param p_uart Pointer to a UART instance. + * + * \return The current UART status. + */ +uint32_t uart_get_status(Uart *p_uart) +{ + return p_uart->UART_SR; +} + +/** + * \brief Reset status bits. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_reset_status(Uart *p_uart) +{ + p_uart->UART_CR = UART_CR_RSTSTA; +} + +/** + * \brief Check if Transmit is Ready. + * Check if data has been loaded in UART_THR and is waiting to be loaded in the + * Transmit Shift Register (TSR). + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 Data has been transmitted. + * \retval 0 Transmit is not ready, data pending. + */ +uint32_t uart_is_tx_ready(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_TXRDY) > 0; +} + +/** + * \brief Check if Transmit Hold Register is empty. + * Check if the last data written in UART_THR has been loaded in TSR and the + * last data loaded in TSR has been transmitted. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 Transmitter is empty. + * \retval 0 Transmitter is not empty. + */ +uint32_t uart_is_tx_empty(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_TXEMPTY) > 0; +} + +/** + * \brief Check if Received data is ready. + * Check if data has been received and loaded in UART_RHR. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 One data has been received. + * \retval 0 No data has been received. + */ +uint32_t uart_is_rx_ready(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_RXRDY) > 0; +} + +/** + * \brief Check if both transmit buffers are sent out. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 Transmit buffer is empty. + * \retval 0 Transmit buffer is not empty. + */ +uint32_t uart_is_tx_buf_empty(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_TXEMPTY) > 0; +} + +/** + * \brief Set UART clock divisor value + * + * \param p_uart Pointer to a UART instance. + * \param us_divisor Value to be set. + * + */ +void uart_set_clock_divisor(Uart *p_uart, uint16_t us_divisor) +{ + p_uart->UART_BRGR = us_divisor; +} + +/** + * \brief Write to UART Transmit Holding Register + * Before writing user should check if tx is ready (or empty). + * + * \param p_uart Pointer to a UART instance. + * \param data Data to be sent. + * + * \retval 0 Success. + * \retval 1 I/O Failure, UART is not ready. + */ +uint32_t uart_write(Uart *p_uart, const uint8_t uc_data) +{ + /* Check if the transmitter is ready */ + if (!(p_uart->UART_SR & UART_SR_TXRDY)) + return 1; + + /* Send character */ + p_uart->UART_THR = uc_data; + return 0; +} + +/** + * \brief Read from UART Receive Holding Register. + * Before reading user should check if rx is ready. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 0 Success. + * \retval 1 I/O Failure, UART is not ready. + */ +uint32_t uart_read(Uart *p_uart, uint8_t *puc_data) +{ + /* Check if the receiver is ready */ + if ((p_uart->UART_SR & UART_SR_RXRDY) == 0) + return 1; + + /* Read character */ + *puc_data = (uint8_t) p_uart->UART_RHR; + return 0; +} + +#if (!SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +/** + * \brief Check if one receive buffer is filled. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 Receive is completed. + * \retval 0 Receive is still pending. + */ +uint32_t uart_is_rx_buf_end(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_ENDRX) > 0; +} + +/** + * \brief Check if one transmit buffer is sent out. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 Transmit is completed. + * \retval 0 Transmit is still pending. + */ +uint32_t uart_is_tx_buf_end(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_ENDTX) > 0; +} + +/** + * \brief Check if both receive buffers are full. + * + * \param p_uart Pointer to a UART instance. + * + * \retval 1 Receive buffers are full. + * \retval 0 Receive buffers are not full. + */ +uint32_t uart_is_rx_buf_full(Uart *p_uart) +{ + return (p_uart->UART_SR & UART_SR_RXBUFF) > 0; +} + +/** + * \brief Get UART PDC base address. + * + * \param p_uart Pointer to a UART instance. + * + * \return UART PDC registers base for PDC driver to access. + */ +Pdc *uart_get_pdc_base(Uart *p_uart) +{ + Pdc *p_pdc_base; + +#if (SAM3S || SAM3N || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM) + if (p_uart == UART0) + p_pdc_base = PDC_UART0; +#elif (SAM3XA || SAM3U) + if (p_uart == UART) + p_pdc_base = PDC_UART; +#else +#error "Unsupported device" +#endif + +#if (SAM3S || SAM4S || SAM4E || SAM4N || SAM4C || SAMG || SAM4CP || SAM4CM) + if (p_uart == UART1) + p_pdc_base = PDC_UART1; +#endif + +#if (SAM4N) + if (p_uart == UART2) + p_pdc_base = PDC_UART2; +#endif + + return p_pdc_base; +} +#endif + +#if (SAM4C || SAM4CP || SAM4CM) +/** + * \brief Enable UART optical interface. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_enable_optical_interface(Uart *p_uart) +{ + Assert(p_uart == UART1); + p_uart->UART_MR |= UART_MR_OPT_EN; +} + +/** + * \brief Disable UART optical interface. + * + * \param p_uart Pointer to a UART instance. + */ +void uart_disable_optical_interface(Uart *p_uart) +{ + Assert(p_uart == UART1); + p_uart->UART_MR &= ~UART_MR_OPT_EN; +} + +/** + * \brief Enable UART optical interface. + * + * \param p_uart Pointer to a UART instance. + * \param cfg Pointer to a UART optical interface configuration. + */ +void uart_config_optical_interface(Uart *p_uart, + struct uart_config_optical *cfg) +{ + Assert(p_uart == UART1); + uint32_t reg = p_uart->UART_MR; + + reg &= ~(UART_MR_OPT_RXINV | UART_MR_OPT_MDINV | UART_MR_FILTER + | UART_MR_OPT_CLKDIV_Msk | UART_MR_OPT_DUTY_Msk + | UART_MR_OPT_CMPTH_Msk); + reg |= (cfg->rx_inverted ? UART_MR_OPT_RXINV : 0) + | (cfg->tx_inverted ? UART_MR_OPT_MDINV : 0) + | (cfg->rx_filter ? UART_MR_FILTER : 0) + | UART_MR_OPT_CLKDIV(cfg->clk_div) + | cfg->duty | cfg->threshold; + + p_uart->UART_MR = reg; +} +#endif + +#if (SAMG53 || SAMG54 || SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Set sleepwalking match mode. + * + * \param p_uart Pointer to a UART instance. + * \param ul_low_value First comparison value for received character. + * \param ul_high_value Second comparison value for received character. + * \param cmpmode ture for start condition, false for flag only. + * \param cmppar ture for parity check, false for no. + */ +void uart_set_sleepwalking(Uart *p_uart, uint8_t ul_low_value, + bool cmpmode, bool cmppar, uint8_t ul_high_value) +{ + Assert(ul_low_value <= ul_high_value); + + uint32_t temp = 0; + + if (cmpmode) { + temp |= UART_CMPR_CMPMODE_START_CONDITION; + } + + if (cmppar) { + temp |= UART_CMPR_CMPPAR; + } + + temp |= UART_CMPR_VAL1(ul_low_value); + + temp |= UART_CMPR_VAL2(ul_high_value); + + p_uart->UART_CMPR= temp; +} + +/** + * \brief Enables/Disables write protection mode. + * + * \param p_uart Pointer to a UART instance. + * \param flag ture for enable, false for disable. + */ +void uart_set_write_protection(Uart *p_uart, bool flag) +{ + if (flag) { + p_uart->UART_WPMR = UART_WPMR_WPKEY_PASSWD | UART_WPMR_WPEN; + } else { + p_uart->UART_WPMR = UART_WPMR_WPKEY_PASSWD; + } +} +#endif + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h new file mode 100644 index 00000000..ebac3cf0 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h @@ -0,0 +1,150 @@ +/** + * \file + * + * \brief Universal Asynchronous Receiver Transceiver (UART) driver for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef UART_H_INCLUDED +#define UART_H_INCLUDED + +#include "compiler.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/* UART internal div factor for sampling */ +#define UART_MCK_DIV 16 +/* Div factor to get the maximum baud rate */ +#define UART_MCK_DIV_MIN_FACTOR 1 +/* Div factor to get the minimum baud rate */ +#define UART_MCK_DIV_MAX_FACTOR 65535 + +/*! \brief Option list for UART peripheral initialization */ +typedef struct sam_uart_opt { + /** MCK for UART */ + uint32_t ul_mck; + /** Expected baud rate */ + uint32_t ul_baudrate; + /** Initialize value for UART mode register */ + uint32_t ul_mode; +} sam_uart_opt_t; + +uint32_t uart_init(Uart *p_uart, const sam_uart_opt_t *p_uart_opt); +void uart_enable_tx(Uart *p_uart); +void uart_disable_tx(Uart *p_uart); +void uart_reset_tx(Uart *p_uart); +void uart_enable_rx(Uart *p_uart); +void uart_disable_rx(Uart *p_uart); +void uart_reset_rx(Uart *p_uart); +void uart_enable(Uart *p_uart); +void uart_disable(Uart *p_uart); +void uart_reset(Uart *p_uart); +void uart_enable_interrupt(Uart *p_uart, uint32_t ul_sources); +void uart_disable_interrupt(Uart *p_uart, uint32_t ul_sources); +uint32_t uart_get_interrupt_mask(Uart *p_uart); +uint32_t uart_get_status(Uart *p_uart); +void uart_reset_status(Uart *p_uart); +uint32_t uart_is_tx_ready(Uart *p_uart); +uint32_t uart_is_tx_empty(Uart *p_uart); +uint32_t uart_is_rx_ready(Uart *p_uart); +uint32_t uart_is_tx_buf_empty(Uart *p_uart); +void uart_set_clock_divisor(Uart *p_uart, uint16_t us_divisor); +uint32_t uart_write(Uart *p_uart, const uint8_t uc_data); +uint32_t uart_read(Uart *p_uart, uint8_t *puc_data); +#if (!SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +uint32_t uart_is_rx_buf_end(Uart *p_uart); +uint32_t uart_is_tx_buf_end(Uart *p_uart); +uint32_t uart_is_rx_buf_full(Uart *p_uart); +Pdc *uart_get_pdc_base(Uart *p_uart); +#endif +#if (SAMG53 || SAMG54 || SAMV71 || SAMV70 || SAME70 || SAMS70) +void uart_set_sleepwalking(Uart *p_uart, uint8_t ul_low_value, + bool cmpmode, bool cmppar, uint8_t ul_high_value); +void uart_set_write_protection(Uart *p_uart, bool flag); +#endif + +#if (SAM4C || SAM4CP || SAM4CM) +enum uart_optical_duty_cycle { + UART_MOD_CLK_DUTY_50_00 = UART_MR_OPT_DUTY_DUTY_50, + UART_MOD_CLK_DUTY_43_75 = UART_MR_OPT_DUTY_DUTY_43P75, + UART_MOD_CLK_DUTY_37_50 = UART_MR_OPT_DUTY_DUTY_37P5, + UART_MOD_CLK_DUTY_31_25 = UART_MR_OPT_DUTY_DUTY_31P25, + UART_MOD_CLK_DUTY_25_00 = UART_MR_OPT_DUTY_DUTY_25, + UART_MOD_CLK_DUTY_18_75 = UART_MR_OPT_DUTY_DUTY_18P75, + UART_MOD_CLK_DUTY_12_50 = UART_MR_OPT_DUTY_DUTY_12P5, + UART_MOD_CLK_DUTY_06_25 = UART_MR_OPT_DUTY_DUTY_6P25, +}; + +enum uart_optical_cmp_threshold { + UART_RX_CMP_THRESHOLD_VDDIO_DIV_10_0 = UART_MR_OPT_CMPTH_VDDIO_DIV10, + UART_RX_CMP_THRESHOLD_VDDIO_DIV_5_0 = UART_MR_OPT_CMPTH_VDDIO_DIV5, + UART_RX_CMP_THRESHOLD_VDDIO_DIV_3_3 = UART_MR_OPT_CMPTH_VDDIO_DIV3P3, + UART_RX_CMP_THRESHOLD_VDDIO_DIV_2_5 = UART_MR_OPT_CMPTH_VDDIO_DIV2P5, + UART_RX_CMP_THRESHOLD_VDDIO_DIV_2_0 = UART_MR_OPT_CMPTH_VDDIO_DIV2, +}; + +struct uart_config_optical { + /* UART Receive Data Inverted */ + bool rx_inverted; + /* UART Modulated Data Inverted */ + bool tx_inverted; + /* UART Receiver Digital Filter */ + bool rx_filter; + /* Optical Link Clock Divider */ + uint8_t clk_div; + /* Optical Link Modulation Clock Duty Cycle */ + enum uart_optical_duty_cycle duty; + /* Receive Path Comparator Threshold */ + enum uart_optical_cmp_threshold threshold; +}; + +void uart_enable_optical_interface(Uart *p_uart); +void uart_disable_optical_interface(Uart *p_uart); +void uart_config_optical_interface(Uart *p_uart, + struct uart_config_optical *cfg); +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +#endif /* UART_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c new file mode 100644 index 00000000..34680b24 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c @@ -0,0 +1,2094 @@ +/** + * \file + * + * \brief Universal Synchronous Asynchronous Receiver Transmitter (USART) driver + * for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "usart.h" + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** + * \defgroup sam_drivers_usart_group Universal Synchronous Asynchronous + * Receiver Transmitter (USART) + * + * The Universal Synchronous Asynchronous Receiver Transceiver (USART) + * provides one full duplex universal synchronous asynchronous serial link. + * Data frame format is widely programmable (data length, parity, number of + * stop bits) to support a maximum of standards. The receiver implements + * parity error, framing error and overrun error detection. The receiver + * time-out enables handling variable-length frames and the transmitter + * timeguard facilitates communications with slow remote devices. Multidrop + * communications are also supported through address bit handling in reception + * and transmission. The driver supports the following modes: + * RS232, RS485, SPI, IrDA, ISO7816, MODEM, Hardware handshaking and LIN. + * + * @{ + */ + +/* The write protect key value. */ +#ifndef US_WPMR_WPKEY_PASSWD +#define US_WPMR_WPKEY_PASSWD US_WPMR_WPKEY(0x555341U) +#endif + +#ifndef US_WPMR_WPKEY_PASSWD +# define US_WPMR_WPKEY_PASSWD US_WPMR_WPKEY(US_WPKEY_VALUE) +#endif + +/* The CD value scope programmed in MR register. */ +#define MIN_CD_VALUE 0x01 +#define MIN_CD_VALUE_SPI 0x04 +#define MAX_CD_VALUE US_BRGR_CD_Msk + +/* The receiver sampling divide of baudrate clock. */ +#define HIGH_FRQ_SAMPLE_DIV 16 +#define LOW_FRQ_SAMPLE_DIV 8 + +/* Max transmitter timeguard. */ +#define MAX_TRAN_GUARD_TIME US_TTGR_TG_Msk + +/* The non-existent parity error number. */ +#define USART_PARITY_ERROR 5 + +/* ISO7816 protocol type. */ +#define ISO7816_T_0 0 +#define ISO7816_T_1 1 + +/** + * \brief Calculate a clock divider(CD) and a fractional part (FP) for the + * USART asynchronous modes to generate a baudrate as close as possible to + * the baudrate set point. + * + * \note Baud rate calculation: Baudrate = ul_mck/(Over * (CD + FP/8)) + * (Over being 16 or 8). The maximal oversampling is selected if it allows to + * generate a baudrate close to the set point. + * + * \param p_usart Pointer to a USART instance. + * \param baudrate Baud rate set point. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 Baud rate is successfully initialized. + * \retval 1 Baud rate set point is out of range for the given input clock + * frequency. + */ +uint32_t usart_set_async_baudrate(Usart *p_usart, + uint32_t baudrate, uint32_t ul_mck) +{ + uint32_t over; + uint32_t cd_fp; + uint32_t cd; + uint32_t fp; + + /* Calculate the receiver sampling divide of baudrate clock. */ + if (ul_mck >= HIGH_FRQ_SAMPLE_DIV * baudrate) { + over = HIGH_FRQ_SAMPLE_DIV; + } else { + over = LOW_FRQ_SAMPLE_DIV; + } + + /* Calculate clock divider according to the fraction calculated formula. */ + cd_fp = (8 * ul_mck + (over * baudrate) / 2) / (over * baudrate); + cd = cd_fp >> 3; + fp = cd_fp & 0x07; + if (cd < MIN_CD_VALUE || cd > MAX_CD_VALUE) { + return 1; + } + + /* Configure the OVER bit in MR register. */ + if (over == 8) { + p_usart->US_MR |= US_MR_OVER; + } + + /* Configure the baudrate generate register. */ + p_usart->US_BRGR = (cd << US_BRGR_CD_Pos) | (fp << US_BRGR_FP_Pos); + + return 0; +} + +/** + * \brief Calculate a clock divider for the USART synchronous master modes + * to generate a baudrate as close as possible to the baudrate set point. + * + * \note Synchronous baudrate calculation: baudrate = ul_mck / cd + * + * \param p_usart Pointer to a USART instance. + * \param baudrate Baud rate set point. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 Baud rate is successfully initialized. + * \retval 1 Baud rate set point is out of range for the given input clock + * frequency. + */ +static uint32_t usart_set_sync_master_baudrate(Usart *p_usart, + uint32_t baudrate, uint32_t ul_mck) +{ + uint32_t cd; + + /* Calculate clock divider according to the formula in synchronous mode. */ + cd = (ul_mck + baudrate / 2) / baudrate; + + if (cd < MIN_CD_VALUE || cd > MAX_CD_VALUE) { + return 1; + } + + /* Configure the baudrate generate register. */ + p_usart->US_BRGR = cd << US_BRGR_CD_Pos; + + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USCLKS_Msk) | + US_MR_USCLKS_MCK | US_MR_SYNC; + return 0; +} + +/** + * \brief Select the SCK pin as the source of baud rate for the USART + * synchronous slave modes. + * + * \param p_usart Pointer to a USART instance. + */ +static void usart_set_sync_slave_baudrate(Usart *p_usart) +{ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USCLKS_Msk) | + US_MR_USCLKS_SCK | US_MR_SYNC; +} + +/** + * \brief Calculate a clock divider (\e CD) for the USART SPI master mode to + * generate a baud rate as close as possible to the baud rate set point. + * + * \note Baud rate calculation: + * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. + * + * \param p_usart Pointer to a USART instance. + * \param baudrate Baud rate set point. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 Baud rate is successfully initialized. + * \retval 1 Baud rate set point is out of range for the given input clock + * frequency. + */ +static uint32_t usart_set_spi_master_baudrate(Usart *p_usart, + uint32_t baudrate, uint32_t ul_mck) +{ + uint32_t cd; + + /* Calculate the clock divider according to the formula in SPI mode. */ + cd = (ul_mck + baudrate / 2) / baudrate; + + if (cd < MIN_CD_VALUE_SPI || cd > MAX_CD_VALUE) { + return 1; + } + + p_usart->US_BRGR = cd << US_BRGR_CD_Pos; + + return 0; +} + +/** + * \brief Select the SCK pin as the source of baudrate for the USART SPI slave + * mode. + * + * \param p_usart Pointer to a USART instance. + */ +static void usart_set_spi_slave_baudrate(Usart *p_usart) +{ + p_usart->US_MR &= ~US_MR_USCLKS_Msk; + p_usart->US_MR |= US_MR_USCLKS_SCK; +} + +/** + * \brief Reset the USART and disable TX and RX. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_reset(Usart *p_usart) +{ + /* Disable the Write Protect. */ + usart_disable_writeprotect(p_usart); + + /* Reset registers that could cause unpredictable behavior after reset. */ + p_usart->US_MR = 0; + p_usart->US_RTOR = 0; + p_usart->US_TTGR = 0; + + /* Disable TX and RX. */ + usart_reset_tx(p_usart); + usart_reset_rx(p_usart); + /* Reset status bits. */ + usart_reset_status(p_usart); + /* Turn off RTS and DTR if exist. */ + usart_drive_RTS_pin_high(p_usart); +#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E) + usart_drive_DTR_pin_high(p_usart); +#endif +} + +/** + * \brief Configure USART to work in RS232 mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_rs232(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck) +{ + static uint32_t ul_reg_val; + + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + ul_reg_val = 0; + /* Check whether the input values are legal. */ + if (!p_usart_opt || usart_set_async_baudrate(p_usart, + p_usart_opt->baudrate, ul_mck)) { + return 1; + } + + /* Configure the USART option. */ + ul_reg_val |= p_usart_opt->char_length | p_usart_opt->parity_type | + p_usart_opt->channel_mode | p_usart_opt->stop_bits; + + /* Configure the USART mode as normal mode. */ + ul_reg_val |= US_MR_USART_MODE_NORMAL; + + p_usart->US_MR |= ul_reg_val; + + return 0; +} + +/** + * \brief Configure USART to work in hardware handshaking mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_hw_handshaking(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck) +{ + /* Initialize the USART as standard RS232. */ + if (usart_init_rs232(p_usart, p_usart_opt, ul_mck)) { + return 1; + } + + /* Set hardware handshaking mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_HW_HANDSHAKING; + + return 0; +} + +#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E) + +/** + * \brief Configure USART to work in modem mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_modem(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck) +{ + /* + * SAM3S, SAM4S and SAM4E series support MODEM mode only on USART1, + * SAM3U and SAM4L series support MODEM mode only on USART0. + */ +#if (SAM3S || SAM4S || SAM4E) +#ifdef USART1 + if (p_usart != USART1) { + return 1; + } +#endif +#elif (SAM3U || SAM4L) + if (p_usart != USART0) { + return 1; + } +#endif + + /* Initialize the USART as standard RS232. */ + if (usart_init_rs232(p_usart, p_usart_opt, ul_mck)) { + return 1; + } + + /* Set MODEM mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_MODEM; + + return 0; +} +#endif + +/** + * \brief Configure USART to work in SYNC mode and act as a master. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_sync_master(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck) +{ + static uint32_t ul_reg_val; + + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + ul_reg_val = 0; + /* Check whether the input values are legal. */ + if (!p_usart_opt || usart_set_sync_master_baudrate(p_usart, + p_usart_opt->baudrate, ul_mck)) { + return 1; + } + + /* Configure the USART option. */ + ul_reg_val |= p_usart_opt->char_length | p_usart_opt->parity_type | + p_usart_opt->channel_mode | p_usart_opt->stop_bits; + + /* Set normal mode and output clock as synchronous master. */ + ul_reg_val |= US_MR_USART_MODE_NORMAL | US_MR_CLKO; + p_usart->US_MR |= ul_reg_val; + + return 0; +} + +/** + * \brief Configure USART to work in SYNC mode and act as a slave. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_sync_slave(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt) +{ + static uint32_t ul_reg_val; + + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + ul_reg_val = 0; + usart_set_sync_slave_baudrate(p_usart); + + /* Check whether the input values are legal. */ + if (!p_usart_opt) { + return 1; + } + + /* Configure the USART option. */ + ul_reg_val |= p_usart_opt->char_length | p_usart_opt->parity_type | + p_usart_opt->channel_mode | p_usart_opt->stop_bits; + + /* Set normal mode. */ + ul_reg_val |= US_MR_USART_MODE_NORMAL; + p_usart->US_MR |= ul_reg_val; + + return 0; +} + +/** + * \brief Configure USART to work in RS485 mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_rs485(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck) +{ + /* Initialize the USART as standard RS232. */ + if (usart_init_rs232(p_usart, p_usart_opt, ul_mck)) { + return 1; + } + + /* Set RS485 mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_RS485; + + return 0; +} + +#if (!SAMG55 && !SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +/** + * \brief Configure USART to work in IrDA mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_irda(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck) +{ + /* Initialize the USART as standard RS232. */ + if (usart_init_rs232(p_usart, p_usart_opt, ul_mck)) { + return 1; + } + + /* Set IrDA filter. */ + p_usart->US_IF = p_usart_opt->irda_filter; + + /* Set IrDA mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_IRDA; + + return 0; +} +#endif + +#if (!SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +/** + * \brief Calculate a clock divider (\e CD) for the USART ISO7816 mode to + * generate an ISO7816 clock as close as possible to the clock set point. + * + * \note ISO7816 clock calculation: Clock = ul_mck / cd + * + * \param p_usart Pointer to a USART instance. + * \param clock ISO7816 clock set point. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 ISO7816 clock is successfully initialized. + * \retval 1 ISO7816 clock set point is out of range for the given input clock + * frequency. + */ +static uint32_t usart_set_iso7816_clock(Usart *p_usart, + uint32_t clock, uint32_t ul_mck) +{ + uint32_t cd; + + /* Calculate clock divider according to the formula in ISO7816 mode. */ + cd = (ul_mck + clock / 2) / clock; + + if (cd < MIN_CD_VALUE || cd > MAX_CD_VALUE) { + return 1; + } + + p_usart->US_MR = (p_usart->US_MR & ~(US_MR_USCLKS_Msk | US_MR_SYNC | + US_MR_OVER)) | US_MR_USCLKS_MCK | US_MR_CLKO; + + /* Configure the baudrate generate register. */ + p_usart->US_BRGR = cd << US_BRGR_CD_Pos; + + return 0; +} + +/** + * \brief Configure USART to work in ISO7816 mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_iso7816(Usart *p_usart, + const usart_iso7816_opt_t *p_usart_opt, uint32_t ul_mck) +{ + static uint32_t ul_reg_val; + + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + ul_reg_val = 0; + + /* Check whether the input values are legal. */ + if (!p_usart_opt || ((p_usart_opt->parity_type != US_MR_PAR_EVEN) && + (p_usart_opt->parity_type != US_MR_PAR_ODD))) { + return 1; + } + + if (p_usart_opt->protocol_type == ISO7816_T_0) { + ul_reg_val |= US_MR_USART_MODE_IS07816_T_0 | US_MR_NBSTOP_2_BIT | + (p_usart_opt->max_iterations << US_MR_MAX_ITERATION_Pos); + + if (p_usart_opt->bit_order) { + ul_reg_val |= US_MR_MSBF; + } + } else if (p_usart_opt->protocol_type == ISO7816_T_1) { + /* + * Only LSBF is used in the T=1 protocol, and max_iterations field + * is only used in T=0 mode. + */ + if (p_usart_opt->bit_order || p_usart_opt->max_iterations) { + return 1; + } + + /* Set USART mode to ISO7816, T=1, and always uses 1 stop bit. */ + ul_reg_val |= US_MR_USART_MODE_IS07816_T_1 | US_MR_NBSTOP_1_BIT; + } else { + return 1; + } + + /* Set up the baudrate. */ + if (usart_set_iso7816_clock(p_usart, p_usart_opt->iso7816_hz, ul_mck)) { + return 1; + } + + /* Set FIDI register: bit rate = iso7816_hz / fidi_ratio. */ + p_usart->US_FIDI = p_usart_opt->fidi_ratio; + + /* Set ISO7816 parity type in the MODE register. */ + ul_reg_val |= p_usart_opt->parity_type; + + if (p_usart_opt->inhibit_nack) { + ul_reg_val |= US_MR_INACK; + } + if (p_usart_opt->dis_suc_nack) { + ul_reg_val |= US_MR_DSNACK; + } + + p_usart->US_MR |= ul_reg_val; + + return 0; +} + +/** + * \brief Reset the ITERATION in US_CSR when the ISO7816 mode is enabled. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_reset_iterations(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RSTIT; +} + +/** + * \brief Reset NACK in US_CSR. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_reset_nack(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RSTNACK; +} + +/** + * \brief Check if both receive buffers are full. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 Receive buffers are full. + * \retval 0 Receive buffers are not full. + */ +uint32_t usart_is_rx_buf_full(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_RXBUFF) > 0; +} + +#if (!SAM4L) +/** + * \brief Check if one receive buffer is filled. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 Receive is complete. + * \retval 0 Receive is still pending. + */ +uint32_t usart_is_rx_buf_end(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_ENDRX) > 0; +} + +/** + * \brief Check if one transmit buffer is empty. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 Transmit is complete. + * \retval 0 Transmit is still pending. + */ +uint32_t usart_is_tx_buf_end(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_ENDTX) > 0; +} + +/** + * \brief Check if both transmit buffers are empty. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 Transmit buffers are empty. + * \retval 0 Transmit buffers are not empty. + */ +uint32_t usart_is_tx_buf_empty(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_TXBUFE) > 0; +} +#endif + +/** + * \brief Get the total number of errors that occur during an ISO7816 transfer. + * + * \param p_usart Pointer to a USART instance. + * + * \return The number of errors that occurred. + */ +uint8_t usart_get_error_number(Usart *p_usart) +{ + return (p_usart->US_NER & US_NER_NB_ERRORS_Msk); +} + +#endif + +/** + * \brief Configure USART to work in SPI mode and act as a master. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_spi_master(Usart *p_usart, + const usart_spi_opt_t *p_usart_opt, uint32_t ul_mck) +{ + static uint32_t ul_reg_val; + + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + ul_reg_val = 0; + /* Check whether the input values are legal. */ + if (!p_usart_opt || (p_usart_opt->spi_mode > SPI_MODE_3) || + usart_set_spi_master_baudrate(p_usart, p_usart_opt->baudrate, + ul_mck)) { + return 1; + } + + /* Configure the character length bit in MR register. */ + ul_reg_val |= p_usart_opt->char_length; + + /* Set SPI master mode and channel mode. */ + ul_reg_val |= US_MR_USART_MODE_SPI_MASTER | US_MR_CLKO | + p_usart_opt->channel_mode; + + switch (p_usart_opt->spi_mode) { + case SPI_MODE_0: + ul_reg_val |= US_MR_CPHA; + ul_reg_val &= ~US_MR_CPOL; + break; + + case SPI_MODE_1: + ul_reg_val &= ~US_MR_CPHA; + ul_reg_val &= ~US_MR_CPOL; + break; + + case SPI_MODE_2: + ul_reg_val |= US_MR_CPHA; + ul_reg_val |= US_MR_CPOL; + break; + + case SPI_MODE_3: + ul_reg_val &= ~US_MR_CPHA; + ul_reg_val |= US_MR_CPOL; + break; + + default: + break; + } + + p_usart->US_MR |= ul_reg_val; + + return 0; +} + +/** + * \brief Configure USART to work in SPI mode and act as a slave. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param p_usart_opt Pointer to sam_usart_opt_t instance. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_spi_slave(Usart *p_usart, + const usart_spi_opt_t *p_usart_opt) +{ + static uint32_t ul_reg_val; + + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + ul_reg_val = 0; + usart_set_spi_slave_baudrate(p_usart); + + /* Check whether the input values are legal. */ + if (!p_usart_opt || p_usart_opt->spi_mode > SPI_MODE_3) { + return 1; + } + + /* Configure the character length bit in MR register. */ + ul_reg_val |= p_usart_opt->char_length; + + /* Set SPI slave mode and channel mode. */ + ul_reg_val |= US_MR_USART_MODE_SPI_SLAVE | p_usart_opt->channel_mode; + + switch (p_usart_opt->spi_mode) { + case SPI_MODE_0: + ul_reg_val |= US_MR_CPHA; + ul_reg_val &= ~US_MR_CPOL; + break; + + case SPI_MODE_1: + ul_reg_val &= ~US_MR_CPHA; + ul_reg_val &= ~US_MR_CPOL; + break; + + case SPI_MODE_2: + ul_reg_val |= US_MR_CPHA; + ul_reg_val |= US_MR_CPOL; + break; + + case SPI_MODE_3: + ul_reg_val |= US_MR_CPOL; + ul_reg_val &= ~US_MR_CPHA; + break; + + default: + break; + } + + p_usart->US_MR |= ul_reg_val; + + return 0; +} + +#if (SAM3XA || SAM4L || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) + +/** + * \brief Configure USART to work in LIN mode and act as a LIN master. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param ul_baudrate Baudrate to be used. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_lin_master(Usart *p_usart,uint32_t ul_baudrate, + uint32_t ul_mck) +{ + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + /* Set up the baudrate. */ + if (usart_set_async_baudrate(p_usart, ul_baudrate, ul_mck)) { + return 1; + } + + /* Set LIN master mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_LIN_MASTER; + + usart_enable_rx(p_usart); + usart_enable_tx(p_usart); + + return 0; +} + +/** + * \brief Configure USART to work in LIN mode and act as a LIN slave. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param ul_baudrate Baudrate to be used. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_lin_slave(Usart *p_usart, uint32_t ul_baudrate, + uint32_t ul_mck) +{ + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + usart_enable_rx(p_usart); + usart_enable_tx(p_usart); + + /* Set LIN slave mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_LIN_SLAVE; + + /* Set up the baudrate. */ + if (usart_set_async_baudrate(p_usart, ul_baudrate, ul_mck)) { + return 1; + } + + return 0; +} + +/** + * \brief Abort the current LIN transmission. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_abort_tx(Usart *p_usart) +{ + p_usart->US_CR = US_CR_LINABT; +} + +/** + * \brief Send a wakeup signal on the LIN bus. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_send_wakeup_signal(Usart *p_usart) +{ + p_usart->US_CR = US_CR_LINWKUP; +} + +/** + * \brief Configure the LIN node action, which should be one of PUBLISH, + * SUBSCRIBE or IGNORE. + * + * \param p_usart Pointer to a USART instance. + * \param uc_action 0 for PUBLISH, 1 for SUBSCRIBE, 2 for IGNORE. + */ +void usart_lin_set_node_action(Usart *p_usart, uint8_t uc_action) +{ + p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_NACT_Msk) | + (uc_action << US_LINMR_NACT_Pos); +} + +/** + * \brief Disable the parity check during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_disable_parity(Usart *p_usart) +{ + p_usart->US_LINMR |= US_LINMR_PARDIS; +} + +/** + * \brief Enable the parity check during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_enable_parity(Usart *p_usart) +{ + p_usart->US_LINMR &= ~US_LINMR_PARDIS; +} + +/** + * \brief Disable the checksum during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_disable_checksum(Usart *p_usart) +{ + p_usart->US_LINMR |= US_LINMR_CHKDIS; +} + +/** + * \brief Enable the checksum during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_enable_checksum(Usart *p_usart) +{ + p_usart->US_LINMR &= ~US_LINMR_CHKDIS; +} + +/** + * \brief Configure the checksum type during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + * \param uc_type 0 for LIN 2.0 Enhanced checksum or 1 for LIN 1.3 Classic + * checksum. + */ +void usart_lin_set_checksum_type(Usart *p_usart, uint8_t uc_type) +{ + p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_CHKTYP) | + (uc_type << 4); +} + +/** + * \brief Configure the data length mode during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + * \param uc_mode Indicate the data length type: 0 if the data length is + * defined by the DLC of LIN mode register or 1 if the data length is defined + * by the bit 5 and 6 of the identifier. + */ +void usart_lin_set_data_len_mode(Usart *p_usart, uint8_t uc_mode) +{ + p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_DLM) | + (uc_mode << 5); +} + +/** + * \brief Disable the frame slot mode during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_disable_frame_slot(Usart *p_usart) +{ + p_usart->US_LINMR |= US_LINMR_FSDIS; +} + +/** + * \brief Enable the frame slot mode during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_enable_frame_slot(Usart *p_usart) +{ + p_usart->US_LINMR &= ~US_LINMR_FSDIS; +} + +/** + * \brief Configure the wakeup signal type during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + * \param uc_type Indicate the checksum type: 0 if the wakeup signal is a + * LIN 2.0 wakeup signal; 1 if the wakeup signal is a LIN 1.3 wakeup signal. + */ +void usart_lin_set_wakeup_signal_type(Usart *p_usart, uint8_t uc_type) +{ + p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_WKUPTYP) | + (uc_type << 7); +} + +/** + * \brief Configure the response data length if the data length is defined by + * the DLC field during the LIN communication. + * + * \param p_usart Pointer to a USART instance. + * \param uc_len Indicate the response data length. + */ +void usart_lin_set_response_data_len(Usart *p_usart, uint8_t uc_len) +{ + p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_DLC_Msk) | + ((uc_len - 1) << US_LINMR_DLC_Pos); +} + +/** + * \brief The LIN mode register is not written by the PDC. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_disable_pdc_mode(Usart *p_usart) +{ + p_usart->US_LINMR &= ~US_LINMR_PDCM; +} + +/** + * \brief The LIN mode register (except this flag) is written by the PDC. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lin_enable_pdc_mode(Usart *p_usart) +{ + p_usart->US_LINMR |= US_LINMR_PDCM; +} + +/** + * \brief Configure the LIN identifier when USART works in LIN master mode. + * + * \param p_usart Pointer to a USART instance. + * \param uc_id The identifier to be transmitted. + */ +void usart_lin_set_tx_identifier(Usart *p_usart, uint8_t uc_id) +{ + p_usart->US_LINIR = (p_usart->US_LINIR & ~US_LINIR_IDCHR_Msk) | + US_LINIR_IDCHR(uc_id); +} + +/** + * \brief Read the identifier when USART works in LIN mode. + * + * \param p_usart Pointer to a USART instance. + * + * \return The last identifier received in LIN slave mode or the last + * identifier transmitted in LIN master mode. + */ +uint8_t usart_lin_read_identifier(Usart *p_usart) +{ + return (p_usart->US_LINIR & US_LINIR_IDCHR_Msk); +} + +/** + * \brief Get data length. + * + * \param p_usart Pointer to a USART instance. + * + * \return Data length. + */ +uint8_t usart_lin_get_data_length(Usart *usart) +{ + if (usart->US_LINMR & US_LINMR_DLM) { + uint8_t data_length = 1 << ((usart->US_LINIR >> + (US_LINIR_IDCHR_Pos + 4)) & 0x03); + return data_length; + } else { + return ((usart->US_LINMR & US_LINMR_DLC_Msk) >> US_LINMR_DLC_Pos) + 1; + } +} + +#endif + +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +/** + * \brief Get identifier send status. + * + * \param p_usart Pointer to a USART instance. + * + * \return + * 0: No LIN identifier has been sent since the last RSTSTA. + * 1: :At least one LIN identifier has been sent since the last RSTSTA. + */ +uint8_t usart_lin_identifier_send_complete(Usart *usart) +{ + return (usart->US_CSR & US_CSR_LINID) > 0; +} + +/** + * \brief Get identifier received status. + * + * \param p_usart Pointer to a USART instance. + * + * \return + * 0: No LIN identifier has been reveived since the last RSTSTA. + * 1: At least one LIN identifier has been received since the last RSTSTA. + */ +uint8_t usart_lin_identifier_reception_complete(Usart *usart) +{ + return (usart->US_CSR & US_CSR_LINID) > 0; +} + +/** + * \brief Get transmission status. + * + * \param p_usart Pointer to a USART instance. + * + * \return + * 0: The USART is idle or a LIN transfer is ongoing. + * 1: A LIN transfer has been completed since the last RSTSTA. + */ +uint8_t usart_lin_tx_complete(Usart *usart) +{ + return (usart->US_CSR & US_CSR_LINTC) > 0; +} + +/** + * \brief Configure USART to work in LON mode. + * + * \note By default, the transmitter and receiver aren't enabled. + * + * \param p_usart Pointer to a USART instance. + * \param ul_baudrate Baudrate to be used. + * \param ul_mck USART module input clock frequency. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_init_lon(Usart *p_usart,uint32_t ul_baudrate, + uint32_t ul_mck) +{ + /* Reset the USART and shut down TX and RX. */ + usart_reset(p_usart); + + /* Set up the baudrate. */ + if (usart_set_async_baudrate(p_usart, ul_baudrate, ul_mck)) { + return 1; + } + + /* Set LIN master mode. */ + p_usart->US_MR = (p_usart->US_MR & ~US_MR_USART_MODE_Msk) | + US_MR_USART_MODE_LON; + + usart_enable_rx(p_usart); + usart_enable_tx(p_usart); + + return 0; +} + +/** + * \brief set LON parameter value. + * + * \param p_usart Pointer to a USART instance. + * \param uc_type 0: LON comm_type = 1 mode, + * 1: LON comm_type = 2 mode + */ +void usart_lon_set_comm_type(Usart *p_usart, uint8_t uc_type) +{ + p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_COMMT) | + (uc_type << 0); +} + +/** + * \brief Disable LON Collision Detection Feature. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lon_disable_coll_detection(Usart *p_usart) +{ + p_usart->US_LONMR |= US_LONMR_COLDET; +} + +/** + * \brief Enable LON Collision Detection Feature. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_lon_enable_coll_detection(Usart *p_usart) +{ + p_usart->US_LONMR &= ~US_LONMR_COLDET; +} + +/** + * \brief set Terminate Frame upon Collision Notification. + * + * \param p_usart Pointer to a USART instance. + * \param uc_type 0: Do not terminate the frame in LON comm_type = 1 mode upon collision detection. + * 1:Terminate the frame in LON comm_type = 1 mode upon collision detection if possible. + */ +void usart_lon_set_tcol(Usart *p_usart, uint8_t uc_type) +{ + p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_TCOL) | + (uc_type << 2); +} + +/** + * \brief set LON Collision Detection on Frame Tail. + * + * \param p_usart Pointer to a USART instance. + * \param uc_type 0: Detect collisions after CRC has been sent but prior end of transmission in LON comm_type = 1 mode. + * 1: Ignore collisions after CRC has been sent but prior end of transmission in LON comm_type = 1 mode. + */ +void usart_lon_set_cdtail(Usart *p_usart, uint8_t uc_type) +{ + p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_CDTAIL) | + (uc_type << 3); +} + +/** + * \brief set LON DMA Mode. + * + * \param p_usart Pointer to a USART instance. + * \param uc_type 0: The LON data length register US_LONDL is not written by the DMA. + * 1: The LON data length register US_LONDL is written by the DMA. + */ +void usart_lon_set_dmam(Usart *p_usart, uint8_t uc_type) +{ + p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_DMAM) | + (uc_type << 4); +} + +/** + * \brief set LON Beta1 Length after Transmission. + * + * \param p_usart Pointer to a USART instance. + * \param ul_len 1-16777215: LON beta1 length after transmission in tbit + */ +void usart_lon_set_beta1_tx_len(Usart *p_usart, uint32_t ul_len) +{ + p_usart->US_LONB1TX = US_LONB1TX_BETA1TX(ul_len); +} + +/** + * \brief set LON Beta1 Length after Reception. + * + * \param p_usart Pointer to a USART instance. + * \param ul_len 1-16777215: LON beta1 length after reception in tbit. + */ +void usart_lon_set_beta1_rx_len(Usart *p_usart, uint32_t ul_len) +{ + p_usart->US_LONB1RX = US_LONB1RX_BETA1RX(ul_len); +} + +/** + * \brief set LON Priority. + * + * \param p_usart Pointer to a USART instance. + * \param uc_psnb 0 -127: LON Priority Slot Number. + * \param uc_nps 0 -127: LON Node Priority Slot. + */ +void usart_lon_set_priority(Usart *p_usart, uint8_t uc_psnb, uint8_t uc_nps) +{ + p_usart->US_LONPRIO = US_LONPRIO_PSNB(uc_psnb) | US_LONPRIO_NPS(uc_nps); +} + +/** + * \brief set LON Indeterminate Time after Transmission. + * + * \param p_usart Pointer to a USART instance. + * \param ul_time 1-16777215: LON Indeterminate Time after Transmission (comm_type = 1 mode only). + */ +void usart_lon_set_tx_idt(Usart *p_usart, uint32_t ul_time) +{ + p_usart->US_IDTTX = US_IDTTX_IDTTX(ul_time); +} + +/** + * \brief set LON Indeterminate Time after Reception. + * + * \param p_usart Pointer to a USART instance. + * \param ul_time 1-16777215: LON Indeterminate Time after Reception (comm_type = 1 mode only). + */ +void usart_lon_set_rx_idt(Usart *p_usart, uint32_t ul_time) +{ + p_usart->US_IDTRX = US_IDTRX_IDTRX(ul_time); +} + +/** + * \brief set LON Preamble Length. + * + * \param p_usart Pointer to a USART instance. + * \param ul_len 1-16383: LON preamble length in tbit(without byte-sync). + */ +void usart_lon_set_pre_len(Usart *p_usart, uint32_t ul_len) +{ + p_usart->US_LONPR = US_LONPR_LONPL(ul_len); +} + +/** + * \brief set LON Data Length. + * + * \param p_usart Pointer to a USART instance. + * \param uc_len 0-255: LON data length is LONDL+1 bytes. + */ +void usart_lon_set_data_len(Usart *p_usart, uint8_t uc_len) +{ + p_usart->US_LONDL = US_LONDL_LONDL(uc_len); +} + +/** + * \brief set LON Priority. + * + * \param p_usart Pointer to a USART instance. + * \param uc_bli LON Backlog Increment. + * \param uc_altp LON Alternate Path Bit. + * \param uc_pb LON Priority Bit. + */ +void usart_lon_set_l2hdr(Usart *p_usart, uint8_t uc_bli, uint8_t uc_altp, uint8_t uc_pb) +{ + p_usart->US_LONL2HDR = US_LONL2HDR_BLI(uc_bli) | (uc_altp << 6) | (uc_pb << 7); +} + +/** + * \brief Check if LON Transmission End. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 At least one transmission has been performed since the last RSTSTA. + * \retval 0 Transmission on going or no transmission occurred since the last RSTSTA. + */ +uint32_t usart_lon_is_tx_end(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_LTXD) > 0; +} + +/** + * \brief Check if LON Reception End. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 At least one Reception has been performed since the last RSTSTA. + * \retval 0 Reception on going or no Reception occurred since the last RSTSTA. + */ +uint32_t usart_lon_is_rx_end(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_LRXD) > 0; +} +#endif + +/** + * \brief Enable USART transmitter. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_enable_tx(Usart *p_usart) +{ + p_usart->US_CR = US_CR_TXEN; +} + +/** + * \brief Disable USART transmitter. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_disable_tx(Usart *p_usart) +{ + p_usart->US_CR = US_CR_TXDIS; +} + +/** + * \brief Immediately stop and disable USART transmitter. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_reset_tx(Usart *p_usart) +{ + /* Reset transmitter */ + p_usart->US_CR = US_CR_RSTTX | US_CR_TXDIS; +} + +/** + * \brief Configure the transmit timeguard register. + * + * \param p_usart Pointer to a USART instance. + * \param timeguard The value of transmit timeguard. + */ +void usart_set_tx_timeguard(Usart *p_usart, uint32_t timeguard) +{ + p_usart->US_TTGR = timeguard; +} + +/** + * \brief Enable USART receiver. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_enable_rx(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RXEN; +} + +/** + * \brief Disable USART receiver. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_disable_rx(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RXDIS; +} + +/** + * \brief Immediately stop and disable USART receiver. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_reset_rx(Usart *p_usart) +{ + /* Reset Receiver */ + p_usart->US_CR = US_CR_RSTRX | US_CR_RXDIS; +} + +/** + * \brief Configure the receive timeout register. + * + * \param p_usart Pointer to a USART instance. + * \param timeout The value of receive timeout. + */ +void usart_set_rx_timeout(Usart *p_usart, uint32_t timeout) +{ + p_usart->US_RTOR = timeout; +} + +/** + * \brief Enable USART interrupts. + * + * \param p_usart Pointer to a USART peripheral. + * \param ul_sources Interrupt sources bit map. + */ +void usart_enable_interrupt(Usart *p_usart, uint32_t ul_sources) +{ + p_usart->US_IER = ul_sources; +} + +/** + * \brief Disable USART interrupts. + * + * \param p_usart Pointer to a USART peripheral. + * \param ul_sources Interrupt sources bit map. + */ +void usart_disable_interrupt(Usart *p_usart, uint32_t ul_sources) +{ + p_usart->US_IDR = ul_sources; +} + +/** + * \brief Read USART interrupt mask. + * + * \param p_usart Pointer to a USART peripheral. + * + * \return The interrupt mask value. + */ +uint32_t usart_get_interrupt_mask(Usart *p_usart) +{ + return p_usart->US_IMR; +} + +/** + * \brief Get current status. + * + * \param p_usart Pointer to a USART instance. + * + * \return The current USART status. + */ +uint32_t usart_get_status(Usart *p_usart) +{ + return p_usart->US_CSR; +} + +/** + * \brief Reset status bits (PARE, OVER, MANERR, UNRE and PXBRK in US_CSR). + * + * \param p_usart Pointer to a USART instance. + */ +void usart_reset_status(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RSTSTA; +} + +/** + * \brief Start transmission of a break. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_start_tx_break(Usart *p_usart) +{ + p_usart->US_CR = US_CR_STTBRK; +} + +/** + * \brief Stop transmission of a break. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_stop_tx_break(Usart *p_usart) +{ + p_usart->US_CR = US_CR_STPBRK; +} + +/** + * \brief Start waiting for a character before clocking the timeout count. + * Reset the status bit TIMEOUT in US_CSR. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_start_rx_timeout(Usart *p_usart) +{ + p_usart->US_CR = US_CR_STTTO; +} + +/** + * \brief In Multidrop mode only, the next character written to the US_THR + * is sent with the address bit set. + * + * \param p_usart Pointer to a USART instance. + * \param ul_addr The address to be sent out. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_send_address(Usart *p_usart, uint32_t ul_addr) +{ + if ((p_usart->US_MR & US_MR_PAR_MULTIDROP) != US_MR_PAR_MULTIDROP) { + return 1; + } + + p_usart->US_CR = US_CR_SENDA; + + if (usart_write(p_usart, ul_addr)) { + return 1; + } else { + return 0; + } +} + +/** + * \brief Restart the receive timeout. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_restart_rx_timeout(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RETTO; +} + +#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E) + +/** + * \brief Drive the pin DTR to 0. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_drive_DTR_pin_low(Usart *p_usart) +{ + p_usart->US_CR = US_CR_DTREN; +} + +/** + * \brief Drive the pin DTR to 1. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_drive_DTR_pin_high(Usart *p_usart) +{ + p_usart->US_CR = US_CR_DTRDIS; +} + +#endif + +/** + * \brief Drive the pin RTS to 0. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_drive_RTS_pin_low(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RTSEN; +} + +/** + * \brief Drive the pin RTS to 1. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_drive_RTS_pin_high(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RTSDIS; +} + +/** + * \brief Drive the slave select line NSS (RTS pin) to 0 in SPI master mode. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_spi_force_chip_select(Usart *p_usart) +{ + p_usart->US_CR = US_CR_FCS; +} + +/** + * \brief Drive the slave select line NSS (RTS pin) to 1 in SPI master mode. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_spi_release_chip_select(Usart *p_usart) +{ + p_usart->US_CR = US_CR_RCS; +} + +/** + * \brief Check if Transmit is Ready. + * Check if data have been loaded in USART_THR and are waiting to be loaded + * into the Transmit Shift Register (TSR). + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 No data is in the Transmit Holding Register. + * \retval 0 There is data in the Transmit Holding Register. + */ +uint32_t usart_is_tx_ready(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_TXRDY) > 0; +} + +/** + * \brief Check if Transmit Holding Register is empty. + * Check if the last data written in USART_THR have been loaded in TSR and the + * last data loaded in TSR have been transmitted. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 Transmitter is empty. + * \retval 0 Transmitter is not empty. + */ +uint32_t usart_is_tx_empty(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_TXEMPTY) > 0; +} + +/** + * \brief Check if the received data are ready. + * Check if Data have been received and loaded into USART_RHR. + * + * \param p_usart Pointer to a USART instance. + * + * \retval 1 Some data has been received. + * \retval 0 No data has been received. + */ +uint32_t usart_is_rx_ready(Usart *p_usart) +{ + return (p_usart->US_CSR & US_CSR_RXRDY) > 0; +} + +/** + * \brief Write to USART Transmit Holding Register. + * + * \note Before writing user should check if tx is ready (or empty). + * + * \param p_usart Pointer to a USART instance. + * \param c Data to be sent. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_write(Usart *p_usart, uint32_t c) +{ + if (!(p_usart->US_CSR & US_CSR_TXRDY)) { + return 1; + } + + p_usart->US_THR = US_THR_TXCHR(c); + return 0; +} + +/** + * \brief Write to USART Transmit Holding Register. + * + * \note Before writing user should check if tx is ready (or empty). + * + * \param p_usart Pointer to a USART instance. + * \param c Data to be sent. + * + * \retval 0 on success. + * \retval 1 on failure. + */ +uint32_t usart_putchar(Usart *p_usart, uint32_t c) +{ + while (!(p_usart->US_CSR & US_CSR_TXRDY)) { + } + + p_usart->US_THR = US_THR_TXCHR(c); + + return 0; +} + +/** + * \brief Write one-line string through USART. + * + * \param p_usart Pointer to a USART instance. + * \param string Pointer to one-line string to be sent. + */ +void usart_write_line(Usart *p_usart, const char *string) +{ + while (*string != '\0') { + usart_putchar(p_usart, *string++); + } +} + +/** + * \brief Read from USART Receive Holding Register. + * + * \note Before reading user should check if rx is ready. + * + * \param p_usart Pointer to a USART instance. + * \param c Pointer where the one-byte received data will be stored. + * + * \retval 0 on success. + * \retval 1 if no data is available or errors. + */ +uint32_t usart_read(Usart *p_usart, uint32_t *c) +{ + if (!(p_usart->US_CSR & US_CSR_RXRDY)) { + return 1; + } + + /* Read character */ + *c = p_usart->US_RHR & US_RHR_RXCHR_Msk; + + return 0; +} + +/** + * \brief Read from USART Receive Holding Register. + * Before reading user should check if rx is ready. + * + * \param p_usart Pointer to a USART instance. + * \param c Pointer where the one-byte received data will be stored. + * + * \retval 0 Data has been received. + * \retval 1 on failure. + */ +uint32_t usart_getchar(Usart *p_usart, uint32_t *c) +{ + /* Wait until it's not empty or timeout has reached. */ + while (!(p_usart->US_CSR & US_CSR_RXRDY)) { + } + + /* Read character */ + *c = p_usart->US_RHR & US_RHR_RXCHR_Msk; + + return 0; +} + +#if (SAM3XA || SAM3U) +/** + * \brief Get Transmit address for DMA operation. + * + * \param p_usart Pointer to a USART instance. + * + * \return Transmit address for DMA access. + */ +uint32_t *usart_get_tx_access(Usart *p_usart) +{ + return (uint32_t *)&(p_usart->US_THR); +} + +/** + * \brief Get Receive address for DMA operation. + * + * \param p_usart Pointer to a USART instance. + * + * \return Receive address for DMA access. + */ +uint32_t *usart_get_rx_access(Usart *p_usart) +{ + return (uint32_t *)&(p_usart->US_RHR); +} +#endif + +#if (!SAM4L && !SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +/** + * \brief Get USART PDC base address. + * + * \param p_usart Pointer to a UART instance. + * + * \return USART PDC registers base for PDC driver to access. + */ +Pdc *usart_get_pdc_base(Usart *p_usart) +{ + Pdc *p_pdc_base; + + p_pdc_base = (Pdc *)NULL; + +#ifdef PDC_USART + if (p_usart == USART) { + p_pdc_base = PDC_USART; + return p_pdc_base; + } +#endif +#ifdef PDC_USART0 + if (p_usart == USART0) { + p_pdc_base = PDC_USART0; + return p_pdc_base; + } +#endif +#ifdef PDC_USART1 + else if (p_usart == USART1) { + p_pdc_base = PDC_USART1; + return p_pdc_base; + } +#endif +#ifdef PDC_USART2 + else if (p_usart == USART2) { + p_pdc_base = PDC_USART2; + return p_pdc_base; + } +#endif +#ifdef PDC_USART3 + else if (p_usart == USART3) { + p_pdc_base = PDC_USART3; + return p_pdc_base; + } +#endif +#ifdef PDC_USART4 + else if (p_usart == USART4) { + p_pdc_base = PDC_USART4; + return p_pdc_base; + } +#endif +#ifdef PDC_USART5 + else if (p_usart == USART5) { + p_pdc_base = PDC_USART5; + return p_pdc_base; + } +#endif +#ifdef PDC_USART6 + else if (p_usart == USART6) { + p_pdc_base = PDC_USART6; + return p_pdc_base; + } +#endif +#ifdef PDC_USART7 + else if (p_usart == USART7) { + p_pdc_base = PDC_USART7; + return p_pdc_base; + } +#endif + + return p_pdc_base; +} +#endif + +/** + * \brief Enable write protect of USART registers. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_enable_writeprotect(Usart *p_usart) +{ + p_usart->US_WPMR = US_WPMR_WPEN | US_WPMR_WPKEY_PASSWD; +} + +/** + * \brief Disable write protect of USART registers. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_disable_writeprotect(Usart *p_usart) +{ + p_usart->US_WPMR = US_WPMR_WPKEY_PASSWD; +} + +/** + * \brief Get write protect status. + * + * \param p_usart Pointer to a USART instance. + * + * \return 0 if no write protect violation occurred, or 16-bit write protect + * violation source. + */ +uint32_t usart_get_writeprotect_status(Usart *p_usart) +{ + uint32_t reg_value; + + reg_value = p_usart->US_WPSR; + if (reg_value & US_WPSR_WPVS) { + return (reg_value & US_WPSR_WPVSRC_Msk) >> US_WPSR_WPVSRC_Pos; + } else { + return 0; + } +} + +#if (SAM3S || SAM4S || SAM3U || SAM3XA || SAM4L || SAM4E || SAM4C || SAM4CP || SAM4CM) + +/** + * \brief Configure the transmitter preamble length when the Manchester + * encode/decode is enabled. + * + * \param p_usart Pointer to a USART instance. + * \param uc_len The transmitter preamble length, which should be 0 ~ 15. + */ +void usart_man_set_tx_pre_len(Usart *p_usart, uint8_t uc_len) +{ + p_usart->US_MAN = (p_usart->US_MAN & ~US_MAN_TX_PL_Msk) | + US_MAN_TX_PL(uc_len); +} + +/** + * \brief Configure the transmitter preamble pattern when the Manchester + * encode/decode is enabled, which should be 0 ~ 3. + * + * \param p_usart Pointer to a USART instance. + * \param uc_pattern 0 if the preamble is composed of '1's; + * 1 if the preamble is composed of '0's; + * 2 if the preamble is composed of '01's; + * 3 if the preamble is composed of '10's. + */ +void usart_man_set_tx_pre_pattern(Usart *p_usart, uint8_t uc_pattern) +{ + p_usart->US_MAN = (p_usart->US_MAN & ~US_MAN_TX_PP_Msk) | + (uc_pattern << US_MAN_TX_PP_Pos); +} + +/** + * \brief Configure the transmitter Manchester polarity when the Manchester + * encode/decode is enabled. + * + * \param p_usart Pointer to a USART instance. + * \param uc_polarity Indicate the transmitter Manchester polarity, which + * should be 0 or 1. + */ +void usart_man_set_tx_polarity(Usart *p_usart, uint8_t uc_polarity) +{ + p_usart->US_MAN = (p_usart->US_MAN & ~US_MAN_TX_MPOL) | + (uc_polarity << 12); +} + +/** + * \brief Configure the detected receiver preamble length when the Manchester + * encode/decode is enabled. + * + * \param p_usart Pointer to a USART instance. + * \param uc_len The detected receiver preamble length, which should be 0 ~ 15. + */ +void usart_man_set_rx_pre_len(Usart *p_usart, uint8_t uc_len) +{ + p_usart->US_MAN = (p_usart->US_MAN & ~US_MAN_RX_PL_Msk) | + US_MAN_RX_PL(uc_len); +} + +/** + * \brief Configure the detected receiver preamble pattern when the Manchester + * encode/decode is enabled, which should be 0 ~ 3. + * + * \param p_usart Pointer to a USART instance. + * \param uc_pattern 0 if the preamble is composed of '1's; + * 1 if the preamble is composed of '0's; + * 2 if the preamble is composed of '01's; + * 3 if the preamble is composed of '10's. + */ +void usart_man_set_rx_pre_pattern(Usart *p_usart, uint8_t uc_pattern) +{ + p_usart->US_MAN = (p_usart->US_MAN & ~US_MAN_RX_PP_Msk) | + (uc_pattern << US_MAN_RX_PP_Pos); +} + +/** + * \brief Configure the receiver Manchester polarity when the Manchester + * encode/decode is enabled. + * + * \param p_usart Pointer to a USART instance. + * \param uc_polarity Indicate the receiver Manchester polarity, which should + * be 0 or 1. + */ +void usart_man_set_rx_polarity(Usart *p_usart, uint8_t uc_polarity) +{ + p_usart->US_MAN = (p_usart->US_MAN & ~US_MAN_RX_MPOL) | + (uc_polarity << 28); +} + +/** + * \brief Enable drift compensation. + * + * \note The 16X clock mode must be enabled. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_man_enable_drift_compensation(Usart *p_usart) +{ + p_usart->US_MAN |= US_MAN_DRIFT; +} + +/** + * \brief Disable drift compensation. + * + * \param p_usart Pointer to a USART instance. + */ +void usart_man_disable_drift_compensation(Usart *p_usart) +{ + p_usart->US_MAN &= ~US_MAN_DRIFT; +} + +#endif + +#if SAM4L + +uint32_t usart_get_version(Usart *p_usart) +{ + return p_usart->US_VERSION; +} + +#endif + +#if SAMG55 +/** + * \brief Set sleepwalking match mode. + * + * \param p_uart Pointer to a USART instance. + * \param ul_low_value First comparison value for received character. + * \param ul_high_value Second comparison value for received character. + * \param cmpmode ture for start condition, false for flag only. + * \param cmppar ture for parity check, false for no. + */ +void usart_set_sleepwalking(Usart *p_uart, uint8_t ul_low_value, + bool cmpmode, bool cmppar, uint8_t ul_high_value) +{ + Assert(ul_low_value <= ul_high_value); + + uint32_t temp = 0; + + if (cmpmode) { + temp |= US_CMPR_CMPMODE_START_CONDITION; + } + + if (cmppar) { + temp |= US_CMPR_CMPPAR; + } + + temp |= US_CMPR_VAL1(ul_low_value); + + temp |= US_CMPR_VAL2(ul_high_value); + + p_uart->US_CMPR= temp; +} +#endif + +//@} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h new file mode 100644 index 00000000..8b205fde --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h @@ -0,0 +1,773 @@ +/** + * \file + * + * \brief Universal Synchronous Asynchronous Receiver Transmitter (USART) driver + * for SAM. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef USART_H_INCLUDED +#define USART_H_INCLUDED + +#include "compiler.h" + +/** + * \defgroup group_sam_drivers_usart Universal Synchronous Asynchronous Receiver + * Transmitter (USART). + * + * See \ref sam_usart_quickstart. + * + * This is a low-level driver implementation for the SAM Universal + * Synchronous/Asynchronous Receiver/Transmitter. + * + * @{ + */ + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +/** Clock phase. */ +#define SPI_CPHA (1 << 0) + +/** Clock polarity. */ +#define SPI_CPOL (1 << 1) + +/** SPI mode definition. */ +#define SPI_MODE_0 0 +#define SPI_MODE_1 (SPI_CPHA) +#define SPI_MODE_2 (SPI_CPOL) +#define SPI_MODE_3 (SPI_CPOL | SPI_CPHA) + +/**micro definition for LIN mode of SAMV71*/ +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +#ifndef US_MR_USART_MODE_LIN_MASTER +#define US_MR_USART_MODE_LIN_MASTER 0x0A +#endif +#ifndef US_MR_USART_MODE_LIN_SLAVE +#define US_MR_USART_MODE_LIN_SLAVE 0x0B +#endif +#endif +/* Input parameters when initializing RS232 and similar modes. */ +typedef struct { + /* Set baud rate of the USART (unused in slave modes). */ + uint32_t baudrate; + + /* + * Number of bits, which should be one of the following: US_MR_CHRL_5_BIT, + * US_MR_CHRL_6_BIT, US_MR_CHRL_7_BIT, US_MR_CHRL_8_BIT or + * US_MR_MODE9. + */ + uint32_t char_length; + + /* + * Parity type, which should be one of the following: US_MR_PAR_EVEN, + * US_MR_PAR_ODD, US_MR_PAR_SPACE, US_MR_PAR_MARK, US_MR_PAR_NO + * or US_MR_PAR_MULTIDROP. + */ + uint32_t parity_type; + + /* + * Number of stop bits between two characters: US_MR_NBSTOP_1_BIT, + * US_MR_NBSTOP_1_5_BIT, US_MR_NBSTOP_2_BIT. + * \note US_MR_NBSTOP_1_5_BIT is supported in asynchronous modes only. + */ + uint32_t stop_bits; + + /* + * Run the channel in test mode, which should be one of following: + * US_MR_CHMODE_NORMAL, US_MR_CHMODE_AUTOMATIC, + * US_MR_CHMODE_LOCAL_LOOPBACK, US_MR_CHMODE_REMOTE_LOOPBACK. + */ + uint32_t channel_mode; + + /* Filter of IrDA mode, useless in other modes. */ + uint32_t irda_filter; +} sam_usart_opt_t; + +/* Input parameters when initializing ISO7816 mode. */ +typedef struct { + /* Set the frequency of the ISO7816 clock. */ + uint32_t iso7816_hz; + + /* + * The number of ISO7816 clock ticks in every bit period (1 to 2047, + * 0 = disable clock). Baudrate rate = iso7816_hz / fidi_ratio. + */ + uint32_t fidi_ratio; + + /* + * How to calculate the parity bit: US_MR_PAR_EVEN for normal mode or + * US_MR_PAR_ODD for inverse mode. + */ + uint32_t parity_type; + + /* + * Inhibit Non Acknowledge: + * - 0: the NACK is generated; + * - 1: the NACK is not generated. + * + * \note This bit will be used only in ISO7816 mode, protocol T = 0 + * receiver. + */ + uint32_t inhibit_nack; + + /* + * Disable successive NACKs. + * - 0: NACK is sent on the ISO line as soon as a parity error occurs + * in the received character. Successive parity errors are counted up to + * the value in the max_iterations field. These parity errors generate + * a NACK on the ISO line. As soon as this value is reached, no additional + * NACK is sent on the ISO line. The ITERATION flag is asserted. + */ + uint32_t dis_suc_nack; + + /* Max number of repetitions (0 to 7). */ + uint32_t max_iterations; + + /* + * Bit order in transmitted characters: + * - 0: LSB first; + * - 1: MSB first. + */ + uint32_t bit_order; + + /* + * Which protocol is used: + * - 0: T = 0; + * - 1: T = 1. + */ + uint32_t protocol_type; +} usart_iso7816_opt_t; + +/* Input parameters when initializing SPI mode. */ +typedef struct { + /* Set the frequency of the SPI clock (unused in slave mode). */ + uint32_t baudrate; + + /* + * Number of bits, which should be one of the following: US_MR_CHRL_5_BIT, + * US_MR_CHRL_6_BIT, US_MR_CHRL_7_BIT, US_MR_CHRL_8_BIT or + * US_MR_MODE9. + */ + uint32_t char_length; + + /* + * Which SPI mode to use, which should be one of the following: + * SPI_MODE_0, SPI_MODE_1, SPI_MODE_2, SPI_MODE_3. + */ + uint32_t spi_mode; + + /* + * Run the channel in test mode, which should be one of following: + * US_MR_CHMODE_NORMAL, US_MR_CHMODE_AUTOMATIC, + * US_MR_CHMODE_LOCAL_LOOPBACK, US_MR_CHMODE_REMOTE_LOOPBACK. + */ + uint32_t channel_mode; +} usart_spi_opt_t; + +void usart_reset(Usart *p_usart); +uint32_t usart_set_async_baudrate(Usart *p_usart, + uint32_t baudrate, uint32_t ul_mck); +uint32_t usart_init_rs232(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck); +uint32_t usart_init_hw_handshaking(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck); +#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E) +uint32_t usart_init_modem(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck); +#endif +uint32_t usart_init_sync_master(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck); +uint32_t usart_init_sync_slave(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt); +uint32_t usart_init_rs485(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck); +#if (!SAMG55 && !SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +uint32_t usart_init_irda(Usart *p_usart, + const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck); +#endif +#if (!SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +uint32_t usart_init_iso7816(Usart *p_usart, + const usart_iso7816_opt_t *p_usart_opt, uint32_t ul_mck); +void usart_reset_iterations(Usart *p_usart); +void usart_reset_nack(Usart *p_usart); +uint32_t usart_is_rx_buf_end(Usart *p_usart); +uint32_t usart_is_tx_buf_end(Usart *p_usart); +uint32_t usart_is_rx_buf_full(Usart *p_usart); +uint32_t usart_is_tx_buf_empty(Usart *p_usart); +uint8_t usart_get_error_number(Usart *p_usart); +#endif +uint32_t usart_init_spi_master(Usart *p_usart, + const usart_spi_opt_t *p_usart_opt, uint32_t ul_mck); +uint32_t usart_init_spi_slave(Usart *p_usart, + const usart_spi_opt_t *p_usart_opt); +#if (SAM3XA || SAM4L || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70) +uint32_t usart_init_lin_master(Usart *p_usart, uint32_t ul_baudrate, + uint32_t ul_mck); +uint32_t usart_init_lin_slave(Usart *p_usart, uint32_t ul_baudrate, + uint32_t ul_mck); +void usart_lin_abort_tx(Usart *p_usart); +void usart_lin_send_wakeup_signal(Usart *p_usart); +void usart_lin_set_node_action(Usart *p_usart, uint8_t uc_action); +void usart_lin_disable_parity(Usart *p_usart); +void usart_lin_enable_parity(Usart *p_usart); +void usart_lin_disable_checksum(Usart *p_usart); +void usart_lin_enable_checksum(Usart *p_usart); +void usart_lin_set_checksum_type(Usart *p_usart, uint8_t uc_type); +void usart_lin_set_data_len_mode(Usart *p_usart, uint8_t uc_mode); +void usart_lin_disable_frame_slot(Usart *p_usart); +void usart_lin_enable_frame_slot(Usart *p_usart); +void usart_lin_set_wakeup_signal_type(Usart *p_usart, uint8_t uc_type); +void usart_lin_set_response_data_len(Usart *p_usart, uint8_t uc_len); +void usart_lin_disable_pdc_mode(Usart *p_usart); +void usart_lin_enable_pdc_mode(Usart *p_usart); +void usart_lin_set_tx_identifier(Usart *p_usart, uint8_t uc_id); +uint8_t usart_lin_read_identifier(Usart *p_usart); +uint8_t usart_lin_get_data_length(Usart *usart); +#endif +#if (SAMV71 || SAMV70 || SAME70 || SAMS70) +uint8_t usart_lin_identifier_send_complete(Usart *usart); +uint8_t usart_lin_identifier_reception_complete(Usart *usart); +uint8_t usart_lin_tx_complete(Usart *usart); +uint32_t usart_init_lon(Usart *p_usart, uint32_t ul_baudrate, uint32_t ul_mck); +void usart_lon_set_comm_type(Usart *p_usart, uint8_t uc_type); +void usart_lon_disable_coll_detection(Usart *p_usart); +void usart_lon_enable_coll_detection(Usart *p_usart); +void usart_lon_set_tcol(Usart *p_usart, uint8_t uc_type); +void usart_lon_set_cdtail(Usart *p_usart, uint8_t uc_type); +void usart_lon_set_dmam(Usart *p_usart, uint8_t uc_type); +void usart_lon_set_beta1_tx_len(Usart *p_usart, uint32_t ul_len); +void usart_lon_set_beta1_rx_len(Usart *p_usart, uint32_t ul_len); +void usart_lon_set_priority(Usart *p_usart, uint8_t uc_psnb, uint8_t uc_nps); +void usart_lon_set_tx_idt(Usart *p_usart, uint32_t ul_time); +void usart_lon_set_rx_idt(Usart *p_usart, uint32_t ul_time); +void usart_lon_set_pre_len(Usart *p_usart, uint32_t ul_len); +void usart_lon_set_data_len(Usart *p_usart, uint8_t uc_len); +void usart_lon_set_l2hdr(Usart *p_usart, uint8_t uc_bli, uint8_t uc_altp, uint8_t uc_pb); +uint32_t usart_lon_is_tx_end(Usart *p_usart); +uint32_t usart_lon_is_rx_end(Usart *p_usart); +#endif +void usart_enable_tx(Usart *p_usart); +void usart_disable_tx(Usart *p_usart); +void usart_reset_tx(Usart *p_usart); +void usart_set_tx_timeguard(Usart *p_usart, uint32_t timeguard); +void usart_enable_rx(Usart *p_usart); +void usart_disable_rx(Usart *p_usart); +void usart_reset_rx(Usart *p_usart); +void usart_set_rx_timeout(Usart *p_usart, uint32_t timeout); +void usart_enable_interrupt(Usart *p_usart, uint32_t ul_sources); +void usart_disable_interrupt(Usart *p_usart, uint32_t ul_sources); +uint32_t usart_get_interrupt_mask(Usart *p_usart); +uint32_t usart_get_status(Usart *p_usart); +void usart_reset_status(Usart *p_usart); +void usart_start_tx_break(Usart *p_usart); +void usart_stop_tx_break(Usart *p_usart); +void usart_start_rx_timeout(Usart *p_usart); +uint32_t usart_send_address(Usart *p_usart, uint32_t ul_addr); +void usart_restart_rx_timeout(Usart *p_usart); +#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E) +void usart_drive_DTR_pin_low(Usart *p_usart); +void usart_drive_DTR_pin_high(Usart *p_usart); +#endif +void usart_drive_RTS_pin_low(Usart *p_usart); +void usart_drive_RTS_pin_high(Usart *p_usart); +void usart_spi_force_chip_select(Usart *p_usart); +void usart_spi_release_chip_select(Usart *p_usart); +uint32_t usart_is_tx_ready(Usart *p_usart); +uint32_t usart_is_tx_empty(Usart *p_usart); +uint32_t usart_is_rx_ready(Usart *p_usart); +uint32_t usart_write(Usart *p_usart, uint32_t c); +uint32_t usart_putchar(Usart *p_usart, uint32_t c); +void usart_write_line(Usart *p_usart, const char *string); +uint32_t usart_read(Usart *p_usart, uint32_t *c); +uint32_t usart_getchar(Usart *p_usart, uint32_t *c); +#if (SAM3XA || SAM3U) +uint32_t *usart_get_tx_access(Usart *p_usart); +uint32_t *usart_get_rx_access(Usart *p_usart); +#endif +#if (!SAM4L && !SAMV71 && !SAMV70 && !SAME70 && !SAMS70) +Pdc *usart_get_pdc_base(Usart *p_usart); +#endif +void usart_enable_writeprotect(Usart *p_usart); +void usart_disable_writeprotect(Usart *p_usart); +uint32_t usart_get_writeprotect_status(Usart *p_usart); +#if (SAM3S || SAM4S || SAM3U || SAM3XA || SAM4L || SAM4E || SAM4C || SAM4CP || SAM4CM || SAMV70 || SAMV71 || SAMS70 || SAME70) +void usart_man_set_tx_pre_len(Usart *p_usart, uint8_t uc_len); +void usart_man_set_tx_pre_pattern(Usart *p_usart, uint8_t uc_pattern); +void usart_man_set_tx_polarity(Usart *p_usart, uint8_t uc_polarity); +void usart_man_set_rx_pre_len(Usart *p_usart, uint8_t uc_len); +void usart_man_set_rx_pre_pattern(Usart *p_usart, uint8_t uc_pattern); +void usart_man_set_rx_polarity(Usart *p_usart, uint8_t uc_polarity); +void usart_man_enable_drift_compensation(Usart *p_usart); +void usart_man_disable_drift_compensation(Usart *p_usart); +#endif + +#if SAM4L +uint32_t usart_get_version(Usart *p_usart); +#endif + +#if SAMG55 +void usart_set_sleepwalking(Usart *p_uart, uint8_t ul_low_value, + bool cmpmode, bool cmppar, uint8_t ul_high_value); +#endif + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond + +//! @} + +/** + * \page sam_usart_quickstart Quick start guide for the SAM USART module + * + * This is the quick start guide for the \ref group_sam_drivers_usart + * "USART module", with step-by-step instructions on how to configure and + * use the driver in a selection of use cases. + * + * The use cases contain several code fragments. The code fragments in the + * steps for setup can be copied into a custom initialization function, while + * the steps for usage can be copied into, e.g., the main application function. + * + * \note Some SAM devices contain both USART and UART modules, with the latter + * being a subset in functionality of the former but physically separate + * peripherals. UART modules are compatible with the USART driver, but + * only for the functions and modes supported by the base UART driver. + * + * \section usart_use_cases USART use cases + * - \ref usart_basic_use_case + * - \subpage usart_use_case_1 + * - \subpage usart_use_case_2 + * + * \note The USART pins configuration are not included here. Please refer + * the related code in board_init() function. + * + * \section usart_basic_use_case Basic use case - transmit a character + * In this use case, the USART module is configured for: + * - Using USART0 + * - Baudrate: 9600 + * - Character length: 8 bit + * - Parity mode: Disabled + * - Stop bit: None + * - RS232 mode + * + * \section usart_basic_use_case_setup Setup steps + * + * \subsection usart_basic_use_case_setup_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (sysclock)" + * -# \ref ioport_group "Common IOPORT API (ioport)" + * + * \subsection usart_basic_use_case_setup_code Example code + * The following configuration must be added to the project (typically to a + * conf_usart.h file, but it can also be added to your main application file.) + * \code + #define USART_SERIAL USART0 + #define USART_SERIAL_ID ID_USART0 //USART0 for sam4l + #define USART_SERIAL_BAUDRATE 9600 + #define USART_SERIAL_CHAR_LENGTH US_MR_CHRL_8_BIT + #define USART_SERIAL_PARITY US_MR_PAR_NO + #define USART_SERIAL_STOP_BIT US_MR_NBSTOP_1_BIT +\endcode + * + * Add to application initialization: + * \code + sysclk_init(); + + board_init(); + + const sam_usart_opt_t usart_console_settings = { + USART_SERIAL_BAUDRATE, + USART_SERIAL_CHAR_LENGTH, + USART_SERIAL_PARITY, + USART_SERIAL_STOP_BIT, + US_MR_CHMODE_NORMAL + }; + #if SAM4L + sysclk_enable_peripheral_clock(USART_SERIAL); + #else + sysclk_enable_peripheral_clock(USART_SERIAL_ID); + #endif + usart_init_rs232(USART_SERIAL, &usart_console_settings, + sysclk_get_main_hz()); + usart_enable_tx(USART_SERIAL); + usart_enable_rx(USART_SERIAL); +\endcode + * + * \subsection usart_basic_use_case_setup_flow Workflow + * -# Initialize system clock: + * \code + sysclk_init(); +\endcode + * -# Configure the USART Tx and Rx pins by call the board init function: + * \code + board_init(); +\endcode + * \note Set the following define in conf_board.h file to enable COM port,it will be used in + * board_init() function to set up IOPorts for the USART pins. + * For SAM4L: + * \code + #define CONF_BOARD_COM_PORT +\endcode + * For other SAM devices: + * \code + #define CONF_BOARD_UART_CONSOLE +\endcode + * -# Create USART options struct: + * \code + const sam_usart_opt_t usart_console_settings = { + USART_SERIAL_BAUDRATE, + USART_SERIAL_CHAR_LENGTH, + USART_SERIAL_PARITY, + USART_SERIAL_STOP_BIT, + US_MR_CHMODE_NORMAL + }; +\endcode + * -# Enable the clock to the USART module: + * \code + #if SAM4L + sysclk_enable_peripheral_clock(USART_SERIAL); + #else + sysclk_enable_peripheral_clock(USART_SERIAL_ID); + #endif +\endcode + * -# Initialize the USART module in RS232 mode: + * \code + usart_init_rs232(USART_SERIAL, &usart_console_settings, + sysclk_get_main_hz()); +\endcode + * -# Enable the Rx and Tx modes of the USART module: + * \code + usart_enable_tx(USART_SERIAL); + usart_enable_rx(USART_SERIAL); +\endcode + * + * \section usart_basic_use_case_usage Usage steps + * + * \subsection usart_basic_use_case_usage_code Example code + * Add to application C-file: + * \code + usart_putchar(USART_SERIAL, 'a'); +\endcode + * + * \subsection usart_basic_use_case_usage_flow Workflow + * -# Send an 'a' character via USART + * \code usart_putchar(USART_SERIAL, 'a'); \endcode + */ + +/** + * \page usart_use_case_1 USART receive character and echo back + * + * In this use case, the USART module is configured for: + * - Using USART0 + * - Baudrate: 9600 + * - Character length: 8 bit + * - Parity mode: Disabled + * - Stop bit: None + * - RS232 mode + * + * The use case waits for a received character on the configured USART and + * echoes the character back to the same USART. + * + * \section usart_use_case_1_setup Setup steps + * + * \subsection usart_use_case_1_setup_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (sysclock)" + * -# \ref ioport_group "Common IOPORT API (ioport)" + * + * \subsection usart_use_case_1_setup_code Example code + * The following configuration must be added to the project (typically to a + * conf_usart.h file, but it can also be added to your main application file.): + * \code + #define USART_SERIAL USART0 + #define USART_SERIAL_ID ID_USART0 //USART0 for sam4l + #define USART_SERIAL_BAUDRATE 9600 + #define USART_SERIAL_CHAR_LENGTH US_MR_CHRL_8_BIT + #define USART_SERIAL_PARITY US_MR_PAR_NO + #define USART_SERIAL_STOP_BIT US_MR_NBSTOP_1_BIT +\endcode + * + * A variable for the received byte must be added: + * \code + uint32_t received_byte; +\endcode + * + * Add to application initialization: + * \code + sysclk_init(); + + board_init(); + + const sam_usart_opt_t usart_console_settings = { + USART_SERIAL_BAUDRATE, + USART_SERIAL_CHAR_LENGTH, + USART_SERIAL_PARITY, + USART_SERIAL_STOP_BIT, + US_MR_CHMODE_NORMAL + }; + + #if SAM4L + sysclk_enable_peripheral_clock(USART_SERIAL); + #else + sysclk_enable_peripheral_clock(USART_SERIAL_ID); + #endif + + usart_init_rs232(USART_SERIAL, &usart_console_settings, + sysclk_get_main_hz()); + usart_enable_tx(USART_SERIAL); + usart_enable_rx(USART_SERIAL); +\endcode + * + * \subsection usart_use_case_1_setup_flow Workflow + * -# Initialize system clock: + * \code + sysclk_init(); +\endcode + * -# Configure the USART Tx and Rx pins by call the board init function: + * \code + board_init(); +\endcode + * \note Set the following define in conf_board.h file to enable COM port,it will be used in + * board_init() function to set up IOPorts for the USART pins. + * For SAM4L: + * \code + #define CONF_BOARD_COM_PORT +\endcode + * For other SAM devices: + * \code + #define CONF_BOARD_UART_CONSOLE +\endcode + * -# Create USART options struct: + * \code + const sam_usart_opt_t usart_console_settings = { + USART_SERIAL_BAUDRATE, + USART_SERIAL_CHAR_LENGTH, + USART_SERIAL_PARITY, + USART_SERIAL_STOP_BIT, + US_MR_CHMODE_NORMAL + }; +\endcode + * -# Enable the clock to the USART module: + * \code + #if SAM4L + sysclk_enable_peripheral_clock(USART_SERIAL); + #else + sysclk_enable_peripheral_clock(USART_SERIAL_ID); + #endif +\endcode + * -# Initialize the USART module in RS232 mode: + * \code + usart_init_rs232(USART_SERIAL, &usart_console_settings, + sysclk_get_main_hz()); +\endcode + * -# Enable the Rx and Tx modes of the USART module: + * \code + usart_enable_tx(USART_SERIAL); + usart_enable_rx(USART_SERIAL); +\endcode + * + * \section usart_use_case_1_usage Usage steps + * + * \subsection usart_use_case_1_usage_code Example code + * Add to, e.g., main loop in application C-file: + * \code + received_byte = usart_getchar(USART_SERIAL); + usart_putchar(USART_SERIAL, received_byte); +\endcode + * + * \subsection usart_use_case_1_usage_flow Workflow + * -# Wait for reception of a character: + * \code usart_getchar(USART_SERIAL, &received_byte); \endcode + * -# Echo the character back: + * \code usart_putchar(USART_SERIAL, received_byte); \endcode + */ + +/** + * \page usart_use_case_2 USART receive character and echo back via interrupts + * + * In this use case, the USART module is configured for: + * - Using USART0 + * - Baudrate: 9600 + * - Character length: 8 bit + * - Parity mode: Disabled + * - Stop bit: None + * - RS232 mode + * + * The use case waits for a received character on the configured USART and + * echoes the character back to the same USART. The character reception is + * performed via an interrupt handler, rather than the polling method used + * in \ref usart_use_case_1. + * + * \section usart_use_case_2_setup Setup steps + * + * \subsection usart_use_case_2_setup_prereq Prerequisites + * -# \ref sysclk_group "System Clock Management (sysclock)" + * -# \ref pio_group "Parallel Input/Output Controller (pio)" + * -# \ref pmc_group "Power Management Controller (pmc)" + * + * \subsection usart_use_case_2_setup_code Example code + * The following configuration must be added to the project (typically to a + * conf_usart.h file, but it can also be added to your main application file.): + * \code + #define USART_SERIAL USART0 + #define USART_SERIAL_ID ID_USART0 //USART0 for sam4l + #define USART_SERIAL_ISR_HANDLER USART0_Handler + #define USART_SERIAL_BAUDRATE 9600 + #define USART_SERIAL_CHAR_LENGTH US_MR_CHRL_8_BIT + #define USART_SERIAL_PARITY US_MR_PAR_NO + #define USART_SERIAL_STOP_BIT US_MR_NBSTOP_1_BIT +\endcode + * + * A variable for the received byte must be added: + * \code + uint32_t received_byte; +\endcode + * + * Add to application initialization: + * \code + sysclk_init(); + + board_init(); + + const sam_usart_opt_t usart_console_settings = { + USART_SERIAL_BAUDRATE, + USART_SERIAL_CHAR_LENGTH, + USART_SERIAL_PARITY, + USART_SERIAL_STOP_BIT, + US_MR_CHMODE_NORMAL + }; + + #if SAM4L + sysclk_enable_peripheral_clock(USART_SERIAL); + #else + sysclk_enable_peripheral_clock(USART_SERIAL_ID); + #endif + + usart_init_rs232(USART_SERIAL, &usart_console_settings, + sysclk_get_main_hz()); + usart_enable_tx(USART_SERIAL); + usart_enable_rx(USART_SERIAL); + + usart_enable_interrupt(USART_SERIAL, US_IER_RXRDY); + NVIC_EnableIRQ(USART_SERIAL_IRQ); +\endcode + * + * \subsection usart_use_case_2_setup_flow Workflow + * -# Initialize system clock: + * \code + sysclk_init(); +\endcode + * -# Configure the USART Tx and Rx pins by call the board init function: + * \code + board_init(); +\endcode + * \note Set the following define in conf_board.h file to enable COM port,it will be used in + * board_init() function to set up IOPorts for the USART pins. + * For SAM4L: + * \code + #define CONF_BOARD_COM_PORT +\endcode + * For other SAM devices: + * \code + #define CONF_BOARD_UART_CONSOLE +\endcode + * -# Create USART options struct: + * \code + const sam_usart_opt_t usart_console_settings = { + USART_SERIAL_BAUDRATE, + USART_SERIAL_CHAR_LENGTH, + USART_SERIAL_PARITY, + USART_SERIAL_STOP_BIT, + US_MR_CHMODE_NORMAL + }; +\endcode + * -# Enable the clock to the USART module: + * \code + #if SAM4L + sysclk_enable_peripheral_clock(USART_SERIAL); + #else + sysclk_enable_peripheral_clock(USART_SERIAL_ID); + #endif +\endcode + * -# Initialize the USART module in RS232 mode: + * \code + usart_init_rs232(USART_SERIAL, &usart_console_settings, + sysclk_get_main_hz()); +\endcode + * -# Enable the Rx and Tx modes of the USART module: + * \code + usart_enable_tx(USART_SERIAL); + usart_enable_rx(USART_SERIAL); +\endcode + * -# Enable the USART character reception interrupt, and general interrupts + * for the USART module. + * \code + usart_enable_interrupt(USART_SERIAL, US_IER_RXRDY); + NVIC_EnableIRQ(USART_SERIAL_IRQ); +\endcode + * \section usart_use_case_2_usage Usage steps + * + * \subsection usart_use_case_2_usage_code Example code + * Add to your main application C-file the USART interrupt handler: + * \code + void USART_SERIAL_ISR_HANDLER(void) + { + uint32_t dw_status = usart_get_status(USART_SERIAL); + + if (dw_status & US_CSR_RXRDY) { + uint32_t received_byte; + + usart_read(USART_SERIAL, &received_byte); + usart_write(USART_SERIAL, received_byte); + } + } +\endcode + * + * \subsection usart_use_case_2_usage_flow Workflow + * -# When the USART ISR fires, retrieve the USART module interrupt flags: + * \code uint32_t dw_status = usart_get_status(USART_SERIAL); \endcode + * -# Check if the USART Receive Character interrupt has fired: + * \code if (dw_status & US_CSR_RXRDY) \endcode + * -# If a character has been received, fetch it into a temporary variable: + * \code usart_read(USART_SERIAL, &received_byte); \endcode + * -# Echo the character back: + * \code usart_write(USART_SERIAL, received_byte); \endcode + */ + +#endif /* USART_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h new file mode 100644 index 00000000..741aacfe --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h @@ -0,0 +1,141 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_ACC_COMPONENT_ +#define _SAME70_ACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog Comparator Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_ACC Analog Comparator Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Acc hardware registers */ +typedef struct { + __O uint32_t ACC_CR; /**< \brief (Acc Offset: 0x00) Control Register */ + __IO uint32_t ACC_MR; /**< \brief (Acc Offset: 0x04) Mode Register */ + __I uint32_t Reserved1[7]; + __O uint32_t ACC_IER; /**< \brief (Acc Offset: 0x24) Interrupt Enable Register */ + __O uint32_t ACC_IDR; /**< \brief (Acc Offset: 0x28) Interrupt Disable Register */ + __I uint32_t ACC_IMR; /**< \brief (Acc Offset: 0x2C) Interrupt Mask Register */ + __I uint32_t ACC_ISR; /**< \brief (Acc Offset: 0x30) Interrupt Status Register */ + __I uint32_t Reserved2[24]; + __IO uint32_t ACC_ACR; /**< \brief (Acc Offset: 0x94) Analog Control Register */ + __I uint32_t Reserved3[19]; + __IO uint32_t ACC_WPMR; /**< \brief (Acc Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t ACC_WPSR; /**< \brief (Acc Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved4[4]; + __I uint32_t ACC_VER; /**< \brief (Acc Offset: 0xFC) Version Register */ +} Acc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- ACC_CR : (ACC Offset: 0x00) Control Register -------- */ +#define ACC_CR_SWRST (0x1u << 0) /**< \brief (ACC_CR) Software Reset */ +/* -------- ACC_MR : (ACC Offset: 0x04) Mode Register -------- */ +#define ACC_MR_SELMINUS_Pos 0 +#define ACC_MR_SELMINUS_Msk (0x7u << ACC_MR_SELMINUS_Pos) /**< \brief (ACC_MR) Selection for Minus Comparator Input */ +#define ACC_MR_SELMINUS(value) ((ACC_MR_SELMINUS_Msk & ((value) << ACC_MR_SELMINUS_Pos))) +#define ACC_MR_SELMINUS_TS (0x0u << 0) /**< \brief (ACC_MR) Select TS */ +#define ACC_MR_SELMINUS_ADVREFP (0x1u << 0) /**< \brief (ACC_MR) Select ADVREFP */ +#define ACC_MR_SELMINUS_VREFP (0x1u << 0) /**< \brief (ACC_MR) Select VREFP */ +#define ACC_MR_SELMINUS_DAC0 (0x2u << 0) /**< \brief (ACC_MR) Select DAC0 */ +#define ACC_MR_SELMINUS_DAC1 (0x3u << 0) /**< \brief (ACC_MR) Select DAC1 */ +#define ACC_MR_SELMINUS_AFE0_AD0 (0x4u << 0) /**< \brief (ACC_MR) Select AFE0_AD0 */ +#define ACC_MR_SELMINUS_AFE0_AD1 (0x5u << 0) /**< \brief (ACC_MR) Select AFE0_AD1 */ +#define ACC_MR_SELMINUS_AFE0_AD2 (0x6u << 0) /**< \brief (ACC_MR) Select AFE0_AD2 */ +#define ACC_MR_SELMINUS_AFE0_AD3 (0x7u << 0) /**< \brief (ACC_MR) Select AFE0_AD3 */ +#define ACC_MR_SELPLUS_Pos 4 +#define ACC_MR_SELPLUS_Msk (0x7u << ACC_MR_SELPLUS_Pos) /**< \brief (ACC_MR) Selection For Plus Comparator Input */ +#define ACC_MR_SELPLUS(value) ((ACC_MR_SELPLUS_Msk & ((value) << ACC_MR_SELPLUS_Pos))) +#define ACC_MR_SELPLUS_AFE0_AD0 (0x0u << 4) /**< \brief (ACC_MR) Select AFE0_AD0 */ +#define ACC_MR_SELPLUS_AFE0_AD1 (0x1u << 4) /**< \brief (ACC_MR) Select AFE0_AD1 */ +#define ACC_MR_SELPLUS_AFE0_AD2 (0x2u << 4) /**< \brief (ACC_MR) Select AFE0_AD2 */ +#define ACC_MR_SELPLUS_AFE0_AD3 (0x3u << 4) /**< \brief (ACC_MR) Select AFE0_AD3 */ +#define ACC_MR_SELPLUS_AFE0_AD4 (0x4u << 4) /**< \brief (ACC_MR) Select AFE0_AD4 */ +#define ACC_MR_SELPLUS_AFE0_AD5 (0x5u << 4) /**< \brief (ACC_MR) Select AFE0_AD5 */ +#define ACC_MR_SELPLUS_AFE1_AD0 (0x6u << 4) /**< \brief (ACC_MR) Select AFE1_AD0 */ +#define ACC_MR_SELPLUS_AFE1_AD1 (0x7u << 4) /**< \brief (ACC_MR) Select AFE1_AD1 */ +#define ACC_MR_ACEN (0x1u << 8) /**< \brief (ACC_MR) Analog Comparator Enable */ +#define ACC_MR_ACEN_DIS (0x0u << 8) /**< \brief (ACC_MR) Analog comparator disabled. */ +#define ACC_MR_ACEN_EN (0x1u << 8) /**< \brief (ACC_MR) Analog comparator enabled. */ +#define ACC_MR_EDGETYP_Pos 9 +#define ACC_MR_EDGETYP_Msk (0x3u << ACC_MR_EDGETYP_Pos) /**< \brief (ACC_MR) Edge Type */ +#define ACC_MR_EDGETYP(value) ((ACC_MR_EDGETYP_Msk & ((value) << ACC_MR_EDGETYP_Pos))) +#define ACC_MR_EDGETYP_RISING (0x0u << 9) /**< \brief (ACC_MR) Only rising edge of comparator output */ +#define ACC_MR_EDGETYP_FALLING (0x1u << 9) /**< \brief (ACC_MR) Falling edge of comparator output */ +#define ACC_MR_EDGETYP_ANY (0x2u << 9) /**< \brief (ACC_MR) Any edge of comparator output */ +#define ACC_MR_INV (0x1u << 12) /**< \brief (ACC_MR) Invert Comparator Output */ +#define ACC_MR_INV_DIS (0x0u << 12) /**< \brief (ACC_MR) Analog comparator output is directly processed. */ +#define ACC_MR_INV_EN (0x1u << 12) /**< \brief (ACC_MR) Analog comparator output is inverted prior to being processed. */ +#define ACC_MR_SELFS (0x1u << 13) /**< \brief (ACC_MR) Selection Of Fault Source */ +#define ACC_MR_SELFS_CE (0x0u << 13) /**< \brief (ACC_MR) The CE flag is used to drive the FAULT output. */ +#define ACC_MR_SELFS_OUTPUT (0x1u << 13) /**< \brief (ACC_MR) The output of the analog comparator flag is used to drive the FAULT output. */ +#define ACC_MR_FE (0x1u << 14) /**< \brief (ACC_MR) Fault Enable */ +#define ACC_MR_FE_DIS (0x0u << 14) /**< \brief (ACC_MR) The FAULT output is tied to 0. */ +#define ACC_MR_FE_EN (0x1u << 14) /**< \brief (ACC_MR) The FAULT output is driven by the signal defined by SELFS. */ +/* -------- ACC_IER : (ACC Offset: 0x24) Interrupt Enable Register -------- */ +#define ACC_IER_CE (0x1u << 0) /**< \brief (ACC_IER) Comparison Edge */ +/* -------- ACC_IDR : (ACC Offset: 0x28) Interrupt Disable Register -------- */ +#define ACC_IDR_CE (0x1u << 0) /**< \brief (ACC_IDR) Comparison Edge */ +/* -------- ACC_IMR : (ACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define ACC_IMR_CE (0x1u << 0) /**< \brief (ACC_IMR) Comparison Edge */ +/* -------- ACC_ISR : (ACC Offset: 0x30) Interrupt Status Register -------- */ +#define ACC_ISR_CE (0x1u << 0) /**< \brief (ACC_ISR) Comparison Edge (cleared on read) */ +#define ACC_ISR_SCO (0x1u << 1) /**< \brief (ACC_ISR) Synchronized Comparator Output */ +#define ACC_ISR_MASK (0x1u << 31) /**< \brief (ACC_ISR) Flag Mask */ +/* -------- ACC_ACR : (ACC Offset: 0x94) Analog Control Register -------- */ +#define ACC_ACR_ISEL (0x1u << 0) /**< \brief (ACC_ACR) Current Selection */ +#define ACC_ACR_ISEL_LOPW (0x0u << 0) /**< \brief (ACC_ACR) Low-power option. */ +#define ACC_ACR_ISEL_HISP (0x1u << 0) /**< \brief (ACC_ACR) High-speed option. */ +#define ACC_ACR_HYST_Pos 1 +#define ACC_ACR_HYST_Msk (0x3u << ACC_ACR_HYST_Pos) /**< \brief (ACC_ACR) Hysteresis Selection */ +#define ACC_ACR_HYST(value) ((ACC_ACR_HYST_Msk & ((value) << ACC_ACR_HYST_Pos))) +/* -------- ACC_WPMR : (ACC Offset: 0xE4) Write Protection Mode Register -------- */ +#define ACC_WPMR_WPEN (0x1u << 0) /**< \brief (ACC_WPMR) Write Protection Enable */ +#define ACC_WPMR_WPKEY_Pos 8 +#define ACC_WPMR_WPKEY_Msk (0xffffffu << ACC_WPMR_WPKEY_Pos) /**< \brief (ACC_WPMR) Write Protection Key */ +#define ACC_WPMR_WPKEY(value) ((ACC_WPMR_WPKEY_Msk & ((value) << ACC_WPMR_WPKEY_Pos))) +#define ACC_WPMR_WPKEY_PASSWD (0x414343u << 8) /**< \brief (ACC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- ACC_WPSR : (ACC Offset: 0xE8) Write Protection Status Register -------- */ +#define ACC_WPSR_WPVS (0x1u << 0) /**< \brief (ACC_WPSR) Write Protection Violation Status */ +/* -------- ACC_VER : (ACC Offset: 0xFC) Version Register -------- */ +#define ACC_VER_VERSION_Pos 0 +#define ACC_VER_VERSION_Msk (0xfffu << ACC_VER_VERSION_Pos) /**< \brief (ACC_VER) Version of the Hardware Module */ +#define ACC_VER_MFN_Pos 16 +#define ACC_VER_MFN_Msk (0x7u << ACC_VER_MFN_Pos) /**< \brief (ACC_VER) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_ACC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h new file mode 100644 index 00000000..5a53659e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h @@ -0,0 +1,203 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_AES_COMPONENT_ +#define _SAME70_AES_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Advanced Encryption Standard */ +/* ============================================================================= */ +/** \addtogroup SAME70_AES Advanced Encryption Standard */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Aes hardware registers */ +typedef struct { + __O uint32_t AES_CR; /**< \brief (Aes Offset: 0x00) Control Register */ + __IO uint32_t AES_MR; /**< \brief (Aes Offset: 0x04) Mode Register */ + __I uint32_t Reserved1[2]; + __O uint32_t AES_IER; /**< \brief (Aes Offset: 0x10) Interrupt Enable Register */ + __O uint32_t AES_IDR; /**< \brief (Aes Offset: 0x14) Interrupt Disable Register */ + __I uint32_t AES_IMR; /**< \brief (Aes Offset: 0x18) Interrupt Mask Register */ + __I uint32_t AES_ISR; /**< \brief (Aes Offset: 0x1C) Interrupt Status Register */ + __O uint32_t AES_KEYWR[8]; /**< \brief (Aes Offset: 0x20) Key Word Register */ + __O uint32_t AES_IDATAR[4]; /**< \brief (Aes Offset: 0x40) Input Data Register */ + __I uint32_t AES_ODATAR[4]; /**< \brief (Aes Offset: 0x50) Output Data Register */ + __O uint32_t AES_IVR[4]; /**< \brief (Aes Offset: 0x60) Initialization Vector Register */ + __IO uint32_t AES_AADLENR; /**< \brief (Aes Offset: 0x70) Additional Authenticated Data Length Register */ + __IO uint32_t AES_CLENR; /**< \brief (Aes Offset: 0x74) Plaintext/Ciphertext Length Register */ + __IO uint32_t AES_GHASHR[4]; /**< \brief (Aes Offset: 0x78) GCM Intermediate Hash Word Register */ + __I uint32_t AES_TAGR[4]; /**< \brief (Aes Offset: 0x88) GCM Authentication Tag Word Register */ + __I uint32_t AES_CTRR; /**< \brief (Aes Offset: 0x98) GCM Encryption Counter Value Register */ + __IO uint32_t AES_GCMHR[4]; /**< \brief (Aes Offset: 0x9C) GCM H Word Register */ + __I uint32_t Reserved2[20]; + __I uint32_t AES_VERSION; /**< \brief (Aes Offset: 0xFC) Version Register */ +} Aes; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- AES_CR : (AES Offset: 0x00) Control Register -------- */ +#define AES_CR_START (0x1u << 0) /**< \brief (AES_CR) Start Processing */ +#define AES_CR_SWRST (0x1u << 8) /**< \brief (AES_CR) Software Reset */ +#define AES_CR_LOADSEED (0x1u << 16) /**< \brief (AES_CR) Random Number Generator Seed Loading */ +/* -------- AES_MR : (AES Offset: 0x04) Mode Register -------- */ +#define AES_MR_CIPHER (0x1u << 0) /**< \brief (AES_MR) Processing Mode */ +#define AES_MR_GTAGEN (0x1u << 1) /**< \brief (AES_MR) GCM Automatic Tag Generation Enable */ +#define AES_MR_DUALBUFF (0x1u << 3) /**< \brief (AES_MR) Dual Input Buffer */ +#define AES_MR_DUALBUFF_INACTIVE (0x0u << 3) /**< \brief (AES_MR) AES_IDATARx cannot be written during processing of previous block. */ +#define AES_MR_DUALBUFF_ACTIVE (0x1u << 3) /**< \brief (AES_MR) AES_IDATARx can be written during processing of previous block when SMOD = 0x2. It speeds up the overall runtime of large files. */ +#define AES_MR_PROCDLY_Pos 4 +#define AES_MR_PROCDLY_Msk (0xfu << AES_MR_PROCDLY_Pos) /**< \brief (AES_MR) Processing Delay */ +#define AES_MR_PROCDLY(value) ((AES_MR_PROCDLY_Msk & ((value) << AES_MR_PROCDLY_Pos))) +#define AES_MR_SMOD_Pos 8 +#define AES_MR_SMOD_Msk (0x3u << AES_MR_SMOD_Pos) /**< \brief (AES_MR) Start Mode */ +#define AES_MR_SMOD(value) ((AES_MR_SMOD_Msk & ((value) << AES_MR_SMOD_Pos))) +#define AES_MR_SMOD_MANUAL_START (0x0u << 8) /**< \brief (AES_MR) Manual Mode */ +#define AES_MR_SMOD_AUTO_START (0x1u << 8) /**< \brief (AES_MR) Auto Mode */ +#define AES_MR_SMOD_IDATAR0_START (0x2u << 8) /**< \brief (AES_MR) AES_IDATAR0 access only Auto Mode (DMA) */ +#define AES_MR_KEYSIZE_Pos 10 +#define AES_MR_KEYSIZE_Msk (0x3u << AES_MR_KEYSIZE_Pos) /**< \brief (AES_MR) Key Size */ +#define AES_MR_KEYSIZE(value) ((AES_MR_KEYSIZE_Msk & ((value) << AES_MR_KEYSIZE_Pos))) +#define AES_MR_KEYSIZE_AES128 (0x0u << 10) /**< \brief (AES_MR) AES Key Size is 128 bits */ +#define AES_MR_KEYSIZE_AES192 (0x1u << 10) /**< \brief (AES_MR) AES Key Size is 192 bits */ +#define AES_MR_KEYSIZE_AES256 (0x2u << 10) /**< \brief (AES_MR) AES Key Size is 256 bits */ +#define AES_MR_OPMOD_Pos 12 +#define AES_MR_OPMOD_Msk (0x7u << AES_MR_OPMOD_Pos) /**< \brief (AES_MR) Operation Mode */ +#define AES_MR_OPMOD(value) ((AES_MR_OPMOD_Msk & ((value) << AES_MR_OPMOD_Pos))) +#define AES_MR_OPMOD_ECB (0x0u << 12) /**< \brief (AES_MR) ECB: Electronic Code Book mode */ +#define AES_MR_OPMOD_CBC (0x1u << 12) /**< \brief (AES_MR) CBC: Cipher Block Chaining mode */ +#define AES_MR_OPMOD_OFB (0x2u << 12) /**< \brief (AES_MR) OFB: Output Feedback mode */ +#define AES_MR_OPMOD_CFB (0x3u << 12) /**< \brief (AES_MR) CFB: Cipher Feedback mode */ +#define AES_MR_OPMOD_CTR (0x4u << 12) /**< \brief (AES_MR) CTR: Counter mode (16-bit internal counter) */ +#define AES_MR_OPMOD_GCM (0x5u << 12) /**< \brief (AES_MR) GCM: Galois/Counter mode */ +#define AES_MR_LOD (0x1u << 15) /**< \brief (AES_MR) Last Output Data Mode */ +#define AES_MR_CFBS_Pos 16 +#define AES_MR_CFBS_Msk (0x7u << AES_MR_CFBS_Pos) /**< \brief (AES_MR) Cipher Feedback Data Size */ +#define AES_MR_CFBS(value) ((AES_MR_CFBS_Msk & ((value) << AES_MR_CFBS_Pos))) +#define AES_MR_CFBS_SIZE_128BIT (0x0u << 16) /**< \brief (AES_MR) 128-bit */ +#define AES_MR_CFBS_SIZE_64BIT (0x1u << 16) /**< \brief (AES_MR) 64-bit */ +#define AES_MR_CFBS_SIZE_32BIT (0x2u << 16) /**< \brief (AES_MR) 32-bit */ +#define AES_MR_CFBS_SIZE_16BIT (0x3u << 16) /**< \brief (AES_MR) 16-bit */ +#define AES_MR_CFBS_SIZE_8BIT (0x4u << 16) /**< \brief (AES_MR) 8-bit */ +#define AES_MR_CKEY_Pos 20 +#define AES_MR_CKEY_Msk (0xfu << AES_MR_CKEY_Pos) /**< \brief (AES_MR) Key */ +#define AES_MR_CKEY(value) ((AES_MR_CKEY_Msk & ((value) << AES_MR_CKEY_Pos))) +#define AES_MR_CKEY_PASSWD (0xEu << 20) /**< \brief (AES_MR) This field must be written with 0xE to allow CMTYPx bit configuration changes. Any other values will abort the write operation in CMTYPx bits.Always reads as 0. */ +#define AES_MR_CMTYP1 (0x1u << 24) /**< \brief (AES_MR) Countermeasure Type 1 */ +#define AES_MR_CMTYP1_NOPROT_EXTKEY (0x0u << 24) /**< \brief (AES_MR) Countermeasure type 1 is disabled. */ +#define AES_MR_CMTYP1_PROT_EXTKEY (0x1u << 24) /**< \brief (AES_MR) Countermeasure type 1 is enabled. */ +#define AES_MR_CMTYP2 (0x1u << 25) /**< \brief (AES_MR) Countermeasure Type 2 */ +#define AES_MR_CMTYP2_NO_PAUSE (0x0u << 25) /**< \brief (AES_MR) Countermeasure type 2 is disabled. */ +#define AES_MR_CMTYP2_PAUSE (0x1u << 25) /**< \brief (AES_MR) Countermeasure type 2 is enabled. */ +#define AES_MR_CMTYP3 (0x1u << 26) /**< \brief (AES_MR) Countermeasure Type 3 */ +#define AES_MR_CMTYP3_NO_DUMMY (0x0u << 26) /**< \brief (AES_MR) Countermeasure type 3 is disabled. */ +#define AES_MR_CMTYP3_DUMMY (0x1u << 26) /**< \brief (AES_MR) Countermeasure type 3 is enabled. */ +#define AES_MR_CMTYP4 (0x1u << 27) /**< \brief (AES_MR) Countermeasure Type 4 */ +#define AES_MR_CMTYP4_NO_RESTART (0x0u << 27) /**< \brief (AES_MR) Countermeasure type 4 is disabled. */ +#define AES_MR_CMTYP4_RESTART (0x1u << 27) /**< \brief (AES_MR) Countermeasure type 4 is enabled. */ +#define AES_MR_CMTYP5 (0x1u << 28) /**< \brief (AES_MR) Countermeasure Type 5 */ +#define AES_MR_CMTYP5_NO_ADDACCESS (0x0u << 28) /**< \brief (AES_MR) Countermeasure type 5 is disabled. */ +#define AES_MR_CMTYP5_ADDACCESS (0x1u << 28) /**< \brief (AES_MR) Countermeasure type 5 is enabled. */ +#define AES_MR_CMTYP6 (0x1u << 29) /**< \brief (AES_MR) Countermeasure Type 6 */ +#define AES_MR_CMTYP6_NO_IDLECURRENT (0x0u << 29) /**< \brief (AES_MR) Countermeasure type 6 is disabled. */ +#define AES_MR_CMTYP6_IDLECURRENT (0x1u << 29) /**< \brief (AES_MR) Countermeasure type 6 is enabled. */ +/* -------- AES_IER : (AES Offset: 0x10) Interrupt Enable Register -------- */ +#define AES_IER_DATRDY (0x1u << 0) /**< \brief (AES_IER) Data Ready Interrupt Enable */ +#define AES_IER_URAD (0x1u << 8) /**< \brief (AES_IER) Unspecified Register Access Detection Interrupt Enable */ +#define AES_IER_TAGRDY (0x1u << 16) /**< \brief (AES_IER) GCM Tag Ready Interrupt Enable */ +/* -------- AES_IDR : (AES Offset: 0x14) Interrupt Disable Register -------- */ +#define AES_IDR_DATRDY (0x1u << 0) /**< \brief (AES_IDR) Data Ready Interrupt Disable */ +#define AES_IDR_URAD (0x1u << 8) /**< \brief (AES_IDR) Unspecified Register Access Detection Interrupt Disable */ +#define AES_IDR_TAGRDY (0x1u << 16) /**< \brief (AES_IDR) GCM Tag Ready Interrupt Disable */ +/* -------- AES_IMR : (AES Offset: 0x18) Interrupt Mask Register -------- */ +#define AES_IMR_DATRDY (0x1u << 0) /**< \brief (AES_IMR) Data Ready Interrupt Mask */ +#define AES_IMR_URAD (0x1u << 8) /**< \brief (AES_IMR) Unspecified Register Access Detection Interrupt Mask */ +#define AES_IMR_TAGRDY (0x1u << 16) /**< \brief (AES_IMR) GCM Tag Ready Interrupt Mask */ +/* -------- AES_ISR : (AES Offset: 0x1C) Interrupt Status Register -------- */ +#define AES_ISR_DATRDY (0x1u << 0) /**< \brief (AES_ISR) Data Ready (cleared by setting bit START or bit SWRST in AES_CR or by reading AES_ODATARx) */ +#define AES_ISR_URAD (0x1u << 8) /**< \brief (AES_ISR) Unspecified Register Access Detection Status (cleared by writing SWRST in AES_CR) */ +#define AES_ISR_URAT_Pos 12 +#define AES_ISR_URAT_Msk (0xfu << AES_ISR_URAT_Pos) /**< \brief (AES_ISR) Unspecified Register Access (cleared by writing SWRST in AES_CR) */ +#define AES_ISR_URAT_IDR_WR_PROCESSING (0x0u << 12) /**< \brief (AES_ISR) Input Data Register written during the data processing when SMOD = 0x2 mode. */ +#define AES_ISR_URAT_ODR_RD_PROCESSING (0x1u << 12) /**< \brief (AES_ISR) Output Data Register read during the data processing. */ +#define AES_ISR_URAT_MR_WR_PROCESSING (0x2u << 12) /**< \brief (AES_ISR) Mode Register written during the data processing. */ +#define AES_ISR_URAT_ODR_RD_SUBKGEN (0x3u << 12) /**< \brief (AES_ISR) Output Data Register read during the sub-keys generation. */ +#define AES_ISR_URAT_MR_WR_SUBKGEN (0x4u << 12) /**< \brief (AES_ISR) Mode Register written during the sub-keys generation. */ +#define AES_ISR_URAT_WOR_RD_ACCESS (0x5u << 12) /**< \brief (AES_ISR) Write-only register read access. */ +#define AES_ISR_TAGRDY (0x1u << 16) /**< \brief (AES_ISR) GCM Tag Ready */ +/* -------- AES_KEYWR[8] : (AES Offset: 0x20) Key Word Register -------- */ +#define AES_KEYWR_KEYW_Pos 0 +#define AES_KEYWR_KEYW_Msk (0xffffffffu << AES_KEYWR_KEYW_Pos) /**< \brief (AES_KEYWR[8]) Key Word */ +#define AES_KEYWR_KEYW(value) ((AES_KEYWR_KEYW_Msk & ((value) << AES_KEYWR_KEYW_Pos))) +/* -------- AES_IDATAR[4] : (AES Offset: 0x40) Input Data Register -------- */ +#define AES_IDATAR_IDATA_Pos 0 +#define AES_IDATAR_IDATA_Msk (0xffffffffu << AES_IDATAR_IDATA_Pos) /**< \brief (AES_IDATAR[4]) Input Data Word */ +#define AES_IDATAR_IDATA(value) ((AES_IDATAR_IDATA_Msk & ((value) << AES_IDATAR_IDATA_Pos))) +/* -------- AES_ODATAR[4] : (AES Offset: 0x50) Output Data Register -------- */ +#define AES_ODATAR_ODATA_Pos 0 +#define AES_ODATAR_ODATA_Msk (0xffffffffu << AES_ODATAR_ODATA_Pos) /**< \brief (AES_ODATAR[4]) Output Data */ +/* -------- AES_IVR[4] : (AES Offset: 0x60) Initialization Vector Register -------- */ +#define AES_IVR_IV_Pos 0 +#define AES_IVR_IV_Msk (0xffffffffu << AES_IVR_IV_Pos) /**< \brief (AES_IVR[4]) Initialization Vector */ +#define AES_IVR_IV(value) ((AES_IVR_IV_Msk & ((value) << AES_IVR_IV_Pos))) +/* -------- AES_AADLENR : (AES Offset: 0x70) Additional Authenticated Data Length Register -------- */ +#define AES_AADLENR_AADLEN_Pos 0 +#define AES_AADLENR_AADLEN_Msk (0xffffffffu << AES_AADLENR_AADLEN_Pos) /**< \brief (AES_AADLENR) Additional Authenticated Data Length */ +#define AES_AADLENR_AADLEN(value) ((AES_AADLENR_AADLEN_Msk & ((value) << AES_AADLENR_AADLEN_Pos))) +/* -------- AES_CLENR : (AES Offset: 0x74) Plaintext/Ciphertext Length Register -------- */ +#define AES_CLENR_CLEN_Pos 0 +#define AES_CLENR_CLEN_Msk (0xffffffffu << AES_CLENR_CLEN_Pos) /**< \brief (AES_CLENR) Plaintext/Ciphertext Length */ +#define AES_CLENR_CLEN(value) ((AES_CLENR_CLEN_Msk & ((value) << AES_CLENR_CLEN_Pos))) +/* -------- AES_GHASHR[4] : (AES Offset: 0x78) GCM Intermediate Hash Word Register -------- */ +#define AES_GHASHR_GHASH_Pos 0 +#define AES_GHASHR_GHASH_Msk (0xffffffffu << AES_GHASHR_GHASH_Pos) /**< \brief (AES_GHASHR[4]) Intermediate GCM Hash Word x */ +#define AES_GHASHR_GHASH(value) ((AES_GHASHR_GHASH_Msk & ((value) << AES_GHASHR_GHASH_Pos))) +/* -------- AES_TAGR[4] : (AES Offset: 0x88) GCM Authentication Tag Word Register -------- */ +#define AES_TAGR_TAG_Pos 0 +#define AES_TAGR_TAG_Msk (0xffffffffu << AES_TAGR_TAG_Pos) /**< \brief (AES_TAGR[4]) GCM Authentication Tag x */ +/* -------- AES_CTRR : (AES Offset: 0x98) GCM Encryption Counter Value Register -------- */ +#define AES_CTRR_CTR_Pos 0 +#define AES_CTRR_CTR_Msk (0xffffffffu << AES_CTRR_CTR_Pos) /**< \brief (AES_CTRR) GCM Encryption Counter */ +/* -------- AES_GCMHR[4] : (AES Offset: 0x9C) GCM H Word Register -------- */ +#define AES_GCMHR_H_Pos 0 +#define AES_GCMHR_H_Msk (0xffffffffu << AES_GCMHR_H_Pos) /**< \brief (AES_GCMHR[4]) GCM H Word x */ +#define AES_GCMHR_H(value) ((AES_GCMHR_H_Msk & ((value) << AES_GCMHR_H_Pos))) +/* -------- AES_VERSION : (AES Offset: 0xFC) Version Register -------- */ +#define AES_VERSION_VERSION_Pos 0 +#define AES_VERSION_VERSION_Msk (0xfffu << AES_VERSION_VERSION_Pos) /**< \brief (AES_VERSION) Version of the Hardware Module */ +#define AES_VERSION_MFN_Pos 16 +#define AES_VERSION_MFN_Msk (0x7u << AES_VERSION_MFN_Pos) /**< \brief (AES_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_AES_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h new file mode 100644 index 00000000..4159447d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h @@ -0,0 +1,495 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_AFEC_COMPONENT_ +#define _SAME70_AFEC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Analog Front-End Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_AFEC Analog Front-End Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Afec hardware registers */ +typedef struct { + __O uint32_t AFEC_CR; /**< \brief (Afec Offset: 0x00) AFEC Control Register */ + __IO uint32_t AFEC_MR; /**< \brief (Afec Offset: 0x04) AFEC Mode Register */ + __IO uint32_t AFEC_EMR; /**< \brief (Afec Offset: 0x08) AFEC Extended Mode Register */ + __IO uint32_t AFEC_SEQ1R; /**< \brief (Afec Offset: 0x0C) AFEC Channel Sequence 1 Register */ + __IO uint32_t AFEC_SEQ2R; /**< \brief (Afec Offset: 0x10) AFEC Channel Sequence 2 Register */ + __O uint32_t AFEC_CHER; /**< \brief (Afec Offset: 0x14) AFEC Channel Enable Register */ + __O uint32_t AFEC_CHDR; /**< \brief (Afec Offset: 0x18) AFEC Channel Disable Register */ + __I uint32_t AFEC_CHSR; /**< \brief (Afec Offset: 0x1C) AFEC Channel Status Register */ + __I uint32_t AFEC_LCDR; /**< \brief (Afec Offset: 0x20) AFEC Last Converted Data Register */ + __O uint32_t AFEC_IER; /**< \brief (Afec Offset: 0x24) AFEC Interrupt Enable Register */ + __O uint32_t AFEC_IDR; /**< \brief (Afec Offset: 0x28) AFEC Interrupt Disable Register */ + __I uint32_t AFEC_IMR; /**< \brief (Afec Offset: 0x2C) AFEC Interrupt Mask Register */ + __I uint32_t AFEC_ISR; /**< \brief (Afec Offset: 0x30) AFEC Interrupt Status Register */ + __I uint32_t Reserved1[6]; + __I uint32_t AFEC_OVER; /**< \brief (Afec Offset: 0x4C) AFEC Overrun Status Register */ + __IO uint32_t AFEC_CWR; /**< \brief (Afec Offset: 0x50) AFEC Compare Window Register */ + __IO uint32_t AFEC_CGR; /**< \brief (Afec Offset: 0x54) AFEC Channel Gain Register */ + __I uint32_t Reserved2[2]; + __IO uint32_t AFEC_DIFFR; /**< \brief (Afec Offset: 0x60) AFEC Channel Differential Register */ + __IO uint32_t AFEC_CSELR; /**< \brief (Afec Offset: 0x64) AFEC Channel Selection Register */ + __I uint32_t AFEC_CDR; /**< \brief (Afec Offset: 0x68) AFEC Channel Data Register */ + __IO uint32_t AFEC_COCR; /**< \brief (Afec Offset: 0x6C) AFEC Channel Offset Compensation Register */ + __IO uint32_t AFEC_TEMPMR; /**< \brief (Afec Offset: 0x70) AFEC Temperature Sensor Mode Register */ + __IO uint32_t AFEC_TEMPCWR; /**< \brief (Afec Offset: 0x74) AFEC Temperature Compare Window Register */ + __I uint32_t Reserved3[7]; + __IO uint32_t AFEC_ACR; /**< \brief (Afec Offset: 0x94) AFEC Analog Control Register */ + __I uint32_t Reserved4[2]; + __IO uint32_t AFEC_SHMR; /**< \brief (Afec Offset: 0xA0) AFEC Sample & Hold Mode Register */ + __I uint32_t Reserved5[11]; + __IO uint32_t AFEC_COSR; /**< \brief (Afec Offset: 0xD0) AFEC Correction Select Register */ + __IO uint32_t AFEC_CVR; /**< \brief (Afec Offset: 0xD4) AFEC Correction Values Register */ + __IO uint32_t AFEC_CECR; /**< \brief (Afec Offset: 0xD8) AFEC Channel Error Correction Register */ + __I uint32_t Reserved6[2]; + __IO uint32_t AFEC_WPMR; /**< \brief (Afec Offset: 0xE4) AFEC Write Protection Mode Register */ + __I uint32_t AFEC_WPSR; /**< \brief (Afec Offset: 0xE8) AFEC Write Protection Status Register */ + __I uint32_t Reserved7[4]; + __I uint32_t AFEC_VERSION; /**< \brief (Afec Offset: 0xFC) AFEC Version Register */ +} Afec; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- AFEC_CR : (AFEC Offset: 0x00) AFEC Control Register -------- */ +#define AFEC_CR_SWRST (0x1u << 0) /**< \brief (AFEC_CR) Software Reset */ +#define AFEC_CR_START (0x1u << 1) /**< \brief (AFEC_CR) Start Conversion */ +/* -------- AFEC_MR : (AFEC Offset: 0x04) AFEC Mode Register -------- */ +#define AFEC_MR_TRGEN (0x1u << 0) /**< \brief (AFEC_MR) Trigger Enable */ +#define AFEC_MR_TRGEN_DIS (0x0u << 0) /**< \brief (AFEC_MR) Hardware triggers are disabled. Starting a conversion is only possible by software. */ +#define AFEC_MR_TRGEN_EN (0x1u << 0) /**< \brief (AFEC_MR) Hardware trigger selected by TRGSEL field is enabled. */ +#define AFEC_MR_TRGSEL_Pos 1 +#define AFEC_MR_TRGSEL_Msk (0x7u << AFEC_MR_TRGSEL_Pos) /**< \brief (AFEC_MR) Trigger Selection */ +#define AFEC_MR_TRGSEL(value) ((AFEC_MR_TRGSEL_Msk & ((value) << AFEC_MR_TRGSEL_Pos))) +#define AFEC_MR_TRGSEL_AFEC_TRIG0 (0x0u << 1) /**< \brief (AFEC_MR) AFE0_ADTRG for AFEC0 / AFE1_ADTRG for AFEC1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG1 (0x1u << 1) /**< \brief (AFEC_MR) TIOA Output of the Timer Counter Channel 0 for AFEC0/TIOA Output of the Timer Counter Channel 3 for AFEC1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG2 (0x2u << 1) /**< \brief (AFEC_MR) TIOA Output of the Timer Counter Channel 1 for AFEC0/TIOA Output of the Timer Counter Channel 4 for AFEC1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG3 (0x3u << 1) /**< \brief (AFEC_MR) TIOA Output of the Timer Counter Channel 2 for AFEC0/TIOA Output of the Timer Counter Channel 5 for AFEC1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG4 (0x4u << 1) /**< \brief (AFEC_MR) PWM0 event line 0 for AFEC0 / PWM1 event line 0 for AFEC1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG5 (0x5u << 1) /**< \brief (AFEC_MR) PWM0 event line 1 for AFEC0 / PWM1 event line 1 for AFEC1 */ +#define AFEC_MR_TRGSEL_AFEC_TRIG6 (0x6u << 1) /**< \brief (AFEC_MR) Analog Comparator */ +#define AFEC_MR_SLEEP (0x1u << 5) /**< \brief (AFEC_MR) Sleep Mode */ +#define AFEC_MR_SLEEP_NORMAL (0x0u << 5) /**< \brief (AFEC_MR) Normal mode: The AFE and reference voltage circuitry are kept ON between conversions. */ +#define AFEC_MR_SLEEP_SLEEP (0x1u << 5) /**< \brief (AFEC_MR) Sleep mode: The AFE and reference voltage circuitry are OFF between conversions. */ +#define AFEC_MR_FWUP (0x1u << 6) /**< \brief (AFEC_MR) Fast Wake-up */ +#define AFEC_MR_FWUP_OFF (0x0u << 6) /**< \brief (AFEC_MR) Normal Sleep mode: The sleep mode is defined by the SLEEP bit. */ +#define AFEC_MR_FWUP_ON (0x1u << 6) /**< \brief (AFEC_MR) Fast wake-up Sleep mode: The voltage reference is ON between conversions and AFE is OFF. */ +#define AFEC_MR_FREERUN (0x1u << 7) /**< \brief (AFEC_MR) Free Run Mode */ +#define AFEC_MR_FREERUN_OFF (0x0u << 7) /**< \brief (AFEC_MR) Normal mode */ +#define AFEC_MR_FREERUN_ON (0x1u << 7) /**< \brief (AFEC_MR) Free Run mode: Never wait for any trigger. */ +#define AFEC_MR_PRESCAL_Pos 8 +#define AFEC_MR_PRESCAL_Msk (0xffu << AFEC_MR_PRESCAL_Pos) /**< \brief (AFEC_MR) Prescaler Rate Selection */ +#define AFEC_MR_PRESCAL(value) ((AFEC_MR_PRESCAL_Msk & ((value) << AFEC_MR_PRESCAL_Pos))) +#define AFEC_MR_STARTUP_Pos 16 +#define AFEC_MR_STARTUP_Msk (0xfu << AFEC_MR_STARTUP_Pos) /**< \brief (AFEC_MR) Start-up Time */ +#define AFEC_MR_STARTUP(value) ((AFEC_MR_STARTUP_Msk & ((value) << AFEC_MR_STARTUP_Pos))) +#define AFEC_MR_STARTUP_SUT0 (0x0u << 16) /**< \brief (AFEC_MR) 0 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT8 (0x1u << 16) /**< \brief (AFEC_MR) 8 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT16 (0x2u << 16) /**< \brief (AFEC_MR) 16 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT24 (0x3u << 16) /**< \brief (AFEC_MR) 24 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT64 (0x4u << 16) /**< \brief (AFEC_MR) 64 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT80 (0x5u << 16) /**< \brief (AFEC_MR) 80 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT96 (0x6u << 16) /**< \brief (AFEC_MR) 96 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT112 (0x7u << 16) /**< \brief (AFEC_MR) 112 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT512 (0x8u << 16) /**< \brief (AFEC_MR) 512 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT576 (0x9u << 16) /**< \brief (AFEC_MR) 576 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT640 (0xAu << 16) /**< \brief (AFEC_MR) 640 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT704 (0xBu << 16) /**< \brief (AFEC_MR) 704 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT768 (0xCu << 16) /**< \brief (AFEC_MR) 768 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT832 (0xDu << 16) /**< \brief (AFEC_MR) 832 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT896 (0xEu << 16) /**< \brief (AFEC_MR) 896 periods of AFE clock */ +#define AFEC_MR_STARTUP_SUT960 (0xFu << 16) /**< \brief (AFEC_MR) 960 periods of AFE clock */ +#define AFEC_MR_ONE (0x1u << 23) /**< \brief (AFEC_MR) One */ +#define AFEC_MR_TRACKTIM_Pos 24 +#define AFEC_MR_TRACKTIM_Msk (0xfu << AFEC_MR_TRACKTIM_Pos) /**< \brief (AFEC_MR) Tracking Time */ +#define AFEC_MR_TRACKTIM(value) ((AFEC_MR_TRACKTIM_Msk & ((value) << AFEC_MR_TRACKTIM_Pos))) +#define AFEC_MR_TRANSFER_Pos 28 +#define AFEC_MR_TRANSFER_Msk (0x3u << AFEC_MR_TRANSFER_Pos) /**< \brief (AFEC_MR) Transfer Period */ +#define AFEC_MR_TRANSFER(value) ((AFEC_MR_TRANSFER_Msk & ((value) << AFEC_MR_TRANSFER_Pos))) +#define AFEC_MR_USEQ (0x1u << 31) /**< \brief (AFEC_MR) User Sequence Enable */ +#define AFEC_MR_USEQ_NUM_ORDER (0x0u << 31) /**< \brief (AFEC_MR) Normal mode: The controller converts channels in a simple numeric order. */ +#define AFEC_MR_USEQ_REG_ORDER (0x1u << 31) /**< \brief (AFEC_MR) User Sequence mode: The sequence respects what is defined in AFEC_SEQ1R and AFEC_SEQ1R. */ +/* -------- AFEC_EMR : (AFEC Offset: 0x08) AFEC Extended Mode Register -------- */ +#define AFEC_EMR_CMPMODE_Pos 0 +#define AFEC_EMR_CMPMODE_Msk (0x3u << AFEC_EMR_CMPMODE_Pos) /**< \brief (AFEC_EMR) Comparison Mode */ +#define AFEC_EMR_CMPMODE(value) ((AFEC_EMR_CMPMODE_Msk & ((value) << AFEC_EMR_CMPMODE_Pos))) +#define AFEC_EMR_CMPMODE_LOW (0x0u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define AFEC_EMR_CMPMODE_HIGH (0x1u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define AFEC_EMR_CMPMODE_IN (0x2u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is in the comparison window. */ +#define AFEC_EMR_CMPMODE_OUT (0x3u << 0) /**< \brief (AFEC_EMR) Generates an event when the converted data is out of the comparison window. */ +#define AFEC_EMR_CMPSEL_Pos 3 +#define AFEC_EMR_CMPSEL_Msk (0x1fu << AFEC_EMR_CMPSEL_Pos) /**< \brief (AFEC_EMR) Comparison Selected Channel */ +#define AFEC_EMR_CMPSEL(value) ((AFEC_EMR_CMPSEL_Msk & ((value) << AFEC_EMR_CMPSEL_Pos))) +#define AFEC_EMR_CMPALL (0x1u << 9) /**< \brief (AFEC_EMR) Compare All Channels */ +#define AFEC_EMR_CMPFILTER_Pos 12 +#define AFEC_EMR_CMPFILTER_Msk (0x3u << AFEC_EMR_CMPFILTER_Pos) /**< \brief (AFEC_EMR) Compare Event Filtering */ +#define AFEC_EMR_CMPFILTER(value) ((AFEC_EMR_CMPFILTER_Msk & ((value) << AFEC_EMR_CMPFILTER_Pos))) +#define AFEC_EMR_RES_Pos 16 +#define AFEC_EMR_RES_Msk (0x7u << AFEC_EMR_RES_Pos) /**< \brief (AFEC_EMR) Resolution */ +#define AFEC_EMR_RES(value) ((AFEC_EMR_RES_Msk & ((value) << AFEC_EMR_RES_Pos))) +#define AFEC_EMR_RES_NO_AVERAGE (0x0u << 16) /**< \brief (AFEC_EMR) 12-bit resolution, AFE sample rate is maximum (no averaging). */ +#define AFEC_EMR_RES_OSR4 (0x2u << 16) /**< \brief (AFEC_EMR) 13-bit resolution, AFE sample rate divided by 4 (averaging). */ +#define AFEC_EMR_RES_OSR16 (0x3u << 16) /**< \brief (AFEC_EMR) 14-bit resolution, AFE sample rate divided by 16 (averaging). */ +#define AFEC_EMR_RES_OSR64 (0x4u << 16) /**< \brief (AFEC_EMR) 15-bit resolution, AFE sample rate divided by 64 (averaging). */ +#define AFEC_EMR_RES_OSR256 (0x5u << 16) /**< \brief (AFEC_EMR) 16-bit resolution, AFE sample rate divided by 256 (averaging). */ +#define AFEC_EMR_TAG (0x1u << 24) /**< \brief (AFEC_EMR) TAG of the AFEC_LDCR */ +#define AFEC_EMR_STM (0x1u << 25) /**< \brief (AFEC_EMR) Single Trigger Mode */ +#define AFEC_EMR_SIGNMODE_Pos 28 +#define AFEC_EMR_SIGNMODE_Msk (0x3u << AFEC_EMR_SIGNMODE_Pos) /**< \brief (AFEC_EMR) Sign Mode */ +#define AFEC_EMR_SIGNMODE(value) ((AFEC_EMR_SIGNMODE_Msk & ((value) << AFEC_EMR_SIGNMODE_Pos))) +#define AFEC_EMR_SIGNMODE_SE_UNSG_DF_SIGN (0x0u << 28) /**< \brief (AFEC_EMR) Single-Ended channels: Unsigned conversions.Differential channels: Signed conversions. */ +#define AFEC_EMR_SIGNMODE_SE_SIGN_DF_UNSG (0x1u << 28) /**< \brief (AFEC_EMR) Single-Ended channels: Signed conversions.Differential channels: Unsigned conversions. */ +#define AFEC_EMR_SIGNMODE_ALL_UNSIGNED (0x2u << 28) /**< \brief (AFEC_EMR) All channels: Unsigned conversions. */ +#define AFEC_EMR_SIGNMODE_ALL_SIGNED (0x3u << 28) /**< \brief (AFEC_EMR) All channels: Signed conversions. */ +/* -------- AFEC_SEQ1R : (AFEC Offset: 0x0C) AFEC Channel Sequence 1 Register -------- */ +#define AFEC_SEQ1R_USCH0_Pos 0 +#define AFEC_SEQ1R_USCH0_Msk (0xfu << AFEC_SEQ1R_USCH0_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 0 */ +#define AFEC_SEQ1R_USCH0(value) ((AFEC_SEQ1R_USCH0_Msk & ((value) << AFEC_SEQ1R_USCH0_Pos))) +#define AFEC_SEQ1R_USCH1_Pos 4 +#define AFEC_SEQ1R_USCH1_Msk (0xfu << AFEC_SEQ1R_USCH1_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 1 */ +#define AFEC_SEQ1R_USCH1(value) ((AFEC_SEQ1R_USCH1_Msk & ((value) << AFEC_SEQ1R_USCH1_Pos))) +#define AFEC_SEQ1R_USCH2_Pos 8 +#define AFEC_SEQ1R_USCH2_Msk (0xfu << AFEC_SEQ1R_USCH2_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 2 */ +#define AFEC_SEQ1R_USCH2(value) ((AFEC_SEQ1R_USCH2_Msk & ((value) << AFEC_SEQ1R_USCH2_Pos))) +#define AFEC_SEQ1R_USCH3_Pos 12 +#define AFEC_SEQ1R_USCH3_Msk (0xfu << AFEC_SEQ1R_USCH3_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 3 */ +#define AFEC_SEQ1R_USCH3(value) ((AFEC_SEQ1R_USCH3_Msk & ((value) << AFEC_SEQ1R_USCH3_Pos))) +#define AFEC_SEQ1R_USCH4_Pos 16 +#define AFEC_SEQ1R_USCH4_Msk (0xfu << AFEC_SEQ1R_USCH4_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 4 */ +#define AFEC_SEQ1R_USCH4(value) ((AFEC_SEQ1R_USCH4_Msk & ((value) << AFEC_SEQ1R_USCH4_Pos))) +#define AFEC_SEQ1R_USCH5_Pos 20 +#define AFEC_SEQ1R_USCH5_Msk (0xfu << AFEC_SEQ1R_USCH5_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 5 */ +#define AFEC_SEQ1R_USCH5(value) ((AFEC_SEQ1R_USCH5_Msk & ((value) << AFEC_SEQ1R_USCH5_Pos))) +#define AFEC_SEQ1R_USCH6_Pos 24 +#define AFEC_SEQ1R_USCH6_Msk (0xfu << AFEC_SEQ1R_USCH6_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 6 */ +#define AFEC_SEQ1R_USCH6(value) ((AFEC_SEQ1R_USCH6_Msk & ((value) << AFEC_SEQ1R_USCH6_Pos))) +#define AFEC_SEQ1R_USCH7_Pos 28 +#define AFEC_SEQ1R_USCH7_Msk (0xfu << AFEC_SEQ1R_USCH7_Pos) /**< \brief (AFEC_SEQ1R) User Sequence Number 7 */ +#define AFEC_SEQ1R_USCH7(value) ((AFEC_SEQ1R_USCH7_Msk & ((value) << AFEC_SEQ1R_USCH7_Pos))) +/* -------- AFEC_SEQ2R : (AFEC Offset: 0x10) AFEC Channel Sequence 2 Register -------- */ +#define AFEC_SEQ2R_USCH8_Pos 0 +#define AFEC_SEQ2R_USCH8_Msk (0xfu << AFEC_SEQ2R_USCH8_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 8 */ +#define AFEC_SEQ2R_USCH8(value) ((AFEC_SEQ2R_USCH8_Msk & ((value) << AFEC_SEQ2R_USCH8_Pos))) +#define AFEC_SEQ2R_USCH9_Pos 4 +#define AFEC_SEQ2R_USCH9_Msk (0xfu << AFEC_SEQ2R_USCH9_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 9 */ +#define AFEC_SEQ2R_USCH9(value) ((AFEC_SEQ2R_USCH9_Msk & ((value) << AFEC_SEQ2R_USCH9_Pos))) +#define AFEC_SEQ2R_USCH10_Pos 8 +#define AFEC_SEQ2R_USCH10_Msk (0xfu << AFEC_SEQ2R_USCH10_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 10 */ +#define AFEC_SEQ2R_USCH10(value) ((AFEC_SEQ2R_USCH10_Msk & ((value) << AFEC_SEQ2R_USCH10_Pos))) +#define AFEC_SEQ2R_USCH11_Pos 12 +#define AFEC_SEQ2R_USCH11_Msk (0xfu << AFEC_SEQ2R_USCH11_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 11 */ +#define AFEC_SEQ2R_USCH11(value) ((AFEC_SEQ2R_USCH11_Msk & ((value) << AFEC_SEQ2R_USCH11_Pos))) +#define AFEC_SEQ2R_USCH12_Pos 16 +#define AFEC_SEQ2R_USCH12_Msk (0xfu << AFEC_SEQ2R_USCH12_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 12 */ +#define AFEC_SEQ2R_USCH12(value) ((AFEC_SEQ2R_USCH12_Msk & ((value) << AFEC_SEQ2R_USCH12_Pos))) +#define AFEC_SEQ2R_USCH13_Pos 20 +#define AFEC_SEQ2R_USCH13_Msk (0xfu << AFEC_SEQ2R_USCH13_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 13 */ +#define AFEC_SEQ2R_USCH13(value) ((AFEC_SEQ2R_USCH13_Msk & ((value) << AFEC_SEQ2R_USCH13_Pos))) +#define AFEC_SEQ2R_USCH14_Pos 24 +#define AFEC_SEQ2R_USCH14_Msk (0xfu << AFEC_SEQ2R_USCH14_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 14 */ +#define AFEC_SEQ2R_USCH14(value) ((AFEC_SEQ2R_USCH14_Msk & ((value) << AFEC_SEQ2R_USCH14_Pos))) +#define AFEC_SEQ2R_USCH15_Pos 28 +#define AFEC_SEQ2R_USCH15_Msk (0xfu << AFEC_SEQ2R_USCH15_Pos) /**< \brief (AFEC_SEQ2R) User Sequence Number 15 */ +#define AFEC_SEQ2R_USCH15(value) ((AFEC_SEQ2R_USCH15_Msk & ((value) << AFEC_SEQ2R_USCH15_Pos))) +/* -------- AFEC_CHER : (AFEC Offset: 0x14) AFEC Channel Enable Register -------- */ +#define AFEC_CHER_CH0 (0x1u << 0) /**< \brief (AFEC_CHER) Channel 0 Enable */ +#define AFEC_CHER_CH1 (0x1u << 1) /**< \brief (AFEC_CHER) Channel 1 Enable */ +#define AFEC_CHER_CH2 (0x1u << 2) /**< \brief (AFEC_CHER) Channel 2 Enable */ +#define AFEC_CHER_CH3 (0x1u << 3) /**< \brief (AFEC_CHER) Channel 3 Enable */ +#define AFEC_CHER_CH4 (0x1u << 4) /**< \brief (AFEC_CHER) Channel 4 Enable */ +#define AFEC_CHER_CH5 (0x1u << 5) /**< \brief (AFEC_CHER) Channel 5 Enable */ +#define AFEC_CHER_CH6 (0x1u << 6) /**< \brief (AFEC_CHER) Channel 6 Enable */ +#define AFEC_CHER_CH7 (0x1u << 7) /**< \brief (AFEC_CHER) Channel 7 Enable */ +#define AFEC_CHER_CH8 (0x1u << 8) /**< \brief (AFEC_CHER) Channel 8 Enable */ +#define AFEC_CHER_CH9 (0x1u << 9) /**< \brief (AFEC_CHER) Channel 9 Enable */ +#define AFEC_CHER_CH10 (0x1u << 10) /**< \brief (AFEC_CHER) Channel 10 Enable */ +#define AFEC_CHER_CH11 (0x1u << 11) /**< \brief (AFEC_CHER) Channel 11 Enable */ +/* -------- AFEC_CHDR : (AFEC Offset: 0x18) AFEC Channel Disable Register -------- */ +#define AFEC_CHDR_CH0 (0x1u << 0) /**< \brief (AFEC_CHDR) Channel 0 Disable */ +#define AFEC_CHDR_CH1 (0x1u << 1) /**< \brief (AFEC_CHDR) Channel 1 Disable */ +#define AFEC_CHDR_CH2 (0x1u << 2) /**< \brief (AFEC_CHDR) Channel 2 Disable */ +#define AFEC_CHDR_CH3 (0x1u << 3) /**< \brief (AFEC_CHDR) Channel 3 Disable */ +#define AFEC_CHDR_CH4 (0x1u << 4) /**< \brief (AFEC_CHDR) Channel 4 Disable */ +#define AFEC_CHDR_CH5 (0x1u << 5) /**< \brief (AFEC_CHDR) Channel 5 Disable */ +#define AFEC_CHDR_CH6 (0x1u << 6) /**< \brief (AFEC_CHDR) Channel 6 Disable */ +#define AFEC_CHDR_CH7 (0x1u << 7) /**< \brief (AFEC_CHDR) Channel 7 Disable */ +#define AFEC_CHDR_CH8 (0x1u << 8) /**< \brief (AFEC_CHDR) Channel 8 Disable */ +#define AFEC_CHDR_CH9 (0x1u << 9) /**< \brief (AFEC_CHDR) Channel 9 Disable */ +#define AFEC_CHDR_CH10 (0x1u << 10) /**< \brief (AFEC_CHDR) Channel 10 Disable */ +#define AFEC_CHDR_CH11 (0x1u << 11) /**< \brief (AFEC_CHDR) Channel 11 Disable */ +/* -------- AFEC_CHSR : (AFEC Offset: 0x1C) AFEC Channel Status Register -------- */ +#define AFEC_CHSR_CH0 (0x1u << 0) /**< \brief (AFEC_CHSR) Channel 0 Status */ +#define AFEC_CHSR_CH1 (0x1u << 1) /**< \brief (AFEC_CHSR) Channel 1 Status */ +#define AFEC_CHSR_CH2 (0x1u << 2) /**< \brief (AFEC_CHSR) Channel 2 Status */ +#define AFEC_CHSR_CH3 (0x1u << 3) /**< \brief (AFEC_CHSR) Channel 3 Status */ +#define AFEC_CHSR_CH4 (0x1u << 4) /**< \brief (AFEC_CHSR) Channel 4 Status */ +#define AFEC_CHSR_CH5 (0x1u << 5) /**< \brief (AFEC_CHSR) Channel 5 Status */ +#define AFEC_CHSR_CH6 (0x1u << 6) /**< \brief (AFEC_CHSR) Channel 6 Status */ +#define AFEC_CHSR_CH7 (0x1u << 7) /**< \brief (AFEC_CHSR) Channel 7 Status */ +#define AFEC_CHSR_CH8 (0x1u << 8) /**< \brief (AFEC_CHSR) Channel 8 Status */ +#define AFEC_CHSR_CH9 (0x1u << 9) /**< \brief (AFEC_CHSR) Channel 9 Status */ +#define AFEC_CHSR_CH10 (0x1u << 10) /**< \brief (AFEC_CHSR) Channel 10 Status */ +#define AFEC_CHSR_CH11 (0x1u << 11) /**< \brief (AFEC_CHSR) Channel 11 Status */ +/* -------- AFEC_LCDR : (AFEC Offset: 0x20) AFEC Last Converted Data Register -------- */ +#define AFEC_LCDR_LDATA_Pos 0 +#define AFEC_LCDR_LDATA_Msk (0xffffu << AFEC_LCDR_LDATA_Pos) /**< \brief (AFEC_LCDR) Last Data Converted */ +#define AFEC_LCDR_CHNB_Pos 24 +#define AFEC_LCDR_CHNB_Msk (0xfu << AFEC_LCDR_CHNB_Pos) /**< \brief (AFEC_LCDR) Channel Number */ +/* -------- AFEC_IER : (AFEC Offset: 0x24) AFEC Interrupt Enable Register -------- */ +#define AFEC_IER_EOC0 (0x1u << 0) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 0 */ +#define AFEC_IER_EOC1 (0x1u << 1) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 1 */ +#define AFEC_IER_EOC2 (0x1u << 2) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 2 */ +#define AFEC_IER_EOC3 (0x1u << 3) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 3 */ +#define AFEC_IER_EOC4 (0x1u << 4) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 4 */ +#define AFEC_IER_EOC5 (0x1u << 5) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 5 */ +#define AFEC_IER_EOC6 (0x1u << 6) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 6 */ +#define AFEC_IER_EOC7 (0x1u << 7) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 7 */ +#define AFEC_IER_EOC8 (0x1u << 8) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 8 */ +#define AFEC_IER_EOC9 (0x1u << 9) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 9 */ +#define AFEC_IER_EOC10 (0x1u << 10) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 10 */ +#define AFEC_IER_EOC11 (0x1u << 11) /**< \brief (AFEC_IER) End of Conversion Interrupt Enable 11 */ +#define AFEC_IER_DRDY (0x1u << 24) /**< \brief (AFEC_IER) Data Ready Interrupt Enable */ +#define AFEC_IER_GOVRE (0x1u << 25) /**< \brief (AFEC_IER) General Overrun Error Interrupt Enable */ +#define AFEC_IER_COMPE (0x1u << 26) /**< \brief (AFEC_IER) Comparison Event Interrupt Enable */ +#define AFEC_IER_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IER) Temperature Change Interrupt Enable */ +/* -------- AFEC_IDR : (AFEC Offset: 0x28) AFEC Interrupt Disable Register -------- */ +#define AFEC_IDR_EOC0 (0x1u << 0) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 0 */ +#define AFEC_IDR_EOC1 (0x1u << 1) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 1 */ +#define AFEC_IDR_EOC2 (0x1u << 2) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 2 */ +#define AFEC_IDR_EOC3 (0x1u << 3) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 3 */ +#define AFEC_IDR_EOC4 (0x1u << 4) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 4 */ +#define AFEC_IDR_EOC5 (0x1u << 5) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 5 */ +#define AFEC_IDR_EOC6 (0x1u << 6) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 6 */ +#define AFEC_IDR_EOC7 (0x1u << 7) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 7 */ +#define AFEC_IDR_EOC8 (0x1u << 8) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 8 */ +#define AFEC_IDR_EOC9 (0x1u << 9) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 9 */ +#define AFEC_IDR_EOC10 (0x1u << 10) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 10 */ +#define AFEC_IDR_EOC11 (0x1u << 11) /**< \brief (AFEC_IDR) End of Conversion Interrupt Disable 11 */ +#define AFEC_IDR_DRDY (0x1u << 24) /**< \brief (AFEC_IDR) Data Ready Interrupt Disable */ +#define AFEC_IDR_GOVRE (0x1u << 25) /**< \brief (AFEC_IDR) General Overrun Error Interrupt Disable */ +#define AFEC_IDR_COMPE (0x1u << 26) /**< \brief (AFEC_IDR) Comparison Event Interrupt Disable */ +#define AFEC_IDR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IDR) Temperature Change Interrupt Disable */ +/* -------- AFEC_IMR : (AFEC Offset: 0x2C) AFEC Interrupt Mask Register -------- */ +#define AFEC_IMR_EOC0 (0x1u << 0) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 0 */ +#define AFEC_IMR_EOC1 (0x1u << 1) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 1 */ +#define AFEC_IMR_EOC2 (0x1u << 2) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 2 */ +#define AFEC_IMR_EOC3 (0x1u << 3) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 3 */ +#define AFEC_IMR_EOC4 (0x1u << 4) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 4 */ +#define AFEC_IMR_EOC5 (0x1u << 5) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 5 */ +#define AFEC_IMR_EOC6 (0x1u << 6) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 6 */ +#define AFEC_IMR_EOC7 (0x1u << 7) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 7 */ +#define AFEC_IMR_EOC8 (0x1u << 8) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 8 */ +#define AFEC_IMR_EOC9 (0x1u << 9) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 9 */ +#define AFEC_IMR_EOC10 (0x1u << 10) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 10 */ +#define AFEC_IMR_EOC11 (0x1u << 11) /**< \brief (AFEC_IMR) End of Conversion Interrupt Mask 11 */ +#define AFEC_IMR_DRDY (0x1u << 24) /**< \brief (AFEC_IMR) Data Ready Interrupt Mask */ +#define AFEC_IMR_GOVRE (0x1u << 25) /**< \brief (AFEC_IMR) General Overrun Error Interrupt Mask */ +#define AFEC_IMR_COMPE (0x1u << 26) /**< \brief (AFEC_IMR) Comparison Event Interrupt Mask */ +#define AFEC_IMR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_IMR) Temperature Change Interrupt Mask */ +/* -------- AFEC_ISR : (AFEC Offset: 0x30) AFEC Interrupt Status Register -------- */ +#define AFEC_ISR_EOC0 (0x1u << 0) /**< \brief (AFEC_ISR) End of Conversion 0 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC1 (0x1u << 1) /**< \brief (AFEC_ISR) End of Conversion 1 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC2 (0x1u << 2) /**< \brief (AFEC_ISR) End of Conversion 2 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC3 (0x1u << 3) /**< \brief (AFEC_ISR) End of Conversion 3 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC4 (0x1u << 4) /**< \brief (AFEC_ISR) End of Conversion 4 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC5 (0x1u << 5) /**< \brief (AFEC_ISR) End of Conversion 5 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC6 (0x1u << 6) /**< \brief (AFEC_ISR) End of Conversion 6 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC7 (0x1u << 7) /**< \brief (AFEC_ISR) End of Conversion 7 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC8 (0x1u << 8) /**< \brief (AFEC_ISR) End of Conversion 8 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC9 (0x1u << 9) /**< \brief (AFEC_ISR) End of Conversion 9 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC10 (0x1u << 10) /**< \brief (AFEC_ISR) End of Conversion 10 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_EOC11 (0x1u << 11) /**< \brief (AFEC_ISR) End of Conversion 11 (cleared by reading AFEC_CDRx) */ +#define AFEC_ISR_DRDY (0x1u << 24) /**< \brief (AFEC_ISR) Data Ready (cleared by reading AFEC_LCDR) */ +#define AFEC_ISR_GOVRE (0x1u << 25) /**< \brief (AFEC_ISR) General Overrun Error (cleared by reading AFEC_ISR) */ +#define AFEC_ISR_COMPE (0x1u << 26) /**< \brief (AFEC_ISR) Comparison Error (cleared by reading AFEC_ISR) */ +#define AFEC_ISR_TEMPCHG (0x1u << 30) /**< \brief (AFEC_ISR) Temperature Change (cleared on read) */ +/* -------- AFEC_OVER : (AFEC Offset: 0x4C) AFEC Overrun Status Register -------- */ +#define AFEC_OVER_OVRE0 (0x1u << 0) /**< \brief (AFEC_OVER) Overrun Error 0 */ +#define AFEC_OVER_OVRE1 (0x1u << 1) /**< \brief (AFEC_OVER) Overrun Error 1 */ +#define AFEC_OVER_OVRE2 (0x1u << 2) /**< \brief (AFEC_OVER) Overrun Error 2 */ +#define AFEC_OVER_OVRE3 (0x1u << 3) /**< \brief (AFEC_OVER) Overrun Error 3 */ +#define AFEC_OVER_OVRE4 (0x1u << 4) /**< \brief (AFEC_OVER) Overrun Error 4 */ +#define AFEC_OVER_OVRE5 (0x1u << 5) /**< \brief (AFEC_OVER) Overrun Error 5 */ +#define AFEC_OVER_OVRE6 (0x1u << 6) /**< \brief (AFEC_OVER) Overrun Error 6 */ +#define AFEC_OVER_OVRE7 (0x1u << 7) /**< \brief (AFEC_OVER) Overrun Error 7 */ +#define AFEC_OVER_OVRE8 (0x1u << 8) /**< \brief (AFEC_OVER) Overrun Error 8 */ +#define AFEC_OVER_OVRE9 (0x1u << 9) /**< \brief (AFEC_OVER) Overrun Error 9 */ +#define AFEC_OVER_OVRE10 (0x1u << 10) /**< \brief (AFEC_OVER) Overrun Error 10 */ +#define AFEC_OVER_OVRE11 (0x1u << 11) /**< \brief (AFEC_OVER) Overrun Error 11 */ +/* -------- AFEC_CWR : (AFEC Offset: 0x50) AFEC Compare Window Register -------- */ +#define AFEC_CWR_LOWTHRES_Pos 0 +#define AFEC_CWR_LOWTHRES_Msk (0xffffu << AFEC_CWR_LOWTHRES_Pos) /**< \brief (AFEC_CWR) Low Threshold */ +#define AFEC_CWR_LOWTHRES(value) ((AFEC_CWR_LOWTHRES_Msk & ((value) << AFEC_CWR_LOWTHRES_Pos))) +#define AFEC_CWR_HIGHTHRES_Pos 16 +#define AFEC_CWR_HIGHTHRES_Msk (0xffffu << AFEC_CWR_HIGHTHRES_Pos) /**< \brief (AFEC_CWR) High Threshold */ +#define AFEC_CWR_HIGHTHRES(value) ((AFEC_CWR_HIGHTHRES_Msk & ((value) << AFEC_CWR_HIGHTHRES_Pos))) +/* -------- AFEC_CGR : (AFEC Offset: 0x54) AFEC Channel Gain Register -------- */ +#define AFEC_CGR_GAIN0_Pos 0 +#define AFEC_CGR_GAIN0_Msk (0x3u << AFEC_CGR_GAIN0_Pos) /**< \brief (AFEC_CGR) Gain for Channel 0 */ +#define AFEC_CGR_GAIN0(value) ((AFEC_CGR_GAIN0_Msk & ((value) << AFEC_CGR_GAIN0_Pos))) +#define AFEC_CGR_GAIN1_Pos 2 +#define AFEC_CGR_GAIN1_Msk (0x3u << AFEC_CGR_GAIN1_Pos) /**< \brief (AFEC_CGR) Gain for Channel 1 */ +#define AFEC_CGR_GAIN1(value) ((AFEC_CGR_GAIN1_Msk & ((value) << AFEC_CGR_GAIN1_Pos))) +#define AFEC_CGR_GAIN2_Pos 4 +#define AFEC_CGR_GAIN2_Msk (0x3u << AFEC_CGR_GAIN2_Pos) /**< \brief (AFEC_CGR) Gain for Channel 2 */ +#define AFEC_CGR_GAIN2(value) ((AFEC_CGR_GAIN2_Msk & ((value) << AFEC_CGR_GAIN2_Pos))) +#define AFEC_CGR_GAIN3_Pos 6 +#define AFEC_CGR_GAIN3_Msk (0x3u << AFEC_CGR_GAIN3_Pos) /**< \brief (AFEC_CGR) Gain for Channel 3 */ +#define AFEC_CGR_GAIN3(value) ((AFEC_CGR_GAIN3_Msk & ((value) << AFEC_CGR_GAIN3_Pos))) +#define AFEC_CGR_GAIN4_Pos 8 +#define AFEC_CGR_GAIN4_Msk (0x3u << AFEC_CGR_GAIN4_Pos) /**< \brief (AFEC_CGR) Gain for Channel 4 */ +#define AFEC_CGR_GAIN4(value) ((AFEC_CGR_GAIN4_Msk & ((value) << AFEC_CGR_GAIN4_Pos))) +#define AFEC_CGR_GAIN5_Pos 10 +#define AFEC_CGR_GAIN5_Msk (0x3u << AFEC_CGR_GAIN5_Pos) /**< \brief (AFEC_CGR) Gain for Channel 5 */ +#define AFEC_CGR_GAIN5(value) ((AFEC_CGR_GAIN5_Msk & ((value) << AFEC_CGR_GAIN5_Pos))) +#define AFEC_CGR_GAIN6_Pos 12 +#define AFEC_CGR_GAIN6_Msk (0x3u << AFEC_CGR_GAIN6_Pos) /**< \brief (AFEC_CGR) Gain for Channel 6 */ +#define AFEC_CGR_GAIN6(value) ((AFEC_CGR_GAIN6_Msk & ((value) << AFEC_CGR_GAIN6_Pos))) +#define AFEC_CGR_GAIN7_Pos 14 +#define AFEC_CGR_GAIN7_Msk (0x3u << AFEC_CGR_GAIN7_Pos) /**< \brief (AFEC_CGR) Gain for Channel 7 */ +#define AFEC_CGR_GAIN7(value) ((AFEC_CGR_GAIN7_Msk & ((value) << AFEC_CGR_GAIN7_Pos))) +#define AFEC_CGR_GAIN8_Pos 16 +#define AFEC_CGR_GAIN8_Msk (0x3u << AFEC_CGR_GAIN8_Pos) /**< \brief (AFEC_CGR) Gain for Channel 8 */ +#define AFEC_CGR_GAIN8(value) ((AFEC_CGR_GAIN8_Msk & ((value) << AFEC_CGR_GAIN8_Pos))) +#define AFEC_CGR_GAIN9_Pos 18 +#define AFEC_CGR_GAIN9_Msk (0x3u << AFEC_CGR_GAIN9_Pos) /**< \brief (AFEC_CGR) Gain for Channel 9 */ +#define AFEC_CGR_GAIN9(value) ((AFEC_CGR_GAIN9_Msk & ((value) << AFEC_CGR_GAIN9_Pos))) +#define AFEC_CGR_GAIN10_Pos 20 +#define AFEC_CGR_GAIN10_Msk (0x3u << AFEC_CGR_GAIN10_Pos) /**< \brief (AFEC_CGR) Gain for Channel 10 */ +#define AFEC_CGR_GAIN10(value) ((AFEC_CGR_GAIN10_Msk & ((value) << AFEC_CGR_GAIN10_Pos))) +#define AFEC_CGR_GAIN11_Pos 22 +#define AFEC_CGR_GAIN11_Msk (0x3u << AFEC_CGR_GAIN11_Pos) /**< \brief (AFEC_CGR) Gain for Channel 11 */ +#define AFEC_CGR_GAIN11(value) ((AFEC_CGR_GAIN11_Msk & ((value) << AFEC_CGR_GAIN11_Pos))) +/* -------- AFEC_DIFFR : (AFEC Offset: 0x60) AFEC Channel Differential Register -------- */ +#define AFEC_DIFFR_DIFF0 (0x1u << 0) /**< \brief (AFEC_DIFFR) Differential inputs for channel 0 */ +#define AFEC_DIFFR_DIFF1 (0x1u << 1) /**< \brief (AFEC_DIFFR) Differential inputs for channel 1 */ +#define AFEC_DIFFR_DIFF2 (0x1u << 2) /**< \brief (AFEC_DIFFR) Differential inputs for channel 2 */ +#define AFEC_DIFFR_DIFF3 (0x1u << 3) /**< \brief (AFEC_DIFFR) Differential inputs for channel 3 */ +#define AFEC_DIFFR_DIFF4 (0x1u << 4) /**< \brief (AFEC_DIFFR) Differential inputs for channel 4 */ +#define AFEC_DIFFR_DIFF5 (0x1u << 5) /**< \brief (AFEC_DIFFR) Differential inputs for channel 5 */ +#define AFEC_DIFFR_DIFF6 (0x1u << 6) /**< \brief (AFEC_DIFFR) Differential inputs for channel 6 */ +#define AFEC_DIFFR_DIFF7 (0x1u << 7) /**< \brief (AFEC_DIFFR) Differential inputs for channel 7 */ +#define AFEC_DIFFR_DIFF8 (0x1u << 8) /**< \brief (AFEC_DIFFR) Differential inputs for channel 8 */ +#define AFEC_DIFFR_DIFF9 (0x1u << 9) /**< \brief (AFEC_DIFFR) Differential inputs for channel 9 */ +#define AFEC_DIFFR_DIFF10 (0x1u << 10) /**< \brief (AFEC_DIFFR) Differential inputs for channel 10 */ +#define AFEC_DIFFR_DIFF11 (0x1u << 11) /**< \brief (AFEC_DIFFR) Differential inputs for channel 11 */ +/* -------- AFEC_CSELR : (AFEC Offset: 0x64) AFEC Channel Selection Register -------- */ +#define AFEC_CSELR_CSEL_Pos 0 +#define AFEC_CSELR_CSEL_Msk (0xfu << AFEC_CSELR_CSEL_Pos) /**< \brief (AFEC_CSELR) Channel Selection */ +#define AFEC_CSELR_CSEL(value) ((AFEC_CSELR_CSEL_Msk & ((value) << AFEC_CSELR_CSEL_Pos))) +/* -------- AFEC_CDR : (AFEC Offset: 0x68) AFEC Channel Data Register -------- */ +#define AFEC_CDR_DATA_Pos 0 +#define AFEC_CDR_DATA_Msk (0xffffu << AFEC_CDR_DATA_Pos) /**< \brief (AFEC_CDR) Converted Data */ +/* -------- AFEC_COCR : (AFEC Offset: 0x6C) AFEC Channel Offset Compensation Register -------- */ +#define AFEC_COCR_AOFF_Pos 0 +#define AFEC_COCR_AOFF_Msk (0xfffu << AFEC_COCR_AOFF_Pos) /**< \brief (AFEC_COCR) Analog Offset */ +#define AFEC_COCR_AOFF(value) ((AFEC_COCR_AOFF_Msk & ((value) << AFEC_COCR_AOFF_Pos))) +/* -------- AFEC_TEMPMR : (AFEC Offset: 0x70) AFEC Temperature Sensor Mode Register -------- */ +#define AFEC_TEMPMR_RTCT (0x1u << 0) /**< \brief (AFEC_TEMPMR) Temperature Sensor RTC Trigger Mode */ +#define AFEC_TEMPMR_TEMPCMPMOD_Pos 4 +#define AFEC_TEMPMR_TEMPCMPMOD_Msk (0x3u << AFEC_TEMPMR_TEMPCMPMOD_Pos) /**< \brief (AFEC_TEMPMR) Temperature Comparison Mode */ +#define AFEC_TEMPMR_TEMPCMPMOD(value) ((AFEC_TEMPMR_TEMPCMPMOD_Msk & ((value) << AFEC_TEMPMR_TEMPCMPMOD_Pos))) +#define AFEC_TEMPMR_TEMPCMPMOD_LOW (0x0u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is lower than the low threshold of the window. */ +#define AFEC_TEMPMR_TEMPCMPMOD_HIGH (0x1u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is higher than the high threshold of the window. */ +#define AFEC_TEMPMR_TEMPCMPMOD_IN (0x2u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is in the comparison window. */ +#define AFEC_TEMPMR_TEMPCMPMOD_OUT (0x3u << 4) /**< \brief (AFEC_TEMPMR) Generates an event when the converted data is out of the comparison window. */ +/* -------- AFEC_TEMPCWR : (AFEC Offset: 0x74) AFEC Temperature Compare Window Register -------- */ +#define AFEC_TEMPCWR_TLOWTHRES_Pos 0 +#define AFEC_TEMPCWR_TLOWTHRES_Msk (0xffffu << AFEC_TEMPCWR_TLOWTHRES_Pos) /**< \brief (AFEC_TEMPCWR) Temperature Low Threshold */ +#define AFEC_TEMPCWR_TLOWTHRES(value) ((AFEC_TEMPCWR_TLOWTHRES_Msk & ((value) << AFEC_TEMPCWR_TLOWTHRES_Pos))) +#define AFEC_TEMPCWR_THIGHTHRES_Pos 16 +#define AFEC_TEMPCWR_THIGHTHRES_Msk (0xffffu << AFEC_TEMPCWR_THIGHTHRES_Pos) /**< \brief (AFEC_TEMPCWR) Temperature High Threshold */ +#define AFEC_TEMPCWR_THIGHTHRES(value) ((AFEC_TEMPCWR_THIGHTHRES_Msk & ((value) << AFEC_TEMPCWR_THIGHTHRES_Pos))) +/* -------- AFEC_ACR : (AFEC Offset: 0x94) AFEC Analog Control Register -------- */ +#define AFEC_ACR_PGA0EN (0x1u << 2) /**< \brief (AFEC_ACR) PGA0 Enable */ +#define AFEC_ACR_PGA1EN (0x1u << 3) /**< \brief (AFEC_ACR) PGA1 Enable */ +#define AFEC_ACR_IBCTL_Pos 8 +#define AFEC_ACR_IBCTL_Msk (0x3u << AFEC_ACR_IBCTL_Pos) /**< \brief (AFEC_ACR) AFE Bias Current Control */ +#define AFEC_ACR_IBCTL(value) ((AFEC_ACR_IBCTL_Msk & ((value) << AFEC_ACR_IBCTL_Pos))) +/* -------- AFEC_SHMR : (AFEC Offset: 0xA0) AFEC Sample & Hold Mode Register -------- */ +#define AFEC_SHMR_DUAL0 (0x1u << 0) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 0 */ +#define AFEC_SHMR_DUAL1 (0x1u << 1) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 1 */ +#define AFEC_SHMR_DUAL2 (0x1u << 2) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 2 */ +#define AFEC_SHMR_DUAL3 (0x1u << 3) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 3 */ +#define AFEC_SHMR_DUAL4 (0x1u << 4) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 4 */ +#define AFEC_SHMR_DUAL5 (0x1u << 5) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 5 */ +#define AFEC_SHMR_DUAL6 (0x1u << 6) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 6 */ +#define AFEC_SHMR_DUAL7 (0x1u << 7) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 7 */ +#define AFEC_SHMR_DUAL8 (0x1u << 8) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 8 */ +#define AFEC_SHMR_DUAL9 (0x1u << 9) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 9 */ +#define AFEC_SHMR_DUAL10 (0x1u << 10) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 10 */ +#define AFEC_SHMR_DUAL11 (0x1u << 11) /**< \brief (AFEC_SHMR) Dual Sample & Hold for channel 11 */ +/* -------- AFEC_COSR : (AFEC Offset: 0xD0) AFEC Correction Select Register -------- */ +#define AFEC_COSR_CSEL (0x1u << 0) /**< \brief (AFEC_COSR) Sample & Hold unit Correction Select */ +/* -------- AFEC_CVR : (AFEC Offset: 0xD4) AFEC Correction Values Register -------- */ +#define AFEC_CVR_OFFSETCORR_Pos 0 +#define AFEC_CVR_OFFSETCORR_Msk (0xffffu << AFEC_CVR_OFFSETCORR_Pos) /**< \brief (AFEC_CVR) Offset Correction */ +#define AFEC_CVR_OFFSETCORR(value) ((AFEC_CVR_OFFSETCORR_Msk & ((value) << AFEC_CVR_OFFSETCORR_Pos))) +#define AFEC_CVR_GAINCORR_Pos 16 +#define AFEC_CVR_GAINCORR_Msk (0xffffu << AFEC_CVR_GAINCORR_Pos) /**< \brief (AFEC_CVR) Gain Correction */ +#define AFEC_CVR_GAINCORR(value) ((AFEC_CVR_GAINCORR_Msk & ((value) << AFEC_CVR_GAINCORR_Pos))) +/* -------- AFEC_CECR : (AFEC Offset: 0xD8) AFEC Channel Error Correction Register -------- */ +#define AFEC_CECR_ECORR0 (0x1u << 0) /**< \brief (AFEC_CECR) Error Correction Enable for channel 0 */ +#define AFEC_CECR_ECORR1 (0x1u << 1) /**< \brief (AFEC_CECR) Error Correction Enable for channel 1 */ +#define AFEC_CECR_ECORR2 (0x1u << 2) /**< \brief (AFEC_CECR) Error Correction Enable for channel 2 */ +#define AFEC_CECR_ECORR3 (0x1u << 3) /**< \brief (AFEC_CECR) Error Correction Enable for channel 3 */ +#define AFEC_CECR_ECORR4 (0x1u << 4) /**< \brief (AFEC_CECR) Error Correction Enable for channel 4 */ +#define AFEC_CECR_ECORR5 (0x1u << 5) /**< \brief (AFEC_CECR) Error Correction Enable for channel 5 */ +#define AFEC_CECR_ECORR6 (0x1u << 6) /**< \brief (AFEC_CECR) Error Correction Enable for channel 6 */ +#define AFEC_CECR_ECORR7 (0x1u << 7) /**< \brief (AFEC_CECR) Error Correction Enable for channel 7 */ +#define AFEC_CECR_ECORR8 (0x1u << 8) /**< \brief (AFEC_CECR) Error Correction Enable for channel 8 */ +#define AFEC_CECR_ECORR9 (0x1u << 9) /**< \brief (AFEC_CECR) Error Correction Enable for channel 9 */ +#define AFEC_CECR_ECORR10 (0x1u << 10) /**< \brief (AFEC_CECR) Error Correction Enable for channel 10 */ +#define AFEC_CECR_ECORR11 (0x1u << 11) /**< \brief (AFEC_CECR) Error Correction Enable for channel 11 */ +/* -------- AFEC_WPMR : (AFEC Offset: 0xE4) AFEC Write Protection Mode Register -------- */ +#define AFEC_WPMR_WPEN (0x1u << 0) /**< \brief (AFEC_WPMR) Write Protection Enable */ +#define AFEC_WPMR_WPKEY_Pos 8 +#define AFEC_WPMR_WPKEY_Msk (0xffffffu << AFEC_WPMR_WPKEY_Pos) /**< \brief (AFEC_WPMR) Write Protect KEY */ +#define AFEC_WPMR_WPKEY(value) ((AFEC_WPMR_WPKEY_Msk & ((value) << AFEC_WPMR_WPKEY_Pos))) +#define AFEC_WPMR_WPKEY_PASSWD (0x414443u << 8) /**< \brief (AFEC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- AFEC_WPSR : (AFEC Offset: 0xE8) AFEC Write Protection Status Register -------- */ +#define AFEC_WPSR_WPVS (0x1u << 0) /**< \brief (AFEC_WPSR) Write Protect Violation Status */ +#define AFEC_WPSR_WPVSRC_Pos 8 +#define AFEC_WPSR_WPVSRC_Msk (0xffffu << AFEC_WPSR_WPVSRC_Pos) /**< \brief (AFEC_WPSR) Write Protect Violation Source */ +/* -------- AFEC_VERSION : (AFEC Offset: 0xFC) AFEC Version Register -------- */ +#define AFEC_VERSION_VERSION_Pos 0 +#define AFEC_VERSION_VERSION_Msk (0xfffu << AFEC_VERSION_VERSION_Pos) /**< \brief (AFEC_VERSION) Version of the Hardware Module */ +#define AFEC_VERSION_MFN_Pos 16 +#define AFEC_VERSION_MFN_Msk (0x7u << AFEC_VERSION_MFN_Pos) /**< \brief (AFEC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_AFEC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h new file mode 100644 index 00000000..3ba65d34 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h @@ -0,0 +1,128 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_CHIPID_COMPONENT_ +#define _SAME70_CHIPID_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Chip Identifier */ +/* ============================================================================= */ +/** \addtogroup SAME70_CHIPID Chip Identifier */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Chipid hardware registers */ +typedef struct { + __I uint32_t CHIPID_CIDR; /**< \brief (Chipid Offset: 0x0) Chip ID Register */ + __I uint32_t CHIPID_EXID; /**< \brief (Chipid Offset: 0x4) Chip ID Extension Register */ +} Chipid; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- CHIPID_CIDR : (CHIPID Offset: 0x0) Chip ID Register -------- */ +#define CHIPID_CIDR_VERSION_Pos 0 +#define CHIPID_CIDR_VERSION_Msk (0x1fu << CHIPID_CIDR_VERSION_Pos) /**< \brief (CHIPID_CIDR) Version of the Device */ +#define CHIPID_CIDR_EPROC_Pos 5 +#define CHIPID_CIDR_EPROC_Msk (0x7u << CHIPID_CIDR_EPROC_Pos) /**< \brief (CHIPID_CIDR) Embedded Processor */ +#define CHIPID_CIDR_EPROC_SAMx7 (0x0u << 5) /**< \brief (CHIPID_CIDR) Cortex-M7 */ +#define CHIPID_CIDR_EPROC_ARM946ES (0x1u << 5) /**< \brief (CHIPID_CIDR) ARM946ES */ +#define CHIPID_CIDR_EPROC_ARM7TDMI (0x2u << 5) /**< \brief (CHIPID_CIDR) ARM7TDMI */ +#define CHIPID_CIDR_EPROC_CM3 (0x3u << 5) /**< \brief (CHIPID_CIDR) Cortex-M3 */ +#define CHIPID_CIDR_EPROC_ARM920T (0x4u << 5) /**< \brief (CHIPID_CIDR) ARM920T */ +#define CHIPID_CIDR_EPROC_ARM926EJS (0x5u << 5) /**< \brief (CHIPID_CIDR) ARM926EJS */ +#define CHIPID_CIDR_EPROC_CA5 (0x6u << 5) /**< \brief (CHIPID_CIDR) Cortex-A5 */ +#define CHIPID_CIDR_EPROC_CM4 (0x7u << 5) /**< \brief (CHIPID_CIDR) Cortex-M4 */ +#define CHIPID_CIDR_NVPSIZ_Pos 8 +#define CHIPID_CIDR_NVPSIZ_Msk (0xfu << CHIPID_CIDR_NVPSIZ_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ_NONE (0x0u << 8) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ_8K (0x1u << 8) /**< \brief (CHIPID_CIDR) 8 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_16K (0x2u << 8) /**< \brief (CHIPID_CIDR) 16 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_32K (0x3u << 8) /**< \brief (CHIPID_CIDR) 32 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_64K (0x5u << 8) /**< \brief (CHIPID_CIDR) 64 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_128K (0x7u << 8) /**< \brief (CHIPID_CIDR) 128 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_160K (0x8u << 8) /**< \brief (CHIPID_CIDR) 160 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_256K (0x9u << 8) /**< \brief (CHIPID_CIDR) 256 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_512K (0xAu << 8) /**< \brief (CHIPID_CIDR) 512 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_1024K (0xCu << 8) /**< \brief (CHIPID_CIDR) 1024 Kbytes */ +#define CHIPID_CIDR_NVPSIZ_2048K (0xEu << 8) /**< \brief (CHIPID_CIDR) 2048 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_Pos 12 +#define CHIPID_CIDR_NVPSIZ2_Msk (0xfu << CHIPID_CIDR_NVPSIZ2_Pos) /**< \brief (CHIPID_CIDR) Second Nonvolatile Program Memory Size */ +#define CHIPID_CIDR_NVPSIZ2_NONE (0x0u << 12) /**< \brief (CHIPID_CIDR) None */ +#define CHIPID_CIDR_NVPSIZ2_8K (0x1u << 12) /**< \brief (CHIPID_CIDR) 8 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_16K (0x2u << 12) /**< \brief (CHIPID_CIDR) 16 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_32K (0x3u << 12) /**< \brief (CHIPID_CIDR) 32 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_64K (0x5u << 12) /**< \brief (CHIPID_CIDR) 64 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_128K (0x7u << 12) /**< \brief (CHIPID_CIDR) 128 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_256K (0x9u << 12) /**< \brief (CHIPID_CIDR) 256 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_512K (0xAu << 12) /**< \brief (CHIPID_CIDR) 512 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_1024K (0xCu << 12) /**< \brief (CHIPID_CIDR) 1024 Kbytes */ +#define CHIPID_CIDR_NVPSIZ2_2048K (0xEu << 12) /**< \brief (CHIPID_CIDR) 2048 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_Pos 16 +#define CHIPID_CIDR_SRAMSIZ_Msk (0xfu << CHIPID_CIDR_SRAMSIZ_Pos) /**< \brief (CHIPID_CIDR) Internal SRAM Size */ +#define CHIPID_CIDR_SRAMSIZ_48K (0x0u << 16) /**< \brief (CHIPID_CIDR) 48 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_192K (0x1u << 16) /**< \brief (CHIPID_CIDR) 192 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_384K (0x2u << 16) /**< \brief (CHIPID_CIDR) 384 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_6K (0x3u << 16) /**< \brief (CHIPID_CIDR) 6 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_24K (0x4u << 16) /**< \brief (CHIPID_CIDR) 24 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_4K (0x5u << 16) /**< \brief (CHIPID_CIDR) 4 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_80K (0x6u << 16) /**< \brief (CHIPID_CIDR) 80 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_160K (0x7u << 16) /**< \brief (CHIPID_CIDR) 160 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_8K (0x8u << 16) /**< \brief (CHIPID_CIDR) 8 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_16K (0x9u << 16) /**< \brief (CHIPID_CIDR) 16 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_32K (0xAu << 16) /**< \brief (CHIPID_CIDR) 32 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_64K (0xBu << 16) /**< \brief (CHIPID_CIDR) 64 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_128K (0xCu << 16) /**< \brief (CHIPID_CIDR) 128 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_256K (0xDu << 16) /**< \brief (CHIPID_CIDR) 256 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_96K (0xEu << 16) /**< \brief (CHIPID_CIDR) 96 Kbytes */ +#define CHIPID_CIDR_SRAMSIZ_512K (0xFu << 16) /**< \brief (CHIPID_CIDR) 512 Kbytes */ +#define CHIPID_CIDR_ARCH_Pos 20 +#define CHIPID_CIDR_ARCH_Msk (0xffu << CHIPID_CIDR_ARCH_Pos) /**< \brief (CHIPID_CIDR) Architecture Identifier */ +#define CHIPID_CIDR_ARCH_SAME70 (0x10u << 20) /**< \brief (CHIPID_CIDR) SAM E70 */ +#define CHIPID_CIDR_ARCH_SAMS70 (0x11u << 20) /**< \brief (CHIPID_CIDR) SAM S70 */ +#define CHIPID_CIDR_ARCH_SAMV71 (0x12u << 20) /**< \brief (CHIPID_CIDR) SAM V71 */ +#define CHIPID_CIDR_ARCH_SAMV70 (0x13u << 20) /**< \brief (CHIPID_CIDR) SAM V70 */ +#define CHIPID_CIDR_NVPTYP_Pos 28 +#define CHIPID_CIDR_NVPTYP_Msk (0x7u << CHIPID_CIDR_NVPTYP_Pos) /**< \brief (CHIPID_CIDR) Nonvolatile Program Memory Type */ +#define CHIPID_CIDR_NVPTYP_ROM (0x0u << 28) /**< \brief (CHIPID_CIDR) ROM */ +#define CHIPID_CIDR_NVPTYP_ROMLESS (0x1u << 28) /**< \brief (CHIPID_CIDR) ROMless or on-chip Flash */ +#define CHIPID_CIDR_NVPTYP_FLASH (0x2u << 28) /**< \brief (CHIPID_CIDR) Embedded Flash Memory */ +#define CHIPID_CIDR_NVPTYP_ROM_FLASH (0x3u << 28) /**< \brief (CHIPID_CIDR) ROM and Embedded Flash Memory- NVPSIZ is ROM size- NVPSIZ2 is Flash size */ +#define CHIPID_CIDR_NVPTYP_SRAM (0x4u << 28) /**< \brief (CHIPID_CIDR) SRAM emulating ROM */ +#define CHIPID_CIDR_EXT (0x1u << 31) /**< \brief (CHIPID_CIDR) Extension Flag */ +/* -------- CHIPID_EXID : (CHIPID Offset: 0x4) Chip ID Extension Register -------- */ +#define CHIPID_EXID_EXID_Pos 0 +#define CHIPID_EXID_EXID_Msk (0xffffffffu << CHIPID_EXID_EXID_Pos) /**< \brief (CHIPID_EXID) Chip ID Extension */ + +/*@}*/ + + +#endif /* _SAME70_CHIPID_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h new file mode 100644 index 00000000..899126fc --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h @@ -0,0 +1,217 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_DACC_COMPONENT_ +#define _SAME70_DACC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Digital-to-Analog Converter Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_DACC Digital-to-Analog Converter Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Dacc hardware registers */ +typedef struct { + __O uint32_t DACC_CR; /**< \brief (Dacc Offset: 0x00) Control Register */ + __IO uint32_t DACC_MR; /**< \brief (Dacc Offset: 0x04) Mode Register */ + __IO uint32_t DACC_TRIGR; /**< \brief (Dacc Offset: 0x08) Trigger Register */ + __I uint32_t Reserved1[1]; + __O uint32_t DACC_CHER; /**< \brief (Dacc Offset: 0x10) Channel Enable Register */ + __O uint32_t DACC_CHDR; /**< \brief (Dacc Offset: 0x14) Channel Disable Register */ + __I uint32_t DACC_CHSR; /**< \brief (Dacc Offset: 0x18) Channel Status Register */ + __O uint32_t DACC_CDR[2]; /**< \brief (Dacc Offset: 0x1C) Conversion Data Register */ + __O uint32_t DACC_IER; /**< \brief (Dacc Offset: 0x24) Interrupt Enable Register */ + __O uint32_t DACC_IDR; /**< \brief (Dacc Offset: 0x28) Interrupt Disable Register */ + __I uint32_t DACC_IMR; /**< \brief (Dacc Offset: 0x2C) Interrupt Mask Register */ + __I uint32_t DACC_ISR; /**< \brief (Dacc Offset: 0x30) Interrupt Status Register */ + __I uint32_t Reserved2[24]; + __IO uint32_t DACC_ACR; /**< \brief (Dacc Offset: 0x94) Analog Current Register */ + __I uint32_t Reserved3[19]; + __IO uint32_t DACC_WPMR; /**< \brief (Dacc Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t DACC_WPSR; /**< \brief (Dacc Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved4[4]; + __I uint32_t DACC_VERSION; /**< \brief (Dacc Offset: 0xFC) Version Register */ +} Dacc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- DACC_CR : (DACC Offset: 0x00) Control Register -------- */ +#define DACC_CR_SWRST (0x1u << 0) /**< \brief (DACC_CR) Software Reset */ +/* -------- DACC_MR : (DACC Offset: 0x04) Mode Register -------- */ +#define DACC_MR_MAXS0 (0x1u << 0) /**< \brief (DACC_MR) Max Speed Mode for Channel 0 */ +#define DACC_MR_MAXS0_TRIG_EVENT (0x0u << 0) /**< \brief (DACC_MR) Triggered by selected event */ +#define DACC_MR_MAXS0_MAXIMUM (0x1u << 0) /**< \brief (DACC_MR) Max Speed Mode enabled */ +#define DACC_MR_MAXS1 (0x1u << 1) /**< \brief (DACC_MR) Max Speed Mode for Channel 1 */ +#define DACC_MR_MAXS1_TRIG_EVENT (0x0u << 1) /**< \brief (DACC_MR) Triggered by selected event */ +#define DACC_MR_MAXS1_MAXIMUM (0x1u << 1) /**< \brief (DACC_MR) Max Speed Mode enabled */ +#define DACC_MR_WORD (0x1u << 4) /**< \brief (DACC_MR) Word Transfer Mode */ +#define DACC_MR_WORD_DISABLED (0x0u << 4) /**< \brief (DACC_MR) One data to convert is written to the FIFO per access to DACC */ +#define DACC_MR_WORD_ENABLED (0x1u << 4) /**< \brief (DACC_MR) Two data to convert are written to the FIFO per access to DACC (reduces number of requests to DMA and the number of system bus accesses) */ +#define DACC_MR_ZERO (0x1u << 5) /**< \brief (DACC_MR) Must always be written to 0. */ +#define DACC_MR_REFRESH_Pos 8 +#define DACC_MR_REFRESH_Msk (0xffu << DACC_MR_REFRESH_Pos) /**< \brief (DACC_MR) Refresh Period */ +#define DACC_MR_REFRESH(value) ((DACC_MR_REFRESH_Msk & ((value) << DACC_MR_REFRESH_Pos))) +#define DACC_MR_DIFF (0x1u << 23) /**< \brief (DACC_MR) Differential Mode */ +#define DACC_MR_DIFF_DISABLED (0x0u << 23) /**< \brief (DACC_MR) DAC0 and DAC1 outputs can be separately configured */ +#define DACC_MR_DIFF_ENABLED (0x1u << 23) /**< \brief (DACC_MR) DACP and DACN outputs are configured by the channel 0 value. */ +#define DACC_MR_PRESCALER_Pos 24 +#define DACC_MR_PRESCALER_Msk (0xfu << DACC_MR_PRESCALER_Pos) /**< \brief (DACC_MR) Peripheral Clock to DAC Clock Ratio */ +#define DACC_MR_PRESCALER(value) ((DACC_MR_PRESCALER_Msk & ((value) << DACC_MR_PRESCALER_Pos))) +/* -------- DACC_TRIGR : (DACC Offset: 0x08) Trigger Register -------- */ +#define DACC_TRIGR_TRGEN0 (0x1u << 0) /**< \brief (DACC_TRIGR) Trigger Enable of Channel 0 */ +#define DACC_TRIGR_TRGEN0_DIS (0x0u << 0) /**< \brief (DACC_TRIGR) External trigger mode disabled. DAC is in free running mode. */ +#define DACC_TRIGR_TRGEN0_EN (0x1u << 0) /**< \brief (DACC_TRIGR) External trigger mode enabled. */ +#define DACC_TRIGR_TRGEN1 (0x1u << 1) /**< \brief (DACC_TRIGR) Trigger Enable of Channel 1 */ +#define DACC_TRIGR_TRGEN1_DIS (0x0u << 1) /**< \brief (DACC_TRIGR) External trigger mode disabled. DAC is in free running mode. */ +#define DACC_TRIGR_TRGEN1_EN (0x1u << 1) /**< \brief (DACC_TRIGR) External trigger mode enabled. */ +#define DACC_TRIGR_TRGSEL0_Pos 4 +#define DACC_TRIGR_TRGSEL0_Msk (0x7u << DACC_TRIGR_TRGSEL0_Pos) /**< \brief (DACC_TRIGR) Trigger Selection of Channel 0 */ +#define DACC_TRIGR_TRGSEL0(value) ((DACC_TRIGR_TRGSEL0_Msk & ((value) << DACC_TRIGR_TRGSEL0_Pos))) +#define DACC_TRIGR_TRGSEL0_TRGSEL0 (0x0u << 4) /**< \brief (DACC_TRIGR) DATRG */ +#define DACC_TRIGR_TRGSEL0_TRGSEL1 (0x1u << 4) /**< \brief (DACC_TRIGR) TC0 output */ +#define DACC_TRIGR_TRGSEL0_TRGSEL2 (0x2u << 4) /**< \brief (DACC_TRIGR) TC1 output */ +#define DACC_TRIGR_TRGSEL0_TRGSEL3 (0x3u << 4) /**< \brief (DACC_TRIGR) TC2 output */ +#define DACC_TRIGR_TRGSEL0_TRGSEL4 (0x4u << 4) /**< \brief (DACC_TRIGR) PWM0 event 0 */ +#define DACC_TRIGR_TRGSEL0_TRGSEL5 (0x5u << 4) /**< \brief (DACC_TRIGR) PWM0 event 1 */ +#define DACC_TRIGR_TRGSEL0_TRGSEL6 (0x6u << 4) /**< \brief (DACC_TRIGR) PWM1 event 0 */ +#define DACC_TRIGR_TRGSEL0_TRGSEL7 (0x7u << 4) /**< \brief (DACC_TRIGR) PWM1 event 1 */ +#define DACC_TRIGR_TRGSEL1_Pos 8 +#define DACC_TRIGR_TRGSEL1_Msk (0x7u << DACC_TRIGR_TRGSEL1_Pos) /**< \brief (DACC_TRIGR) Trigger Selection of Channel 1 */ +#define DACC_TRIGR_TRGSEL1(value) ((DACC_TRIGR_TRGSEL1_Msk & ((value) << DACC_TRIGR_TRGSEL1_Pos))) +#define DACC_TRIGR_TRGSEL1_TRGSEL0 (0x0u << 8) /**< \brief (DACC_TRIGR) DATRG */ +#define DACC_TRIGR_TRGSEL1_TRGSEL1 (0x1u << 8) /**< \brief (DACC_TRIGR) TC0 output */ +#define DACC_TRIGR_TRGSEL1_TRGSEL2 (0x2u << 8) /**< \brief (DACC_TRIGR) TC1 output */ +#define DACC_TRIGR_TRGSEL1_TRGSEL3 (0x3u << 8) /**< \brief (DACC_TRIGR) TC2 output */ +#define DACC_TRIGR_TRGSEL1_TRGSEL4 (0x4u << 8) /**< \brief (DACC_TRIGR) PWM0 event 0 */ +#define DACC_TRIGR_TRGSEL1_TRGSEL5 (0x5u << 8) /**< \brief (DACC_TRIGR) PWM0 event 1 */ +#define DACC_TRIGR_TRGSEL1_TRGSEL6 (0x6u << 8) /**< \brief (DACC_TRIGR) PWM1 event 0 */ +#define DACC_TRIGR_TRGSEL1_TRGSEL7 (0x7u << 8) /**< \brief (DACC_TRIGR) PWM1 event 1 */ +#define DACC_TRIGR_OSR0_Pos 16 +#define DACC_TRIGR_OSR0_Msk (0x7u << DACC_TRIGR_OSR0_Pos) /**< \brief (DACC_TRIGR) Over Sampling Ratio of Channel 0 */ +#define DACC_TRIGR_OSR0(value) ((DACC_TRIGR_OSR0_Msk & ((value) << DACC_TRIGR_OSR0_Pos))) +#define DACC_TRIGR_OSR0_OSR_1 (0x0u << 16) /**< \brief (DACC_TRIGR) OSR = 1 */ +#define DACC_TRIGR_OSR0_OSR_2 (0x1u << 16) /**< \brief (DACC_TRIGR) OSR = 2 */ +#define DACC_TRIGR_OSR0_OSR_4 (0x2u << 16) /**< \brief (DACC_TRIGR) OSR = 4 */ +#define DACC_TRIGR_OSR0_OSR_8 (0x3u << 16) /**< \brief (DACC_TRIGR) OSR = 8 */ +#define DACC_TRIGR_OSR0_OSR_16 (0x4u << 16) /**< \brief (DACC_TRIGR) OSR = 16 */ +#define DACC_TRIGR_OSR0_OSR_32 (0x5u << 16) /**< \brief (DACC_TRIGR) OSR = 32 */ +#define DACC_TRIGR_OSR1_Pos 20 +#define DACC_TRIGR_OSR1_Msk (0x7u << DACC_TRIGR_OSR1_Pos) /**< \brief (DACC_TRIGR) Over Sampling Ratio of Channel 1 */ +#define DACC_TRIGR_OSR1(value) ((DACC_TRIGR_OSR1_Msk & ((value) << DACC_TRIGR_OSR1_Pos))) +#define DACC_TRIGR_OSR1_OSR_1 (0x0u << 20) /**< \brief (DACC_TRIGR) OSR = 1 */ +#define DACC_TRIGR_OSR1_OSR_2 (0x1u << 20) /**< \brief (DACC_TRIGR) OSR = 2 */ +#define DACC_TRIGR_OSR1_OSR_4 (0x2u << 20) /**< \brief (DACC_TRIGR) OSR = 4 */ +#define DACC_TRIGR_OSR1_OSR_8 (0x3u << 20) /**< \brief (DACC_TRIGR) OSR = 8 */ +#define DACC_TRIGR_OSR1_OSR_16 (0x4u << 20) /**< \brief (DACC_TRIGR) OSR = 16 */ +#define DACC_TRIGR_OSR1_OSR_32 (0x5u << 20) /**< \brief (DACC_TRIGR) OSR = 32 */ +/* -------- DACC_CHER : (DACC Offset: 0x10) Channel Enable Register -------- */ +#define DACC_CHER_CH0 (0x1u << 0) /**< \brief (DACC_CHER) Channel 0 Enable */ +#define DACC_CHER_CH1 (0x1u << 1) /**< \brief (DACC_CHER) Channel 1 Enable */ +/* -------- DACC_CHDR : (DACC Offset: 0x14) Channel Disable Register -------- */ +#define DACC_CHDR_CH0 (0x1u << 0) /**< \brief (DACC_CHDR) Channel 0 Disable */ +#define DACC_CHDR_CH1 (0x1u << 1) /**< \brief (DACC_CHDR) Channel 1 Disable */ +/* -------- DACC_CHSR : (DACC Offset: 0x18) Channel Status Register -------- */ +#define DACC_CHSR_CH0 (0x1u << 0) /**< \brief (DACC_CHSR) Channel 0 Status */ +#define DACC_CHSR_CH1 (0x1u << 1) /**< \brief (DACC_CHSR) Channel 1 Status */ +#define DACC_CHSR_DACRDY0 (0x1u << 8) /**< \brief (DACC_CHSR) DAC ready flag */ +#define DACC_CHSR_DACRDY1 (0x1u << 9) /**< \brief (DACC_CHSR) DAC ready flag */ +/* -------- DACC_CDR[2] : (DACC Offset: 0x1C) Conversion Data Register -------- */ +#define DACC_CDR_DATA0_Pos 0 +#define DACC_CDR_DATA0_Msk (0xffffu << DACC_CDR_DATA0_Pos) /**< \brief (DACC_CDR[2]) Data to Convert for channel 0 */ +#define DACC_CDR_DATA0(value) ((DACC_CDR_DATA0_Msk & ((value) << DACC_CDR_DATA0_Pos))) +#define DACC_CDR_DATA1_Pos 16 +#define DACC_CDR_DATA1_Msk (0xffffu << DACC_CDR_DATA1_Pos) /**< \brief (DACC_CDR[2]) Data to Convert for channel 1 */ +#define DACC_CDR_DATA1(value) ((DACC_CDR_DATA1_Msk & ((value) << DACC_CDR_DATA1_Pos))) +/* -------- DACC_IER : (DACC Offset: 0x24) Interrupt Enable Register -------- */ +#define DACC_IER_TXRDY0 (0x1u << 0) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable of channel 0 */ +#define DACC_IER_TXRDY1 (0x1u << 1) /**< \brief (DACC_IER) Transmit Ready Interrupt Enable of channel 1 */ +#define DACC_IER_EOC0 (0x1u << 4) /**< \brief (DACC_IER) End of Conversion Interrupt Enable of channel 0 */ +#define DACC_IER_EOC1 (0x1u << 5) /**< \brief (DACC_IER) End of Conversion Interrupt Enable of channel 1 */ +#define DACC_IER_ENDTX0 (0x1u << 8) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable of channel 0 */ +#define DACC_IER_ENDTX1 (0x1u << 9) /**< \brief (DACC_IER) End of Transmit Buffer Interrupt Enable of channel 1 */ +#define DACC_IER_TXBUFE0 (0x1u << 12) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable of channel 0 */ +#define DACC_IER_TXBUFE1 (0x1u << 13) /**< \brief (DACC_IER) Transmit Buffer Empty Interrupt Enable of channel 1 */ +/* -------- DACC_IDR : (DACC Offset: 0x28) Interrupt Disable Register -------- */ +#define DACC_IDR_TXRDY0 (0x1u << 0) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable of channel 0 */ +#define DACC_IDR_TXRDY1 (0x1u << 1) /**< \brief (DACC_IDR) Transmit Ready Interrupt Disable of channel 1 */ +#define DACC_IDR_EOC0 (0x1u << 4) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable of channel 0 */ +#define DACC_IDR_EOC1 (0x1u << 5) /**< \brief (DACC_IDR) End of Conversion Interrupt Disable of channel 1 */ +#define DACC_IDR_ENDTX0 (0x1u << 8) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable of channel 0 */ +#define DACC_IDR_ENDTX1 (0x1u << 9) /**< \brief (DACC_IDR) End of Transmit Buffer Interrupt Disable of channel 1 */ +#define DACC_IDR_TXBUFE0 (0x1u << 12) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable of channel 0 */ +#define DACC_IDR_TXBUFE1 (0x1u << 13) /**< \brief (DACC_IDR) Transmit Buffer Empty Interrupt Disable of channel 1 */ +/* -------- DACC_IMR : (DACC Offset: 0x2C) Interrupt Mask Register -------- */ +#define DACC_IMR_TXRDY0 (0x1u << 0) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask of channel 0 */ +#define DACC_IMR_TXRDY1 (0x1u << 1) /**< \brief (DACC_IMR) Transmit Ready Interrupt Mask of channel 1 */ +#define DACC_IMR_EOC0 (0x1u << 4) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask of channel 0 */ +#define DACC_IMR_EOC1 (0x1u << 5) /**< \brief (DACC_IMR) End of Conversion Interrupt Mask of channel 1 */ +#define DACC_IMR_ENDTX0 (0x1u << 8) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask of channel 0 */ +#define DACC_IMR_ENDTX1 (0x1u << 9) /**< \brief (DACC_IMR) End of Transmit Buffer Interrupt Mask of channel 1 */ +#define DACC_IMR_TXBUFE0 (0x1u << 12) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask of channel 0 */ +#define DACC_IMR_TXBUFE1 (0x1u << 13) /**< \brief (DACC_IMR) Transmit Buffer Empty Interrupt Mask of channel 1 */ +/* -------- DACC_ISR : (DACC Offset: 0x30) Interrupt Status Register -------- */ +#define DACC_ISR_TXRDY0 (0x1u << 0) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag of channel 0 */ +#define DACC_ISR_TXRDY1 (0x1u << 1) /**< \brief (DACC_ISR) Transmit Ready Interrupt Flag of channel 1 */ +#define DACC_ISR_EOC0 (0x1u << 4) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag of channel 0 */ +#define DACC_ISR_EOC1 (0x1u << 5) /**< \brief (DACC_ISR) End of Conversion Interrupt Flag of channel 1 */ +#define DACC_ISR_ENDTX0 (0x1u << 8) /**< \brief (DACC_ISR) End of DMA Interrupt Flag of channel 0 */ +#define DACC_ISR_ENDTX1 (0x1u << 9) /**< \brief (DACC_ISR) End of DMA Interrupt Flag of channel 1 */ +#define DACC_ISR_TXBUFE0 (0x1u << 12) /**< \brief (DACC_ISR) Transmit Buffer Empty of channel 0 */ +#define DACC_ISR_TXBUFE1 (0x1u << 13) /**< \brief (DACC_ISR) Transmit Buffer Empty of channel 1 */ +/* -------- DACC_ACR : (DACC Offset: 0x94) Analog Current Register -------- */ +#define DACC_ACR_IBCTLCH0_Pos 0 +#define DACC_ACR_IBCTLCH0_Msk (0x3u << DACC_ACR_IBCTLCH0_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH0(value) ((DACC_ACR_IBCTLCH0_Msk & ((value) << DACC_ACR_IBCTLCH0_Pos))) +#define DACC_ACR_IBCTLCH1_Pos 2 +#define DACC_ACR_IBCTLCH1_Msk (0x3u << DACC_ACR_IBCTLCH1_Pos) /**< \brief (DACC_ACR) Analog Output Current Control */ +#define DACC_ACR_IBCTLCH1(value) ((DACC_ACR_IBCTLCH1_Msk & ((value) << DACC_ACR_IBCTLCH1_Pos))) +/* -------- DACC_WPMR : (DACC Offset: 0xE4) Write Protection Mode register -------- */ +#define DACC_WPMR_WPEN (0x1u << 0) /**< \brief (DACC_WPMR) Write Protection Enable */ +#define DACC_WPMR_WPKEY_Pos 8 +#define DACC_WPMR_WPKEY_Msk (0xffffffu << DACC_WPMR_WPKEY_Pos) /**< \brief (DACC_WPMR) Write Protect Key */ +#define DACC_WPMR_WPKEY(value) ((DACC_WPMR_WPKEY_Msk & ((value) << DACC_WPMR_WPKEY_Pos))) +#define DACC_WPMR_WPKEY_PASSWD (0x444143u << 8) /**< \brief (DACC_WPMR) Writing any other value in this field aborts the write operation of bit WPEN.Always reads as 0. */ +/* -------- DACC_WPSR : (DACC Offset: 0xE8) Write Protection Status register -------- */ +#define DACC_WPSR_WPVS (0x1u << 0) /**< \brief (DACC_WPSR) Write Protection Violation Status */ +#define DACC_WPSR_WPVSRC_Pos 8 +#define DACC_WPSR_WPVSRC_Msk (0xffu << DACC_WPSR_WPVSRC_Pos) /**< \brief (DACC_WPSR) Write Protection Violation Source */ +/* -------- DACC_VERSION : (DACC Offset: 0xFC) Version Register -------- */ +#define DACC_VERSION_VERSION_Pos 0 +#define DACC_VERSION_VERSION_Msk (0xfffu << DACC_VERSION_VERSION_Pos) /**< \brief (DACC_VERSION) Version */ +#define DACC_VERSION_MFN_Pos 16 +#define DACC_VERSION_MFN_Msk (0x7u << DACC_VERSION_MFN_Pos) /**< \brief (DACC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_DACC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h new file mode 100644 index 00000000..34b7c70d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h @@ -0,0 +1,123 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_EFC_COMPONENT_ +#define _SAME70_EFC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Embedded Flash Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_EFC Embedded Flash Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Efc hardware registers */ +typedef struct { + __IO uint32_t EEFC_FMR; /**< \brief (Efc Offset: 0x00) EEFC Flash Mode Register */ + __O uint32_t EEFC_FCR; /**< \brief (Efc Offset: 0x04) EEFC Flash Command Register */ + __I uint32_t EEFC_FSR; /**< \brief (Efc Offset: 0x08) EEFC Flash Status Register */ + __I uint32_t EEFC_FRR; /**< \brief (Efc Offset: 0x0C) EEFC Flash Result Register */ + __I uint32_t Reserved1[1]; + __I uint32_t EEFC_VERSION; /**< \brief (Efc Offset: 0x14) EEFC Version Register */ + __I uint32_t Reserved2[51]; + __IO uint32_t EEFC_WPMR; /**< \brief (Efc Offset: 0xE4) Write Protection Mode Register */ +} Efc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- EEFC_FMR : (EFC Offset: 0x00) EEFC Flash Mode Register -------- */ +#define EEFC_FMR_FRDY (0x1u << 0) /**< \brief (EEFC_FMR) Flash Ready Interrupt Enable */ +#define EEFC_FMR_FWS_Pos 8 +#define EEFC_FMR_FWS_Msk (0xfu << EEFC_FMR_FWS_Pos) /**< \brief (EEFC_FMR) Flash Wait State */ +#define EEFC_FMR_FWS(value) ((EEFC_FMR_FWS_Msk & ((value) << EEFC_FMR_FWS_Pos))) +#define EEFC_FMR_SCOD (0x1u << 16) /**< \brief (EEFC_FMR) Sequential Code Optimization Disable */ +#define EEFC_FMR_CLOE (0x1u << 26) /**< \brief (EEFC_FMR) Code Loop Optimization Enable */ +/* -------- EEFC_FCR : (EFC Offset: 0x04) EEFC Flash Command Register -------- */ +#define EEFC_FCR_FCMD_Pos 0 +#define EEFC_FCR_FCMD_Msk (0xffu << EEFC_FCR_FCMD_Pos) /**< \brief (EEFC_FCR) Flash Command */ +#define EEFC_FCR_FCMD(value) ((EEFC_FCR_FCMD_Msk & ((value) << EEFC_FCR_FCMD_Pos))) +#define EEFC_FCR_FCMD_GETD (0x0u << 0) /**< \brief (EEFC_FCR) Get Flash descriptor */ +#define EEFC_FCR_FCMD_WP (0x1u << 0) /**< \brief (EEFC_FCR) Write page */ +#define EEFC_FCR_FCMD_WPL (0x2u << 0) /**< \brief (EEFC_FCR) Write page and lock */ +#define EEFC_FCR_FCMD_EWP (0x3u << 0) /**< \brief (EEFC_FCR) Erase page and write page */ +#define EEFC_FCR_FCMD_EWPL (0x4u << 0) /**< \brief (EEFC_FCR) Erase page and write page then lock */ +#define EEFC_FCR_FCMD_EA (0x5u << 0) /**< \brief (EEFC_FCR) Erase all */ +#define EEFC_FCR_FCMD_EPA (0x7u << 0) /**< \brief (EEFC_FCR) Erase pages */ +#define EEFC_FCR_FCMD_SLB (0x8u << 0) /**< \brief (EEFC_FCR) Set lock bit */ +#define EEFC_FCR_FCMD_CLB (0x9u << 0) /**< \brief (EEFC_FCR) Clear lock bit */ +#define EEFC_FCR_FCMD_GLB (0xAu << 0) /**< \brief (EEFC_FCR) Get lock bit */ +#define EEFC_FCR_FCMD_SGPB (0xBu << 0) /**< \brief (EEFC_FCR) Set GPNVM bit */ +#define EEFC_FCR_FCMD_CGPB (0xCu << 0) /**< \brief (EEFC_FCR) Clear GPNVM bit */ +#define EEFC_FCR_FCMD_GGPB (0xDu << 0) /**< \brief (EEFC_FCR) Get GPNVM bit */ +#define EEFC_FCR_FCMD_STUI (0xEu << 0) /**< \brief (EEFC_FCR) Start read unique identifier */ +#define EEFC_FCR_FCMD_SPUI (0xFu << 0) /**< \brief (EEFC_FCR) Stop read unique identifier */ +#define EEFC_FCR_FCMD_GCALB (0x10u << 0) /**< \brief (EEFC_FCR) Get CALIB bit */ +#define EEFC_FCR_FCMD_ES (0x11u << 0) /**< \brief (EEFC_FCR) Erase sector */ +#define EEFC_FCR_FCMD_WUS (0x12u << 0) /**< \brief (EEFC_FCR) Write user signature */ +#define EEFC_FCR_FCMD_EUS (0x13u << 0) /**< \brief (EEFC_FCR) Erase user signature */ +#define EEFC_FCR_FCMD_STUS (0x14u << 0) /**< \brief (EEFC_FCR) Start read user signature */ +#define EEFC_FCR_FCMD_SPUS (0x15u << 0) /**< \brief (EEFC_FCR) Stop read user signature */ +#define EEFC_FCR_FARG_Pos 8 +#define EEFC_FCR_FARG_Msk (0xffffu << EEFC_FCR_FARG_Pos) /**< \brief (EEFC_FCR) Flash Command Argument */ +#define EEFC_FCR_FARG(value) ((EEFC_FCR_FARG_Msk & ((value) << EEFC_FCR_FARG_Pos))) +#define EEFC_FCR_FKEY_Pos 24 +#define EEFC_FCR_FKEY_Msk (0xffu << EEFC_FCR_FKEY_Pos) /**< \brief (EEFC_FCR) Flash Writing Protection Key */ +#define EEFC_FCR_FKEY(value) ((EEFC_FCR_FKEY_Msk & ((value) << EEFC_FCR_FKEY_Pos))) +#define EEFC_FCR_FKEY_PASSWD (0x5Au << 24) /**< \brief (EEFC_FCR) The 0x5A value enables the command defined by the bits of the register. If the field is written with a different value, the write is not performed and no action is started. */ +/* -------- EEFC_FSR : (EFC Offset: 0x08) EEFC Flash Status Register -------- */ +#define EEFC_FSR_FRDY (0x1u << 0) /**< \brief (EEFC_FSR) Flash Ready Status (cleared when Flash is busy) */ +#define EEFC_FSR_FCMDE (0x1u << 1) /**< \brief (EEFC_FSR) Flash Command Error Status (cleared on read or by writing EEFC_FCR) */ +#define EEFC_FSR_FLOCKE (0x1u << 2) /**< \brief (EEFC_FSR) Flash Lock Error Status (cleared on read) */ +#define EEFC_FSR_FLERR (0x1u << 3) /**< \brief (EEFC_FSR) Flash Error Status (cleared when a programming operation starts) */ +#define EEFC_FSR_UECCELSB (0x1u << 16) /**< \brief (EEFC_FSR) Unique ECC Error on LSB Part of the Memory Flash Data Bus (cleared on read) */ +#define EEFC_FSR_MECCELSB (0x1u << 17) /**< \brief (EEFC_FSR) Multiple ECC Error on LSB Part of the Memory Flash Data Bus (cleared on read) */ +#define EEFC_FSR_UECCEMSB (0x1u << 18) /**< \brief (EEFC_FSR) Unique ECC Error on MSB Part of the Memory Flash Data Bus (cleared on read) */ +#define EEFC_FSR_MECCEMSB (0x1u << 19) /**< \brief (EEFC_FSR) Multiple ECC Error on MSB Part of the Memory Flash Data Bus (cleared on read) */ +/* -------- EEFC_FRR : (EFC Offset: 0x0C) EEFC Flash Result Register -------- */ +#define EEFC_FRR_FVALUE_Pos 0 +#define EEFC_FRR_FVALUE_Msk (0xffffffffu << EEFC_FRR_FVALUE_Pos) /**< \brief (EEFC_FRR) Flash Result Value */ +/* -------- EEFC_VERSION : (EFC Offset: 0x14) EEFC Version Register -------- */ +#define EEFC_VERSION_VERSION_Pos 0 +#define EEFC_VERSION_VERSION_Msk (0xfffu << EEFC_VERSION_VERSION_Pos) /**< \brief (EEFC_VERSION) Version of the Hardware Module */ +#define EEFC_VERSION_MFN_Pos 16 +#define EEFC_VERSION_MFN_Msk (0x7u << EEFC_VERSION_MFN_Pos) /**< \brief (EEFC_VERSION) Metal Fix Number */ +/* -------- EEFC_WPMR : (EFC Offset: 0xE4) Write Protection Mode Register -------- */ +#define EEFC_WPMR_WPEN (0x1u << 0) /**< \brief (EEFC_WPMR) Write Protection Enable */ +#define EEFC_WPMR_WPKEY_Pos 8 +#define EEFC_WPMR_WPKEY_Msk (0xffffffu << EEFC_WPMR_WPKEY_Pos) /**< \brief (EEFC_WPMR) Write Protection Key */ +#define EEFC_WPMR_WPKEY(value) ((EEFC_WPMR_WPKEY_Msk & ((value) << EEFC_WPMR_WPKEY_Pos))) +#define EEFC_WPMR_WPKEY_PASSWD (0x454643u << 8) /**< \brief (EEFC_WPMR) Writing any other value in this field aborts the write operation.Always reads as 0. */ + +/*@}*/ + + +#endif /* _SAME70_EFC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h new file mode 100644 index 00000000..7da341a0 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h @@ -0,0 +1,1307 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_GMAC_COMPONENT_ +#define _SAME70_GMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Gigabit Ethernet MAC */ +/* ============================================================================= */ +/** \addtogroup SAME70_GMAC Gigabit Ethernet MAC */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief GmacSa hardware registers */ +typedef struct { + __IO uint32_t GMAC_SAB; /**< \brief (GmacSa Offset: 0x0) Specific Address 1 Bottom Register */ + __IO uint32_t GMAC_SAT; /**< \brief (GmacSa Offset: 0x4) Specific Address 1 Top Register */ +} GmacSa; +/** \brief Gmac hardware registers */ +#define GMACSA_NUMBER 4 +typedef struct { + __IO uint32_t GMAC_NCR; /**< \brief (Gmac Offset: 0x000) Network Control Register */ + __IO uint32_t GMAC_NCFGR; /**< \brief (Gmac Offset: 0x004) Network Configuration Register */ + __I uint32_t GMAC_NSR; /**< \brief (Gmac Offset: 0x008) Network Status Register */ + __IO uint32_t GMAC_UR; /**< \brief (Gmac Offset: 0x00C) User Register */ + __IO uint32_t GMAC_DCFGR; /**< \brief (Gmac Offset: 0x010) DMA Configuration Register */ + __IO uint32_t GMAC_TSR; /**< \brief (Gmac Offset: 0x014) Transmit Status Register */ + __IO uint32_t GMAC_RBQB; /**< \brief (Gmac Offset: 0x018) Receive Buffer Queue Base Address Register */ + __IO uint32_t GMAC_TBQB; /**< \brief (Gmac Offset: 0x01C) Transmit Buffer Queue Base Address Register */ + __IO uint32_t GMAC_RSR; /**< \brief (Gmac Offset: 0x020) Receive Status Register */ + __I uint32_t GMAC_ISR; /**< \brief (Gmac Offset: 0x024) Interrupt Status Register */ + __O uint32_t GMAC_IER; /**< \brief (Gmac Offset: 0x028) Interrupt Enable Register */ + __O uint32_t GMAC_IDR; /**< \brief (Gmac Offset: 0x02C) Interrupt Disable Register */ + __IO uint32_t GMAC_IMR; /**< \brief (Gmac Offset: 0x030) Interrupt Mask Register */ + __IO uint32_t GMAC_MAN; /**< \brief (Gmac Offset: 0x034) PHY Maintenance Register */ + __I uint32_t GMAC_RPQ; /**< \brief (Gmac Offset: 0x038) Received Pause Quantum Register */ + __IO uint32_t GMAC_TPQ; /**< \brief (Gmac Offset: 0x03C) Transmit Pause Quantum Register */ + __IO uint32_t GMAC_TPSF; /**< \brief (Gmac Offset: 0x040) TX Partial Store and Forward Register */ + __IO uint32_t GMAC_RPSF; /**< \brief (Gmac Offset: 0x044) RX Partial Store and Forward Register */ + __IO uint32_t GMAC_RJFML; /**< \brief (Gmac Offset: 0x048) RX Jumbo Frame Max Length Register */ + __I uint32_t Reserved1[13]; + __IO uint32_t GMAC_HRB; /**< \brief (Gmac Offset: 0x080) Hash Register Bottom */ + __IO uint32_t GMAC_HRT; /**< \brief (Gmac Offset: 0x084) Hash Register Top */ + GmacSa GMAC_SA[GMACSA_NUMBER]; /**< \brief (Gmac Offset: 0x088) 1 .. 4 */ + __IO uint32_t GMAC_TIDM1; /**< \brief (Gmac Offset: 0x0A8) Type ID Match 1 Register */ + __IO uint32_t GMAC_TIDM2; /**< \brief (Gmac Offset: 0x0AC) Type ID Match 2 Register */ + __IO uint32_t GMAC_TIDM3; /**< \brief (Gmac Offset: 0x0B0) Type ID Match 3 Register */ + __IO uint32_t GMAC_TIDM4; /**< \brief (Gmac Offset: 0x0B4) Type ID Match 4 Register */ + __IO uint32_t GMAC_WOL; /**< \brief (Gmac Offset: 0x0B8) Wake on LAN Register */ + __IO uint32_t GMAC_IPGS; /**< \brief (Gmac Offset: 0x0BC) IPG Stretch Register */ + __IO uint32_t GMAC_SVLAN; /**< \brief (Gmac Offset: 0x0C0) Stacked VLAN Register */ + __IO uint32_t GMAC_TPFCP; /**< \brief (Gmac Offset: 0x0C4) Transmit PFC Pause Register */ + __IO uint32_t GMAC_SAMB1; /**< \brief (Gmac Offset: 0x0C8) Specific Address 1 Mask Bottom Register */ + __IO uint32_t GMAC_SAMT1; /**< \brief (Gmac Offset: 0x0CC) Specific Address 1 Mask Top Register */ + __I uint32_t Reserved2[3]; + __IO uint32_t GMAC_NSC; /**< \brief (Gmac Offset: 0x0DC) 1588 Timer Nanosecond Comparison Register */ + __IO uint32_t GMAC_SCL; /**< \brief (Gmac Offset: 0x0E0) 1588 Timer Second Comparison Low Register */ + __IO uint32_t GMAC_SCH; /**< \brief (Gmac Offset: 0x0E4) 1588 Timer Second Comparison High Register */ + __I uint32_t GMAC_EFTSH; /**< \brief (Gmac Offset: 0x0E8) PTP Event Frame Transmitted Seconds High Register */ + __I uint32_t GMAC_EFRSH; /**< \brief (Gmac Offset: 0x0EC) PTP Event Frame Received Seconds High Register */ + __I uint32_t GMAC_PEFTSH; /**< \brief (Gmac Offset: 0x0F0) PTP Peer Event Frame Transmitted Seconds High Register */ + __I uint32_t GMAC_PEFRSH; /**< \brief (Gmac Offset: 0x0F4) PTP Peer Event Frame Received Seconds High Register */ + __I uint32_t Reserved3[1]; + __I uint32_t GMAC_MID; /**< \brief (Gmac Offset: 0x0FC) Module ID Register */ + __I uint32_t GMAC_OTLO; /**< \brief (Gmac Offset: 0x100) Octets Transmitted Low Register */ + __I uint32_t GMAC_OTHI; /**< \brief (Gmac Offset: 0x104) Octets Transmitted High Register */ + __I uint32_t GMAC_FT; /**< \brief (Gmac Offset: 0x108) Frames Transmitted Register */ + __I uint32_t GMAC_BCFT; /**< \brief (Gmac Offset: 0x10C) Broadcast Frames Transmitted Register */ + __I uint32_t GMAC_MFT; /**< \brief (Gmac Offset: 0x110) Multicast Frames Transmitted Register */ + __I uint32_t GMAC_PFT; /**< \brief (Gmac Offset: 0x114) Pause Frames Transmitted Register */ + __I uint32_t GMAC_BFT64; /**< \brief (Gmac Offset: 0x118) 64 Byte Frames Transmitted Register */ + __I uint32_t GMAC_TBFT127; /**< \brief (Gmac Offset: 0x11C) 65 to 127 Byte Frames Transmitted Register */ + __I uint32_t GMAC_TBFT255; /**< \brief (Gmac Offset: 0x120) 128 to 255 Byte Frames Transmitted Register */ + __I uint32_t GMAC_TBFT511; /**< \brief (Gmac Offset: 0x124) 256 to 511 Byte Frames Transmitted Register */ + __I uint32_t GMAC_TBFT1023; /**< \brief (Gmac Offset: 0x128) 512 to 1023 Byte Frames Transmitted Register */ + __I uint32_t GMAC_TBFT1518; /**< \brief (Gmac Offset: 0x12C) 1024 to 1518 Byte Frames Transmitted Register */ + __I uint32_t GMAC_GTBFT1518; /**< \brief (Gmac Offset: 0x130) Greater Than 1518 Byte Frames Transmitted Register */ + __I uint32_t GMAC_TUR; /**< \brief (Gmac Offset: 0x134) Transmit Underruns Register */ + __I uint32_t GMAC_SCF; /**< \brief (Gmac Offset: 0x138) Single Collision Frames Register */ + __I uint32_t GMAC_MCF; /**< \brief (Gmac Offset: 0x13C) Multiple Collision Frames Register */ + __I uint32_t GMAC_EC; /**< \brief (Gmac Offset: 0x140) Excessive Collisions Register */ + __I uint32_t GMAC_LC; /**< \brief (Gmac Offset: 0x144) Late Collisions Register */ + __I uint32_t GMAC_DTF; /**< \brief (Gmac Offset: 0x148) Deferred Transmission Frames Register */ + __I uint32_t GMAC_CSE; /**< \brief (Gmac Offset: 0x14C) Carrier Sense Errors Register */ + __I uint32_t GMAC_ORLO; /**< \brief (Gmac Offset: 0x150) Octets Received Low Received Register */ + __I uint32_t GMAC_ORHI; /**< \brief (Gmac Offset: 0x154) Octets Received High Received Register */ + __I uint32_t GMAC_FR; /**< \brief (Gmac Offset: 0x158) Frames Received Register */ + __I uint32_t GMAC_BCFR; /**< \brief (Gmac Offset: 0x15C) Broadcast Frames Received Register */ + __I uint32_t GMAC_MFR; /**< \brief (Gmac Offset: 0x160) Multicast Frames Received Register */ + __I uint32_t GMAC_PFR; /**< \brief (Gmac Offset: 0x164) Pause Frames Received Register */ + __I uint32_t GMAC_BFR64; /**< \brief (Gmac Offset: 0x168) 64 Byte Frames Received Register */ + __I uint32_t GMAC_TBFR127; /**< \brief (Gmac Offset: 0x16C) 65 to 127 Byte Frames Received Register */ + __I uint32_t GMAC_TBFR255; /**< \brief (Gmac Offset: 0x170) 128 to 255 Byte Frames Received Register */ + __I uint32_t GMAC_TBFR511; /**< \brief (Gmac Offset: 0x174) 256 to 511 Byte Frames Received Register */ + __I uint32_t GMAC_TBFR1023; /**< \brief (Gmac Offset: 0x178) 512 to 1023 Byte Frames Received Register */ + __I uint32_t GMAC_TBFR1518; /**< \brief (Gmac Offset: 0x17C) 1024 to 1518 Byte Frames Received Register */ + __I uint32_t GMAC_TMXBFR; /**< \brief (Gmac Offset: 0x180) 1519 to Maximum Byte Frames Received Register */ + __I uint32_t GMAC_UFR; /**< \brief (Gmac Offset: 0x184) Undersize Frames Received Register */ + __I uint32_t GMAC_OFR; /**< \brief (Gmac Offset: 0x188) Oversize Frames Received Register */ + __I uint32_t GMAC_JR; /**< \brief (Gmac Offset: 0x18C) Jabbers Received Register */ + __I uint32_t GMAC_FCSE; /**< \brief (Gmac Offset: 0x190) Frame Check Sequence Errors Register */ + __I uint32_t GMAC_LFFE; /**< \brief (Gmac Offset: 0x194) Length Field Frame Errors Register */ + __I uint32_t GMAC_RSE; /**< \brief (Gmac Offset: 0x198) Receive Symbol Errors Register */ + __I uint32_t GMAC_AE; /**< \brief (Gmac Offset: 0x19C) Alignment Errors Register */ + __I uint32_t GMAC_RRE; /**< \brief (Gmac Offset: 0x1A0) Receive Resource Errors Register */ + __I uint32_t GMAC_ROE; /**< \brief (Gmac Offset: 0x1A4) Receive Overrun Register */ + __I uint32_t GMAC_IHCE; /**< \brief (Gmac Offset: 0x1A8) IP Header Checksum Errors Register */ + __I uint32_t GMAC_TCE; /**< \brief (Gmac Offset: 0x1AC) TCP Checksum Errors Register */ + __I uint32_t GMAC_UCE; /**< \brief (Gmac Offset: 0x1B0) UDP Checksum Errors Register */ + __I uint32_t Reserved4[2]; + __IO uint32_t GMAC_TISUBN; /**< \brief (Gmac Offset: 0x1BC) 1588 Timer Increment Sub-nanoseconds Register */ + __IO uint32_t GMAC_TSH; /**< \brief (Gmac Offset: 0x1C0) 1588 Timer Seconds High Register */ + __I uint32_t Reserved5[3]; + __IO uint32_t GMAC_TSL; /**< \brief (Gmac Offset: 0x1D0) 1588 Timer Seconds Low Register */ + __IO uint32_t GMAC_TN; /**< \brief (Gmac Offset: 0x1D4) 1588 Timer Nanoseconds Register */ + __O uint32_t GMAC_TA; /**< \brief (Gmac Offset: 0x1D8) 1588 Timer Adjust Register */ + __IO uint32_t GMAC_TI; /**< \brief (Gmac Offset: 0x1DC) 1588 Timer Increment Register */ + __I uint32_t GMAC_EFTSL; /**< \brief (Gmac Offset: 0x1E0) PTP Event Frame Transmitted Seconds Low Register */ + __I uint32_t GMAC_EFTN; /**< \brief (Gmac Offset: 0x1E4) PTP Event Frame Transmitted Nanoseconds Register */ + __I uint32_t GMAC_EFRSL; /**< \brief (Gmac Offset: 0x1E8) PTP Event Frame Received Seconds Low Register */ + __I uint32_t GMAC_EFRN; /**< \brief (Gmac Offset: 0x1EC) PTP Event Frame Received Nanoseconds Register */ + __I uint32_t GMAC_PEFTSL; /**< \brief (Gmac Offset: 0x1F0) PTP Peer Event Frame Transmitted Seconds Low Register */ + __I uint32_t GMAC_PEFTN; /**< \brief (Gmac Offset: 0x1F4) PTP Peer Event Frame Transmitted Nanoseconds Register */ + __I uint32_t GMAC_PEFRSL; /**< \brief (Gmac Offset: 0x1F8) PTP Peer Event Frame Received Seconds Low Register */ + __I uint32_t GMAC_PEFRN; /**< \brief (Gmac Offset: 0x1FC) PTP Peer Event Frame Received Nanoseconds Register */ + __I uint32_t Reserved6[28]; + __I uint32_t GMAC_RXLPI; /**< \brief (Gmac Offset: 0x270) Received LPI Transitions */ + __I uint32_t GMAC_RXLPITIME; /**< \brief (Gmac Offset: 0x274) Received LPI Time */ + __I uint32_t GMAC_TXLPI; /**< \brief (Gmac Offset: 0x278) Transmit LPI Transitions */ + __I uint32_t GMAC_TXLPITIME; /**< \brief (Gmac Offset: 0x27C) Transmit LPI Time */ + __I uint32_t Reserved7[96]; + __I uint32_t GMAC_ISRPQ[5]; /**< \brief (Gmac Offset: 0x400) Interrupt Status Register Priority Queue (index = 1) */ + __I uint32_t Reserved8[11]; + __IO uint32_t GMAC_TBQBAPQ[5]; /**< \brief (Gmac Offset: 0x440) Transmit Buffer Queue Base Address Register Priority Queue (index = 1) */ + __I uint32_t Reserved9[11]; + __IO uint32_t GMAC_RBQBAPQ[5]; /**< \brief (Gmac Offset: 0x480) Receive Buffer Queue Base Address Register Priority Queue (index = 1) */ + __I uint32_t Reserved10[3]; + __IO uint32_t GMAC_RBSRPQ[5]; /**< \brief (Gmac Offset: 0x4A0) Receive Buffer Size Register Priority Queue (index = 1) */ + __I uint32_t Reserved11[2]; + __IO uint32_t GMAC_CBSCR; /**< \brief (Gmac Offset: 0x4BC) Credit-Based Shaping Control Register */ + __IO uint32_t GMAC_CBSISQA; /**< \brief (Gmac Offset: 0x4C0) Credit-Based Shaping IdleSlope Register for Queue A */ + __IO uint32_t GMAC_CBSISQB; /**< \brief (Gmac Offset: 0x4C4) Credit-Based Shaping IdleSlope Register for Queue B */ + __I uint32_t Reserved12[14]; + __IO uint32_t GMAC_ST1RPQ[4]; /**< \brief (Gmac Offset: 0x500) Screening Type 1 Register Priority Queue (index = 0) */ + __I uint32_t Reserved13[12]; + __IO uint32_t GMAC_ST2RPQ[8]; /**< \brief (Gmac Offset: 0x540) Screening Type 2 Register Priority Queue (index = 0) */ + __I uint32_t Reserved14[39]; + __O uint32_t GMAC_IERPQ[5]; /**< \brief (Gmac Offset: 0x5FC) Interrupt Enable Register Priority Queue (index = 1) */ + __I uint32_t Reserved15[3]; + __O uint32_t GMAC_IDRPQ[5]; /**< \brief (Gmac Offset: 0x61C) Interrupt Disable Register Priority Queue (index = 1) */ + __I uint32_t Reserved16[3]; + __IO uint32_t GMAC_IMRPQ[5]; /**< \brief (Gmac Offset: 0x63C) Interrupt Mask Register Priority Queue (index = 1) */ + __I uint32_t Reserved17[36]; + __IO uint32_t GMAC_ST2ER[4]; /**< \brief (Gmac Offset: 0x6E0) Screening Type 2 Ethertype Register (index = 0) */ + __I uint32_t Reserved18[4]; + __IO uint32_t GMAC_ST2CW00; /**< \brief (Gmac Offset: 0x700) Screening Type 2 Compare Word 0 Register (index = 0) */ + __IO uint32_t GMAC_ST2CW10; /**< \brief (Gmac Offset: 0x704) Screening Type 2 Compare Word 1 Register (index = 0) */ + __IO uint32_t GMAC_ST2CW01; /**< \brief (Gmac Offset: 0x708) Screening Type 2 Compare Word 0 Register (index = 1) */ + __IO uint32_t GMAC_ST2CW11; /**< \brief (Gmac Offset: 0x70C) Screening Type 2 Compare Word 1 Register (index = 1) */ + __IO uint32_t GMAC_ST2CW02; /**< \brief (Gmac Offset: 0x710) Screening Type 2 Compare Word 0 Register (index = 2) */ + __IO uint32_t GMAC_ST2CW12; /**< \brief (Gmac Offset: 0x714) Screening Type 2 Compare Word 1 Register (index = 2) */ + __IO uint32_t GMAC_ST2CW03; /**< \brief (Gmac Offset: 0x718) Screening Type 2 Compare Word 0 Register (index = 3) */ + __IO uint32_t GMAC_ST2CW13; /**< \brief (Gmac Offset: 0x71C) Screening Type 2 Compare Word 1 Register (index = 3) */ + __IO uint32_t GMAC_ST2CW04; /**< \brief (Gmac Offset: 0x720) Screening Type 2 Compare Word 0 Register (index = 4) */ + __IO uint32_t GMAC_ST2CW14; /**< \brief (Gmac Offset: 0x724) Screening Type 2 Compare Word 1 Register (index = 4) */ + __IO uint32_t GMAC_ST2CW05; /**< \brief (Gmac Offset: 0x728) Screening Type 2 Compare Word 0 Register (index = 5) */ + __IO uint32_t GMAC_ST2CW15; /**< \brief (Gmac Offset: 0x72C) Screening Type 2 Compare Word 1 Register (index = 5) */ + __IO uint32_t GMAC_ST2CW06; /**< \brief (Gmac Offset: 0x730) Screening Type 2 Compare Word 0 Register (index = 6) */ + __IO uint32_t GMAC_ST2CW16; /**< \brief (Gmac Offset: 0x734) Screening Type 2 Compare Word 1 Register (index = 6) */ + __IO uint32_t GMAC_ST2CW07; /**< \brief (Gmac Offset: 0x738) Screening Type 2 Compare Word 0 Register (index = 7) */ + __IO uint32_t GMAC_ST2CW17; /**< \brief (Gmac Offset: 0x73C) Screening Type 2 Compare Word 1 Register (index = 7) */ + __IO uint32_t GMAC_ST2CW08; /**< \brief (Gmac Offset: 0x740) Screening Type 2 Compare Word 0 Register (index = 8) */ + __IO uint32_t GMAC_ST2CW18; /**< \brief (Gmac Offset: 0x744) Screening Type 2 Compare Word 1 Register (index = 8) */ + __IO uint32_t GMAC_ST2CW09; /**< \brief (Gmac Offset: 0x748) Screening Type 2 Compare Word 0 Register (index = 9) */ + __IO uint32_t GMAC_ST2CW19; /**< \brief (Gmac Offset: 0x74C) Screening Type 2 Compare Word 1 Register (index = 9) */ + __IO uint32_t GMAC_ST2CW010; /**< \brief (Gmac Offset: 0x750) Screening Type 2 Compare Word 0 Register (index = 10) */ + __IO uint32_t GMAC_ST2CW110; /**< \brief (Gmac Offset: 0x754) Screening Type 2 Compare Word 1 Register (index = 10) */ + __IO uint32_t GMAC_ST2CW011; /**< \brief (Gmac Offset: 0x758) Screening Type 2 Compare Word 0 Register (index = 11) */ + __IO uint32_t GMAC_ST2CW111; /**< \brief (Gmac Offset: 0x75C) Screening Type 2 Compare Word 1 Register (index = 11) */ + __IO uint32_t GMAC_ST2CW012; /**< \brief (Gmac Offset: 0x760) Screening Type 2 Compare Word 0 Register (index = 12) */ + __IO uint32_t GMAC_ST2CW112; /**< \brief (Gmac Offset: 0x764) Screening Type 2 Compare Word 1 Register (index = 12) */ + __IO uint32_t GMAC_ST2CW013; /**< \brief (Gmac Offset: 0x768) Screening Type 2 Compare Word 0 Register (index = 13) */ + __IO uint32_t GMAC_ST2CW113; /**< \brief (Gmac Offset: 0x76C) Screening Type 2 Compare Word 1 Register (index = 13) */ + __IO uint32_t GMAC_ST2CW014; /**< \brief (Gmac Offset: 0x770) Screening Type 2 Compare Word 0 Register (index = 14) */ + __IO uint32_t GMAC_ST2CW114; /**< \brief (Gmac Offset: 0x774) Screening Type 2 Compare Word 1 Register (index = 14) */ + __IO uint32_t GMAC_ST2CW015; /**< \brief (Gmac Offset: 0x778) Screening Type 2 Compare Word 0 Register (index = 15) */ + __IO uint32_t GMAC_ST2CW115; /**< \brief (Gmac Offset: 0x77C) Screening Type 2 Compare Word 1 Register (index = 15) */ + __IO uint32_t GMAC_ST2CW016; /**< \brief (Gmac Offset: 0x780) Screening Type 2 Compare Word 0 Register (index = 16) */ + __IO uint32_t GMAC_ST2CW116; /**< \brief (Gmac Offset: 0x784) Screening Type 2 Compare Word 1 Register (index = 16) */ + __IO uint32_t GMAC_ST2CW017; /**< \brief (Gmac Offset: 0x788) Screening Type 2 Compare Word 0 Register (index = 17) */ + __IO uint32_t GMAC_ST2CW117; /**< \brief (Gmac Offset: 0x78C) Screening Type 2 Compare Word 1 Register (index = 17) */ + __IO uint32_t GMAC_ST2CW018; /**< \brief (Gmac Offset: 0x790) Screening Type 2 Compare Word 0 Register (index = 18) */ + __IO uint32_t GMAC_ST2CW118; /**< \brief (Gmac Offset: 0x794) Screening Type 2 Compare Word 1 Register (index = 18) */ + __IO uint32_t GMAC_ST2CW019; /**< \brief (Gmac Offset: 0x798) Screening Type 2 Compare Word 0 Register (index = 19) */ + __IO uint32_t GMAC_ST2CW119; /**< \brief (Gmac Offset: 0x79C) Screening Type 2 Compare Word 1 Register (index = 19) */ + __IO uint32_t GMAC_ST2CW020; /**< \brief (Gmac Offset: 0x7A0) Screening Type 2 Compare Word 0 Register (index = 20) */ + __IO uint32_t GMAC_ST2CW120; /**< \brief (Gmac Offset: 0x7A4) Screening Type 2 Compare Word 1 Register (index = 20) */ + __IO uint32_t GMAC_ST2CW021; /**< \brief (Gmac Offset: 0x7A8) Screening Type 2 Compare Word 0 Register (index = 21) */ + __IO uint32_t GMAC_ST2CW121; /**< \brief (Gmac Offset: 0x7AC) Screening Type 2 Compare Word 1 Register (index = 21) */ + __IO uint32_t GMAC_ST2CW022; /**< \brief (Gmac Offset: 0x7B0) Screening Type 2 Compare Word 0 Register (index = 22) */ + __IO uint32_t GMAC_ST2CW122; /**< \brief (Gmac Offset: 0x7B4) Screening Type 2 Compare Word 1 Register (index = 22) */ + __IO uint32_t GMAC_ST2CW023; /**< \brief (Gmac Offset: 0x7B8) Screening Type 2 Compare Word 0 Register (index = 23) */ + __IO uint32_t GMAC_ST2CW123; /**< \brief (Gmac Offset: 0x7BC) Screening Type 2 Compare Word 1 Register (index = 23) */ +} Gmac; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- GMAC_NCR : (GMAC Offset: 0x000) Network Control Register -------- */ +#define GMAC_NCR_LBL (0x1u << 1) /**< \brief (GMAC_NCR) Loop Back Local */ +#define GMAC_NCR_RXEN (0x1u << 2) /**< \brief (GMAC_NCR) Receive Enable */ +#define GMAC_NCR_TXEN (0x1u << 3) /**< \brief (GMAC_NCR) Transmit Enable */ +#define GMAC_NCR_MPE (0x1u << 4) /**< \brief (GMAC_NCR) Management Port Enable */ +#define GMAC_NCR_CLRSTAT (0x1u << 5) /**< \brief (GMAC_NCR) Clear Statistics Registers */ +#define GMAC_NCR_INCSTAT (0x1u << 6) /**< \brief (GMAC_NCR) Increment Statistics Registers */ +#define GMAC_NCR_WESTAT (0x1u << 7) /**< \brief (GMAC_NCR) Write Enable for Statistics Registers */ +#define GMAC_NCR_BP (0x1u << 8) /**< \brief (GMAC_NCR) Back pressure */ +#define GMAC_NCR_TSTART (0x1u << 9) /**< \brief (GMAC_NCR) Start Transmission */ +#define GMAC_NCR_THALT (0x1u << 10) /**< \brief (GMAC_NCR) Transmit Halt */ +#define GMAC_NCR_TXPF (0x1u << 11) /**< \brief (GMAC_NCR) Transmit Pause Frame */ +#define GMAC_NCR_TXZQPF (0x1u << 12) /**< \brief (GMAC_NCR) Transmit Zero Quantum Pause Frame */ +#define GMAC_NCR_SRTSM (0x1u << 15) /**< \brief (GMAC_NCR) Store Receive Time Stamp to Memory */ +#define GMAC_NCR_ENPBPR (0x1u << 16) /**< \brief (GMAC_NCR) Enable PFC Priority-based Pause Reception */ +#define GMAC_NCR_TXPBPF (0x1u << 17) /**< \brief (GMAC_NCR) Transmit PFC Priority-based Pause Frame */ +#define GMAC_NCR_FNP (0x1u << 18) /**< \brief (GMAC_NCR) Flush Next Packet */ +/* -------- GMAC_NCFGR : (GMAC Offset: 0x004) Network Configuration Register -------- */ +#define GMAC_NCFGR_SPD (0x1u << 0) /**< \brief (GMAC_NCFGR) Speed */ +#define GMAC_NCFGR_FD (0x1u << 1) /**< \brief (GMAC_NCFGR) Full Duplex */ +#define GMAC_NCFGR_DNVLAN (0x1u << 2) /**< \brief (GMAC_NCFGR) Discard Non-VLAN FRAMES */ +#define GMAC_NCFGR_JFRAME (0x1u << 3) /**< \brief (GMAC_NCFGR) Jumbo Frame Size */ +#define GMAC_NCFGR_CAF (0x1u << 4) /**< \brief (GMAC_NCFGR) Copy All Frames */ +#define GMAC_NCFGR_NBC (0x1u << 5) /**< \brief (GMAC_NCFGR) No Broadcast */ +#define GMAC_NCFGR_MTIHEN (0x1u << 6) /**< \brief (GMAC_NCFGR) Multicast Hash Enable */ +#define GMAC_NCFGR_UNIHEN (0x1u << 7) /**< \brief (GMAC_NCFGR) Unicast Hash Enable */ +#define GMAC_NCFGR_MAXFS (0x1u << 8) /**< \brief (GMAC_NCFGR) 1536 Maximum Frame Size */ +#define GMAC_NCFGR_RTY (0x1u << 12) /**< \brief (GMAC_NCFGR) Retry Test */ +#define GMAC_NCFGR_PEN (0x1u << 13) /**< \brief (GMAC_NCFGR) Pause Enable */ +#define GMAC_NCFGR_RXBUFO_Pos 14 +#define GMAC_NCFGR_RXBUFO_Msk (0x3u << GMAC_NCFGR_RXBUFO_Pos) /**< \brief (GMAC_NCFGR) Receive Buffer Offset */ +#define GMAC_NCFGR_RXBUFO(value) ((GMAC_NCFGR_RXBUFO_Msk & ((value) << GMAC_NCFGR_RXBUFO_Pos))) +#define GMAC_NCFGR_LFERD (0x1u << 16) /**< \brief (GMAC_NCFGR) Length Field Error Frame Discard */ +#define GMAC_NCFGR_RFCS (0x1u << 17) /**< \brief (GMAC_NCFGR) Remove FCS */ +#define GMAC_NCFGR_CLK_Pos 18 +#define GMAC_NCFGR_CLK_Msk (0x7u << GMAC_NCFGR_CLK_Pos) /**< \brief (GMAC_NCFGR) MDC CLock Division */ +#define GMAC_NCFGR_CLK(value) ((GMAC_NCFGR_CLK_Msk & ((value) << GMAC_NCFGR_CLK_Pos))) +#define GMAC_NCFGR_CLK_MCK_8 (0x0u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 8 (MCK up to 20 MHz) */ +#define GMAC_NCFGR_CLK_MCK_16 (0x1u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 16 (MCK up to 40 MHz) */ +#define GMAC_NCFGR_CLK_MCK_32 (0x2u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 32 (MCK up to 80 MHz) */ +#define GMAC_NCFGR_CLK_MCK_48 (0x3u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 48 (MCK up to 120 MHz) */ +#define GMAC_NCFGR_CLK_MCK_64 (0x4u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 64 (MCK up to 160 MHz) */ +#define GMAC_NCFGR_CLK_MCK_96 (0x5u << 18) /**< \brief (GMAC_NCFGR) MCK divided by 96 (MCK up to 240 MHz) */ +#define GMAC_NCFGR_DBW_Pos 21 +#define GMAC_NCFGR_DBW_Msk (0x3u << GMAC_NCFGR_DBW_Pos) /**< \brief (GMAC_NCFGR) Data Bus Width */ +#define GMAC_NCFGR_DBW(value) ((GMAC_NCFGR_DBW_Msk & ((value) << GMAC_NCFGR_DBW_Pos))) +#define GMAC_NCFGR_DCPF (0x1u << 23) /**< \brief (GMAC_NCFGR) Disable Copy of Pause Frames */ +#define GMAC_NCFGR_RXCOEN (0x1u << 24) /**< \brief (GMAC_NCFGR) Receive Checksum Offload Enable */ +#define GMAC_NCFGR_EFRHD (0x1u << 25) /**< \brief (GMAC_NCFGR) Enable Frames Received in Half Duplex */ +#define GMAC_NCFGR_IRXFCS (0x1u << 26) /**< \brief (GMAC_NCFGR) Ignore RX FCS */ +#define GMAC_NCFGR_IPGSEN (0x1u << 28) /**< \brief (GMAC_NCFGR) IP Stretch Enable */ +#define GMAC_NCFGR_RXBP (0x1u << 29) /**< \brief (GMAC_NCFGR) Receive Bad Preamble */ +#define GMAC_NCFGR_IRXER (0x1u << 30) /**< \brief (GMAC_NCFGR) Ignore IPG GRXER */ +/* -------- GMAC_NSR : (GMAC Offset: 0x008) Network Status Register -------- */ +#define GMAC_NSR_MDIO (0x1u << 1) /**< \brief (GMAC_NSR) MDIO Input Status */ +#define GMAC_NSR_IDLE (0x1u << 2) /**< \brief (GMAC_NSR) PHY Management Logic Idle */ +/* -------- GMAC_UR : (GMAC Offset: 0x00C) User Register -------- */ +#define GMAC_UR_RMII (0x1u << 0) /**< \brief (GMAC_UR) Reduced MII Mode */ +/* -------- GMAC_DCFGR : (GMAC Offset: 0x010) DMA Configuration Register -------- */ +#define GMAC_DCFGR_FBLDO_Pos 0 +#define GMAC_DCFGR_FBLDO_Msk (0x1fu << GMAC_DCFGR_FBLDO_Pos) /**< \brief (GMAC_DCFGR) Fixed Burst Length for DMA Data Operations: */ +#define GMAC_DCFGR_FBLDO(value) ((GMAC_DCFGR_FBLDO_Msk & ((value) << GMAC_DCFGR_FBLDO_Pos))) +#define GMAC_DCFGR_FBLDO_SINGLE (0x1u << 0) /**< \brief (GMAC_DCFGR) 00001: Always use SINGLE AHB bursts */ +#define GMAC_DCFGR_FBLDO_INCR4 (0x4u << 0) /**< \brief (GMAC_DCFGR) 001xx: Attempt to use INCR4 AHB bursts (Default) */ +#define GMAC_DCFGR_FBLDO_INCR8 (0x8u << 0) /**< \brief (GMAC_DCFGR) 01xxx: Attempt to use INCR8 AHB bursts */ +#define GMAC_DCFGR_FBLDO_INCR16 (0x10u << 0) /**< \brief (GMAC_DCFGR) 1xxxx: Attempt to use INCR16 AHB bursts */ +#define GMAC_DCFGR_ESMA (0x1u << 6) /**< \brief (GMAC_DCFGR) Endian Swap Mode Enable for Management Descriptor Accesses */ +#define GMAC_DCFGR_ESPA (0x1u << 7) /**< \brief (GMAC_DCFGR) Endian Swap Mode Enable for Packet Data Accesses */ +#define GMAC_DCFGR_RXBMS_Pos 8 +#define GMAC_DCFGR_RXBMS_Msk (0x3u << GMAC_DCFGR_RXBMS_Pos) /**< \brief (GMAC_DCFGR) Receiver Packet Buffer Memory Size Select */ +#define GMAC_DCFGR_RXBMS(value) ((GMAC_DCFGR_RXBMS_Msk & ((value) << GMAC_DCFGR_RXBMS_Pos))) +#define GMAC_DCFGR_RXBMS_EIGHTH (0x0u << 8) /**< \brief (GMAC_DCFGR) 4/8 Kbyte Memory Size */ +#define GMAC_DCFGR_RXBMS_QUARTER (0x1u << 8) /**< \brief (GMAC_DCFGR) 4/4 Kbytes Memory Size */ +#define GMAC_DCFGR_RXBMS_HALF (0x2u << 8) /**< \brief (GMAC_DCFGR) 4/2 Kbytes Memory Size */ +#define GMAC_DCFGR_RXBMS_FULL (0x3u << 8) /**< \brief (GMAC_DCFGR) 4 Kbytes Memory Size */ +#define GMAC_DCFGR_TXPBMS (0x1u << 10) /**< \brief (GMAC_DCFGR) Transmitter Packet Buffer Memory Size Select */ +#define GMAC_DCFGR_TXCOEN (0x1u << 11) /**< \brief (GMAC_DCFGR) Transmitter Checksum Generation Offload Enable */ +#define GMAC_DCFGR_DRBS_Pos 16 +#define GMAC_DCFGR_DRBS_Msk (0xffu << GMAC_DCFGR_DRBS_Pos) /**< \brief (GMAC_DCFGR) DMA Receive Buffer Size */ +#define GMAC_DCFGR_DRBS(value) ((GMAC_DCFGR_DRBS_Msk & ((value) << GMAC_DCFGR_DRBS_Pos))) +#define GMAC_DCFGR_DDRP (0x1u << 24) /**< \brief (GMAC_DCFGR) DMA Discard Receive Packets */ +/* -------- GMAC_TSR : (GMAC Offset: 0x014) Transmit Status Register -------- */ +#define GMAC_TSR_UBR (0x1u << 0) /**< \brief (GMAC_TSR) Used Bit Read */ +#define GMAC_TSR_COL (0x1u << 1) /**< \brief (GMAC_TSR) Collision Occurred */ +#define GMAC_TSR_RLE (0x1u << 2) /**< \brief (GMAC_TSR) Retry Limit Exceeded */ +#define GMAC_TSR_TXGO (0x1u << 3) /**< \brief (GMAC_TSR) Transmit Go */ +#define GMAC_TSR_TFC (0x1u << 4) /**< \brief (GMAC_TSR) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_TSR_TXCOMP (0x1u << 5) /**< \brief (GMAC_TSR) Transmit Complete */ +#define GMAC_TSR_HRESP (0x1u << 8) /**< \brief (GMAC_TSR) HRESP Not OK */ +/* -------- GMAC_RBQB : (GMAC Offset: 0x018) Receive Buffer Queue Base Address Register -------- */ +#define GMAC_RBQB_ADDR_Pos 2 +#define GMAC_RBQB_ADDR_Msk (0x3fffffffu << GMAC_RBQB_ADDR_Pos) /**< \brief (GMAC_RBQB) Receive Buffer Queue Base Address */ +#define GMAC_RBQB_ADDR(value) ((GMAC_RBQB_ADDR_Msk & ((value) << GMAC_RBQB_ADDR_Pos))) +/* -------- GMAC_TBQB : (GMAC Offset: 0x01C) Transmit Buffer Queue Base Address Register -------- */ +#define GMAC_TBQB_ADDR_Pos 2 +#define GMAC_TBQB_ADDR_Msk (0x3fffffffu << GMAC_TBQB_ADDR_Pos) /**< \brief (GMAC_TBQB) Transmit Buffer Queue Base Address */ +#define GMAC_TBQB_ADDR(value) ((GMAC_TBQB_ADDR_Msk & ((value) << GMAC_TBQB_ADDR_Pos))) +/* -------- GMAC_RSR : (GMAC Offset: 0x020) Receive Status Register -------- */ +#define GMAC_RSR_BNA (0x1u << 0) /**< \brief (GMAC_RSR) Buffer Not Available */ +#define GMAC_RSR_REC (0x1u << 1) /**< \brief (GMAC_RSR) Frame Received */ +#define GMAC_RSR_RXOVR (0x1u << 2) /**< \brief (GMAC_RSR) Receive Overrun */ +#define GMAC_RSR_HNO (0x1u << 3) /**< \brief (GMAC_RSR) HRESP Not OK */ +/* -------- GMAC_ISR : (GMAC Offset: 0x024) Interrupt Status Register -------- */ +#define GMAC_ISR_MFS (0x1u << 0) /**< \brief (GMAC_ISR) Management Frame Sent */ +#define GMAC_ISR_RCOMP (0x1u << 1) /**< \brief (GMAC_ISR) Receive Complete */ +#define GMAC_ISR_RXUBR (0x1u << 2) /**< \brief (GMAC_ISR) RX Used Bit Read */ +#define GMAC_ISR_TXUBR (0x1u << 3) /**< \brief (GMAC_ISR) TX Used Bit Read */ +#define GMAC_ISR_TUR (0x1u << 4) /**< \brief (GMAC_ISR) Transmit Underrun */ +#define GMAC_ISR_RLEX (0x1u << 5) /**< \brief (GMAC_ISR) Retry Limit Exceeded */ +#define GMAC_ISR_TFC (0x1u << 6) /**< \brief (GMAC_ISR) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_ISR_TCOMP (0x1u << 7) /**< \brief (GMAC_ISR) Transmit Complete */ +#define GMAC_ISR_ROVR (0x1u << 10) /**< \brief (GMAC_ISR) Receive Overrun */ +#define GMAC_ISR_HRESP (0x1u << 11) /**< \brief (GMAC_ISR) HRESP Not OK */ +#define GMAC_ISR_PFNZ (0x1u << 12) /**< \brief (GMAC_ISR) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_ISR_PTZ (0x1u << 13) /**< \brief (GMAC_ISR) Pause Time Zero */ +#define GMAC_ISR_PFTR (0x1u << 14) /**< \brief (GMAC_ISR) Pause Frame Transmitted */ +#define GMAC_ISR_DRQFR (0x1u << 18) /**< \brief (GMAC_ISR) PTP Delay Request Frame Received */ +#define GMAC_ISR_SFR (0x1u << 19) /**< \brief (GMAC_ISR) PTP Sync Frame Received */ +#define GMAC_ISR_DRQFT (0x1u << 20) /**< \brief (GMAC_ISR) PTP Delay Request Frame Transmitted */ +#define GMAC_ISR_SFT (0x1u << 21) /**< \brief (GMAC_ISR) PTP Sync Frame Transmitted */ +#define GMAC_ISR_PDRQFR (0x1u << 22) /**< \brief (GMAC_ISR) PDelay Request Frame Received */ +#define GMAC_ISR_PDRSFR (0x1u << 23) /**< \brief (GMAC_ISR) PDelay Response Frame Received */ +#define GMAC_ISR_PDRQFT (0x1u << 24) /**< \brief (GMAC_ISR) PDelay Request Frame Transmitted */ +#define GMAC_ISR_PDRSFT (0x1u << 25) /**< \brief (GMAC_ISR) PDelay Response Frame Transmitted */ +#define GMAC_ISR_SRI (0x1u << 26) /**< \brief (GMAC_ISR) TSU Seconds Register Increment */ +#define GMAC_ISR_WOL (0x1u << 28) /**< \brief (GMAC_ISR) Wake On LAN */ +/* -------- GMAC_IER : (GMAC Offset: 0x028) Interrupt Enable Register -------- */ +#define GMAC_IER_MFS (0x1u << 0) /**< \brief (GMAC_IER) Management Frame Sent */ +#define GMAC_IER_RCOMP (0x1u << 1) /**< \brief (GMAC_IER) Receive Complete */ +#define GMAC_IER_RXUBR (0x1u << 2) /**< \brief (GMAC_IER) RX Used Bit Read */ +#define GMAC_IER_TXUBR (0x1u << 3) /**< \brief (GMAC_IER) TX Used Bit Read */ +#define GMAC_IER_TUR (0x1u << 4) /**< \brief (GMAC_IER) Transmit Underrun */ +#define GMAC_IER_RLEX (0x1u << 5) /**< \brief (GMAC_IER) Retry Limit Exceeded or Late Collision */ +#define GMAC_IER_TFC (0x1u << 6) /**< \brief (GMAC_IER) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_IER_TCOMP (0x1u << 7) /**< \brief (GMAC_IER) Transmit Complete */ +#define GMAC_IER_ROVR (0x1u << 10) /**< \brief (GMAC_IER) Receive Overrun */ +#define GMAC_IER_HRESP (0x1u << 11) /**< \brief (GMAC_IER) HRESP Not OK */ +#define GMAC_IER_PFNZ (0x1u << 12) /**< \brief (GMAC_IER) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_IER_PTZ (0x1u << 13) /**< \brief (GMAC_IER) Pause Time Zero */ +#define GMAC_IER_PFTR (0x1u << 14) /**< \brief (GMAC_IER) Pause Frame Transmitted */ +#define GMAC_IER_EXINT (0x1u << 15) /**< \brief (GMAC_IER) External Interrupt */ +#define GMAC_IER_DRQFR (0x1u << 18) /**< \brief (GMAC_IER) PTP Delay Request Frame Received */ +#define GMAC_IER_SFR (0x1u << 19) /**< \brief (GMAC_IER) PTP Sync Frame Received */ +#define GMAC_IER_DRQFT (0x1u << 20) /**< \brief (GMAC_IER) PTP Delay Request Frame Transmitted */ +#define GMAC_IER_SFT (0x1u << 21) /**< \brief (GMAC_IER) PTP Sync Frame Transmitted */ +#define GMAC_IER_PDRQFR (0x1u << 22) /**< \brief (GMAC_IER) PDelay Request Frame Received */ +#define GMAC_IER_PDRSFR (0x1u << 23) /**< \brief (GMAC_IER) PDelay Response Frame Received */ +#define GMAC_IER_PDRQFT (0x1u << 24) /**< \brief (GMAC_IER) PDelay Request Frame Transmitted */ +#define GMAC_IER_PDRSFT (0x1u << 25) /**< \brief (GMAC_IER) PDelay Response Frame Transmitted */ +#define GMAC_IER_SRI (0x1u << 26) /**< \brief (GMAC_IER) TSU Seconds Register Increment */ +#define GMAC_IER_WOL (0x1u << 28) /**< \brief (GMAC_IER) Wake On LAN */ +/* -------- GMAC_IDR : (GMAC Offset: 0x02C) Interrupt Disable Register -------- */ +#define GMAC_IDR_MFS (0x1u << 0) /**< \brief (GMAC_IDR) Management Frame Sent */ +#define GMAC_IDR_RCOMP (0x1u << 1) /**< \brief (GMAC_IDR) Receive Complete */ +#define GMAC_IDR_RXUBR (0x1u << 2) /**< \brief (GMAC_IDR) RX Used Bit Read */ +#define GMAC_IDR_TXUBR (0x1u << 3) /**< \brief (GMAC_IDR) TX Used Bit Read */ +#define GMAC_IDR_TUR (0x1u << 4) /**< \brief (GMAC_IDR) Transmit Underrun */ +#define GMAC_IDR_RLEX (0x1u << 5) /**< \brief (GMAC_IDR) Retry Limit Exceeded or Late Collision */ +#define GMAC_IDR_TFC (0x1u << 6) /**< \brief (GMAC_IDR) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_IDR_TCOMP (0x1u << 7) /**< \brief (GMAC_IDR) Transmit Complete */ +#define GMAC_IDR_ROVR (0x1u << 10) /**< \brief (GMAC_IDR) Receive Overrun */ +#define GMAC_IDR_HRESP (0x1u << 11) /**< \brief (GMAC_IDR) HRESP Not OK */ +#define GMAC_IDR_PFNZ (0x1u << 12) /**< \brief (GMAC_IDR) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_IDR_PTZ (0x1u << 13) /**< \brief (GMAC_IDR) Pause Time Zero */ +#define GMAC_IDR_PFTR (0x1u << 14) /**< \brief (GMAC_IDR) Pause Frame Transmitted */ +#define GMAC_IDR_EXINT (0x1u << 15) /**< \brief (GMAC_IDR) External Interrupt */ +#define GMAC_IDR_DRQFR (0x1u << 18) /**< \brief (GMAC_IDR) PTP Delay Request Frame Received */ +#define GMAC_IDR_SFR (0x1u << 19) /**< \brief (GMAC_IDR) PTP Sync Frame Received */ +#define GMAC_IDR_DRQFT (0x1u << 20) /**< \brief (GMAC_IDR) PTP Delay Request Frame Transmitted */ +#define GMAC_IDR_SFT (0x1u << 21) /**< \brief (GMAC_IDR) PTP Sync Frame Transmitted */ +#define GMAC_IDR_PDRQFR (0x1u << 22) /**< \brief (GMAC_IDR) PDelay Request Frame Received */ +#define GMAC_IDR_PDRSFR (0x1u << 23) /**< \brief (GMAC_IDR) PDelay Response Frame Received */ +#define GMAC_IDR_PDRQFT (0x1u << 24) /**< \brief (GMAC_IDR) PDelay Request Frame Transmitted */ +#define GMAC_IDR_PDRSFT (0x1u << 25) /**< \brief (GMAC_IDR) PDelay Response Frame Transmitted */ +#define GMAC_IDR_SRI (0x1u << 26) /**< \brief (GMAC_IDR) TSU Seconds Register Increment */ +#define GMAC_IDR_WOL (0x1u << 28) /**< \brief (GMAC_IDR) Wake On LAN */ +/* -------- GMAC_IMR : (GMAC Offset: 0x030) Interrupt Mask Register -------- */ +#define GMAC_IMR_MFS (0x1u << 0) /**< \brief (GMAC_IMR) Management Frame Sent */ +#define GMAC_IMR_RCOMP (0x1u << 1) /**< \brief (GMAC_IMR) Receive Complete */ +#define GMAC_IMR_RXUBR (0x1u << 2) /**< \brief (GMAC_IMR) RX Used Bit Read */ +#define GMAC_IMR_TXUBR (0x1u << 3) /**< \brief (GMAC_IMR) TX Used Bit Read */ +#define GMAC_IMR_TUR (0x1u << 4) /**< \brief (GMAC_IMR) Transmit Underrun */ +#define GMAC_IMR_RLEX (0x1u << 5) /**< \brief (GMAC_IMR) Retry Limit Exceeded */ +#define GMAC_IMR_TFC (0x1u << 6) /**< \brief (GMAC_IMR) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_IMR_TCOMP (0x1u << 7) /**< \brief (GMAC_IMR) Transmit Complete */ +#define GMAC_IMR_ROVR (0x1u << 10) /**< \brief (GMAC_IMR) Receive Overrun */ +#define GMAC_IMR_HRESP (0x1u << 11) /**< \brief (GMAC_IMR) HRESP Not OK */ +#define GMAC_IMR_PFNZ (0x1u << 12) /**< \brief (GMAC_IMR) Pause Frame with Non-zero Pause Quantum Received */ +#define GMAC_IMR_PTZ (0x1u << 13) /**< \brief (GMAC_IMR) Pause Time Zero */ +#define GMAC_IMR_PFTR (0x1u << 14) /**< \brief (GMAC_IMR) Pause Frame Transmitted */ +#define GMAC_IMR_EXINT (0x1u << 15) /**< \brief (GMAC_IMR) External Interrupt */ +#define GMAC_IMR_DRQFR (0x1u << 18) /**< \brief (GMAC_IMR) PTP Delay Request Frame Received */ +#define GMAC_IMR_SFR (0x1u << 19) /**< \brief (GMAC_IMR) PTP Sync Frame Received */ +#define GMAC_IMR_DRQFT (0x1u << 20) /**< \brief (GMAC_IMR) PTP Delay Request Frame Transmitted */ +#define GMAC_IMR_SFT (0x1u << 21) /**< \brief (GMAC_IMR) PTP Sync Frame Transmitted */ +#define GMAC_IMR_PDRQFR (0x1u << 22) /**< \brief (GMAC_IMR) PDelay Request Frame Received */ +#define GMAC_IMR_PDRSFR (0x1u << 23) /**< \brief (GMAC_IMR) PDelay Response Frame Received */ +#define GMAC_IMR_PDRQFT (0x1u << 24) /**< \brief (GMAC_IMR) PDelay Request Frame Transmitted */ +#define GMAC_IMR_PDRSFT (0x1u << 25) /**< \brief (GMAC_IMR) PDelay Response Frame Transmitted */ +#define GMAC_IMR_SRI (0x1u << 26) /**< \brief (GMAC_IMR) TSU Seconds Register Increment */ +#define GMAC_IMR_WOL (0x1u << 28) /**< \brief (GMAC_IMR) Wake On LAN */ +/* -------- GMAC_MAN : (GMAC Offset: 0x034) PHY Maintenance Register -------- */ +#define GMAC_MAN_DATA_Pos 0 +#define GMAC_MAN_DATA_Msk (0xffffu << GMAC_MAN_DATA_Pos) /**< \brief (GMAC_MAN) PHY Data */ +#define GMAC_MAN_DATA(value) ((GMAC_MAN_DATA_Msk & ((value) << GMAC_MAN_DATA_Pos))) +#define GMAC_MAN_WTN_Pos 16 +#define GMAC_MAN_WTN_Msk (0x3u << GMAC_MAN_WTN_Pos) /**< \brief (GMAC_MAN) Write Ten */ +#define GMAC_MAN_WTN(value) ((GMAC_MAN_WTN_Msk & ((value) << GMAC_MAN_WTN_Pos))) +#define GMAC_MAN_REGA_Pos 18 +#define GMAC_MAN_REGA_Msk (0x1fu << GMAC_MAN_REGA_Pos) /**< \brief (GMAC_MAN) Register Address */ +#define GMAC_MAN_REGA(value) ((GMAC_MAN_REGA_Msk & ((value) << GMAC_MAN_REGA_Pos))) +#define GMAC_MAN_PHYA_Pos 23 +#define GMAC_MAN_PHYA_Msk (0x1fu << GMAC_MAN_PHYA_Pos) /**< \brief (GMAC_MAN) PHY Address */ +#define GMAC_MAN_PHYA(value) ((GMAC_MAN_PHYA_Msk & ((value) << GMAC_MAN_PHYA_Pos))) +#define GMAC_MAN_OP_Pos 28 +#define GMAC_MAN_OP_Msk (0x3u << GMAC_MAN_OP_Pos) /**< \brief (GMAC_MAN) Operation */ +#define GMAC_MAN_OP(value) ((GMAC_MAN_OP_Msk & ((value) << GMAC_MAN_OP_Pos))) +#define GMAC_MAN_CLTTO (0x1u << 30) /**< \brief (GMAC_MAN) Clause 22 Operation */ +#define GMAC_MAN_WZO (0x1u << 31) /**< \brief (GMAC_MAN) Write ZERO */ +/* -------- GMAC_RPQ : (GMAC Offset: 0x038) Received Pause Quantum Register -------- */ +#define GMAC_RPQ_RPQ_Pos 0 +#define GMAC_RPQ_RPQ_Msk (0xffffu << GMAC_RPQ_RPQ_Pos) /**< \brief (GMAC_RPQ) Received Pause Quantum */ +/* -------- GMAC_TPQ : (GMAC Offset: 0x03C) Transmit Pause Quantum Register -------- */ +#define GMAC_TPQ_TPQ_Pos 0 +#define GMAC_TPQ_TPQ_Msk (0xffffu << GMAC_TPQ_TPQ_Pos) /**< \brief (GMAC_TPQ) Transmit Pause Quantum */ +#define GMAC_TPQ_TPQ(value) ((GMAC_TPQ_TPQ_Msk & ((value) << GMAC_TPQ_TPQ_Pos))) +/* -------- GMAC_TPSF : (GMAC Offset: 0x040) TX Partial Store and Forward Register -------- */ +#define GMAC_TPSF_TPB1ADR_Pos 0 +#define GMAC_TPSF_TPB1ADR_Msk (0xfffu << GMAC_TPSF_TPB1ADR_Pos) /**< \brief (GMAC_TPSF) Transmit Partial Store and Forward Address */ +#define GMAC_TPSF_TPB1ADR(value) ((GMAC_TPSF_TPB1ADR_Msk & ((value) << GMAC_TPSF_TPB1ADR_Pos))) +#define GMAC_TPSF_ENTXP (0x1u << 31) /**< \brief (GMAC_TPSF) Enable TX Partial Store and Forward Operation */ +/* -------- GMAC_RPSF : (GMAC Offset: 0x044) RX Partial Store and Forward Register -------- */ +#define GMAC_RPSF_RPB1ADR_Pos 0 +#define GMAC_RPSF_RPB1ADR_Msk (0xfffu << GMAC_RPSF_RPB1ADR_Pos) /**< \brief (GMAC_RPSF) Receive Partial Store and Forward Address */ +#define GMAC_RPSF_RPB1ADR(value) ((GMAC_RPSF_RPB1ADR_Msk & ((value) << GMAC_RPSF_RPB1ADR_Pos))) +#define GMAC_RPSF_ENRXP (0x1u << 31) /**< \brief (GMAC_RPSF) Enable RX Partial Store and Forward Operation */ +/* -------- GMAC_RJFML : (GMAC Offset: 0x048) RX Jumbo Frame Max Length Register -------- */ +#define GMAC_RJFML_FML_Pos 0 +#define GMAC_RJFML_FML_Msk (0x3fffu << GMAC_RJFML_FML_Pos) /**< \brief (GMAC_RJFML) Frame Max Length */ +#define GMAC_RJFML_FML(value) ((GMAC_RJFML_FML_Msk & ((value) << GMAC_RJFML_FML_Pos))) +/* -------- GMAC_HRB : (GMAC Offset: 0x080) Hash Register Bottom -------- */ +#define GMAC_HRB_ADDR_Pos 0 +#define GMAC_HRB_ADDR_Msk (0xffffffffu << GMAC_HRB_ADDR_Pos) /**< \brief (GMAC_HRB) Hash Address */ +#define GMAC_HRB_ADDR(value) ((GMAC_HRB_ADDR_Msk & ((value) << GMAC_HRB_ADDR_Pos))) +/* -------- GMAC_HRT : (GMAC Offset: 0x084) Hash Register Top -------- */ +#define GMAC_HRT_ADDR_Pos 0 +#define GMAC_HRT_ADDR_Msk (0xffffffffu << GMAC_HRT_ADDR_Pos) /**< \brief (GMAC_HRT) Hash Address */ +#define GMAC_HRT_ADDR(value) ((GMAC_HRT_ADDR_Msk & ((value) << GMAC_HRT_ADDR_Pos))) +/* -------- GMAC_SAB : (GMAC Offset: N/A) Specific Address 1 Bottom Register -------- */ +#define GMAC_SAB_ADDR_Pos 0 +#define GMAC_SAB_ADDR_Msk (0xffffffffu << GMAC_SAB_ADDR_Pos) /**< \brief (GMAC_SAB) Specific Address 1 */ +#define GMAC_SAB_ADDR(value) ((GMAC_SAB_ADDR_Msk & ((value) << GMAC_SAB_ADDR_Pos))) +/* -------- GMAC_SAT : (GMAC Offset: N/A) Specific Address 1 Top Register -------- */ +#define GMAC_SAT_ADDR_Pos 0 +#define GMAC_SAT_ADDR_Msk (0xffffu << GMAC_SAT_ADDR_Pos) /**< \brief (GMAC_SAT) Specific Address 1 */ +#define GMAC_SAT_ADDR(value) ((GMAC_SAT_ADDR_Msk & ((value) << GMAC_SAT_ADDR_Pos))) +/* -------- GMAC_TIDM1 : (GMAC Offset: 0x0A8) Type ID Match 1 Register -------- */ +#define GMAC_TIDM1_TID_Pos 0 +#define GMAC_TIDM1_TID_Msk (0xffffu << GMAC_TIDM1_TID_Pos) /**< \brief (GMAC_TIDM1) Type ID Match 1 */ +#define GMAC_TIDM1_TID(value) ((GMAC_TIDM1_TID_Msk & ((value) << GMAC_TIDM1_TID_Pos))) +#define GMAC_TIDM1_ENID1 (0x1u << 31) /**< \brief (GMAC_TIDM1) Enable Copying of TID Matched Frames */ +/* -------- GMAC_TIDM2 : (GMAC Offset: 0x0AC) Type ID Match 2 Register -------- */ +#define GMAC_TIDM2_TID_Pos 0 +#define GMAC_TIDM2_TID_Msk (0xffffu << GMAC_TIDM2_TID_Pos) /**< \brief (GMAC_TIDM2) Type ID Match 2 */ +#define GMAC_TIDM2_TID(value) ((GMAC_TIDM2_TID_Msk & ((value) << GMAC_TIDM2_TID_Pos))) +#define GMAC_TIDM2_ENID2 (0x1u << 31) /**< \brief (GMAC_TIDM2) Enable Copying of TID Matched Frames */ +/* -------- GMAC_TIDM3 : (GMAC Offset: 0x0B0) Type ID Match 3 Register -------- */ +#define GMAC_TIDM3_TID_Pos 0 +#define GMAC_TIDM3_TID_Msk (0xffffu << GMAC_TIDM3_TID_Pos) /**< \brief (GMAC_TIDM3) Type ID Match 3 */ +#define GMAC_TIDM3_TID(value) ((GMAC_TIDM3_TID_Msk & ((value) << GMAC_TIDM3_TID_Pos))) +#define GMAC_TIDM3_ENID3 (0x1u << 31) /**< \brief (GMAC_TIDM3) Enable Copying of TID Matched Frames */ +/* -------- GMAC_TIDM4 : (GMAC Offset: 0x0B4) Type ID Match 4 Register -------- */ +#define GMAC_TIDM4_TID_Pos 0 +#define GMAC_TIDM4_TID_Msk (0xffffu << GMAC_TIDM4_TID_Pos) /**< \brief (GMAC_TIDM4) Type ID Match 4 */ +#define GMAC_TIDM4_TID(value) ((GMAC_TIDM4_TID_Msk & ((value) << GMAC_TIDM4_TID_Pos))) +#define GMAC_TIDM4_ENID4 (0x1u << 31) /**< \brief (GMAC_TIDM4) Enable Copying of TID Matched Frames */ +/* -------- GMAC_WOL : (GMAC Offset: 0x0B8) Wake on LAN Register -------- */ +#define GMAC_WOL_IP_Pos 0 +#define GMAC_WOL_IP_Msk (0xffffu << GMAC_WOL_IP_Pos) /**< \brief (GMAC_WOL) ARP Request IP Address */ +#define GMAC_WOL_IP(value) ((GMAC_WOL_IP_Msk & ((value) << GMAC_WOL_IP_Pos))) +#define GMAC_WOL_MAG (0x1u << 16) /**< \brief (GMAC_WOL) Magic Packet Event Enable */ +#define GMAC_WOL_ARP (0x1u << 17) /**< \brief (GMAC_WOL) ARP Request IP Address */ +#define GMAC_WOL_SA1 (0x1u << 18) /**< \brief (GMAC_WOL) Specific Address Register 1 Event Enable */ +#define GMAC_WOL_MTI (0x1u << 19) /**< \brief (GMAC_WOL) Multicast Hash Event Enable */ +/* -------- GMAC_IPGS : (GMAC Offset: 0x0BC) IPG Stretch Register -------- */ +#define GMAC_IPGS_FL_Pos 0 +#define GMAC_IPGS_FL_Msk (0xffffu << GMAC_IPGS_FL_Pos) /**< \brief (GMAC_IPGS) Frame Length */ +#define GMAC_IPGS_FL(value) ((GMAC_IPGS_FL_Msk & ((value) << GMAC_IPGS_FL_Pos))) +/* -------- GMAC_SVLAN : (GMAC Offset: 0x0C0) Stacked VLAN Register -------- */ +#define GMAC_SVLAN_VLAN_TYPE_Pos 0 +#define GMAC_SVLAN_VLAN_TYPE_Msk (0xffffu << GMAC_SVLAN_VLAN_TYPE_Pos) /**< \brief (GMAC_SVLAN) User Defined VLAN_TYPE Field */ +#define GMAC_SVLAN_VLAN_TYPE(value) ((GMAC_SVLAN_VLAN_TYPE_Msk & ((value) << GMAC_SVLAN_VLAN_TYPE_Pos))) +#define GMAC_SVLAN_ESVLAN (0x1u << 31) /**< \brief (GMAC_SVLAN) Enable Stacked VLAN Processing Mode */ +/* -------- GMAC_TPFCP : (GMAC Offset: 0x0C4) Transmit PFC Pause Register -------- */ +#define GMAC_TPFCP_PEV_Pos 0 +#define GMAC_TPFCP_PEV_Msk (0xffu << GMAC_TPFCP_PEV_Pos) /**< \brief (GMAC_TPFCP) Priority Enable Vector */ +#define GMAC_TPFCP_PEV(value) ((GMAC_TPFCP_PEV_Msk & ((value) << GMAC_TPFCP_PEV_Pos))) +#define GMAC_TPFCP_PQ_Pos 8 +#define GMAC_TPFCP_PQ_Msk (0xffu << GMAC_TPFCP_PQ_Pos) /**< \brief (GMAC_TPFCP) Pause Quantum */ +#define GMAC_TPFCP_PQ(value) ((GMAC_TPFCP_PQ_Msk & ((value) << GMAC_TPFCP_PQ_Pos))) +/* -------- GMAC_SAMB1 : (GMAC Offset: 0x0C8) Specific Address 1 Mask Bottom Register -------- */ +#define GMAC_SAMB1_ADDR_Pos 0 +#define GMAC_SAMB1_ADDR_Msk (0xffffffffu << GMAC_SAMB1_ADDR_Pos) /**< \brief (GMAC_SAMB1) Specific Address 1 Mask */ +#define GMAC_SAMB1_ADDR(value) ((GMAC_SAMB1_ADDR_Msk & ((value) << GMAC_SAMB1_ADDR_Pos))) +/* -------- GMAC_SAMT1 : (GMAC Offset: 0x0CC) Specific Address 1 Mask Top Register -------- */ +#define GMAC_SAMT1_ADDR_Pos 0 +#define GMAC_SAMT1_ADDR_Msk (0xffffu << GMAC_SAMT1_ADDR_Pos) /**< \brief (GMAC_SAMT1) Specific Address 1 Mask */ +#define GMAC_SAMT1_ADDR(value) ((GMAC_SAMT1_ADDR_Msk & ((value) << GMAC_SAMT1_ADDR_Pos))) +/* -------- GMAC_NSC : (GMAC Offset: 0x0DC) 1588 Timer Nanosecond Comparison Register -------- */ +#define GMAC_NSC_NANOSEC_Pos 0 +#define GMAC_NSC_NANOSEC_Msk (0x3fffffu << GMAC_NSC_NANOSEC_Pos) /**< \brief (GMAC_NSC) 1588 Timer Nanosecond Comparison Value */ +#define GMAC_NSC_NANOSEC(value) ((GMAC_NSC_NANOSEC_Msk & ((value) << GMAC_NSC_NANOSEC_Pos))) +/* -------- GMAC_SCL : (GMAC Offset: 0x0E0) 1588 Timer Second Comparison Low Register -------- */ +#define GMAC_SCL_SEC_Pos 0 +#define GMAC_SCL_SEC_Msk (0xffffffffu << GMAC_SCL_SEC_Pos) /**< \brief (GMAC_SCL) 1588 Timer Second Comparison Value */ +#define GMAC_SCL_SEC(value) ((GMAC_SCL_SEC_Msk & ((value) << GMAC_SCL_SEC_Pos))) +/* -------- GMAC_SCH : (GMAC Offset: 0x0E4) 1588 Timer Second Comparison High Register -------- */ +#define GMAC_SCH_SEC_Pos 0 +#define GMAC_SCH_SEC_Msk (0xffffu << GMAC_SCH_SEC_Pos) /**< \brief (GMAC_SCH) 1588 Timer Second Comparison Value */ +#define GMAC_SCH_SEC(value) ((GMAC_SCH_SEC_Msk & ((value) << GMAC_SCH_SEC_Pos))) +/* -------- GMAC_EFTSH : (GMAC Offset: 0x0E8) PTP Event Frame Transmitted Seconds High Register -------- */ +#define GMAC_EFTSH_RUD_Pos 0 +#define GMAC_EFTSH_RUD_Msk (0xffffu << GMAC_EFTSH_RUD_Pos) /**< \brief (GMAC_EFTSH) Register Update */ +/* -------- GMAC_EFRSH : (GMAC Offset: 0x0EC) PTP Event Frame Received Seconds High Register -------- */ +#define GMAC_EFRSH_RUD_Pos 0 +#define GMAC_EFRSH_RUD_Msk (0xffffu << GMAC_EFRSH_RUD_Pos) /**< \brief (GMAC_EFRSH) Register Update */ +/* -------- GMAC_PEFTSH : (GMAC Offset: 0x0F0) PTP Peer Event Frame Transmitted Seconds High Register -------- */ +#define GMAC_PEFTSH_RUD_Pos 0 +#define GMAC_PEFTSH_RUD_Msk (0xffffu << GMAC_PEFTSH_RUD_Pos) /**< \brief (GMAC_PEFTSH) Register Update */ +/* -------- GMAC_PEFRSH : (GMAC Offset: 0x0F4) PTP Peer Event Frame Received Seconds High Register -------- */ +#define GMAC_PEFRSH_RUD_Pos 0 +#define GMAC_PEFRSH_RUD_Msk (0xffffu << GMAC_PEFRSH_RUD_Pos) /**< \brief (GMAC_PEFRSH) Register Update */ +/* -------- GMAC_MID : (GMAC Offset: 0x0FC) Module ID Register -------- */ +#define GMAC_MID_MREV_Pos 0 +#define GMAC_MID_MREV_Msk (0xffffu << GMAC_MID_MREV_Pos) /**< \brief (GMAC_MID) Module Revision */ +#define GMAC_MID_MID_Pos 16 +#define GMAC_MID_MID_Msk (0xffffu << GMAC_MID_MID_Pos) /**< \brief (GMAC_MID) Module Identification Number */ +/* -------- GMAC_OTLO : (GMAC Offset: 0x100) Octets Transmitted Low Register -------- */ +#define GMAC_OTLO_TXO_Pos 0 +#define GMAC_OTLO_TXO_Msk (0xffffffffu << GMAC_OTLO_TXO_Pos) /**< \brief (GMAC_OTLO) Transmitted Octets */ +/* -------- GMAC_OTHI : (GMAC Offset: 0x104) Octets Transmitted High Register -------- */ +#define GMAC_OTHI_TXO_Pos 0 +#define GMAC_OTHI_TXO_Msk (0xffffu << GMAC_OTHI_TXO_Pos) /**< \brief (GMAC_OTHI) Transmitted Octets */ +/* -------- GMAC_FT : (GMAC Offset: 0x108) Frames Transmitted Register -------- */ +#define GMAC_FT_FTX_Pos 0 +#define GMAC_FT_FTX_Msk (0xffffffffu << GMAC_FT_FTX_Pos) /**< \brief (GMAC_FT) Frames Transmitted without Error */ +/* -------- GMAC_BCFT : (GMAC Offset: 0x10C) Broadcast Frames Transmitted Register -------- */ +#define GMAC_BCFT_BFTX_Pos 0 +#define GMAC_BCFT_BFTX_Msk (0xffffffffu << GMAC_BCFT_BFTX_Pos) /**< \brief (GMAC_BCFT) Broadcast Frames Transmitted without Error */ +/* -------- GMAC_MFT : (GMAC Offset: 0x110) Multicast Frames Transmitted Register -------- */ +#define GMAC_MFT_MFTX_Pos 0 +#define GMAC_MFT_MFTX_Msk (0xffffffffu << GMAC_MFT_MFTX_Pos) /**< \brief (GMAC_MFT) Multicast Frames Transmitted without Error */ +/* -------- GMAC_PFT : (GMAC Offset: 0x114) Pause Frames Transmitted Register -------- */ +#define GMAC_PFT_PFTX_Pos 0 +#define GMAC_PFT_PFTX_Msk (0xffffu << GMAC_PFT_PFTX_Pos) /**< \brief (GMAC_PFT) Pause Frames Transmitted Register */ +/* -------- GMAC_BFT64 : (GMAC Offset: 0x118) 64 Byte Frames Transmitted Register -------- */ +#define GMAC_BFT64_NFTX_Pos 0 +#define GMAC_BFT64_NFTX_Msk (0xffffffffu << GMAC_BFT64_NFTX_Pos) /**< \brief (GMAC_BFT64) 64 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT127 : (GMAC Offset: 0x11C) 65 to 127 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT127_NFTX_Pos 0 +#define GMAC_TBFT127_NFTX_Msk (0xffffffffu << GMAC_TBFT127_NFTX_Pos) /**< \brief (GMAC_TBFT127) 65 to 127 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT255 : (GMAC Offset: 0x120) 128 to 255 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT255_NFTX_Pos 0 +#define GMAC_TBFT255_NFTX_Msk (0xffffffffu << GMAC_TBFT255_NFTX_Pos) /**< \brief (GMAC_TBFT255) 128 to 255 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT511 : (GMAC Offset: 0x124) 256 to 511 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT511_NFTX_Pos 0 +#define GMAC_TBFT511_NFTX_Msk (0xffffffffu << GMAC_TBFT511_NFTX_Pos) /**< \brief (GMAC_TBFT511) 256 to 511 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT1023 : (GMAC Offset: 0x128) 512 to 1023 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT1023_NFTX_Pos 0 +#define GMAC_TBFT1023_NFTX_Msk (0xffffffffu << GMAC_TBFT1023_NFTX_Pos) /**< \brief (GMAC_TBFT1023) 512 to 1023 Byte Frames Transmitted without Error */ +/* -------- GMAC_TBFT1518 : (GMAC Offset: 0x12C) 1024 to 1518 Byte Frames Transmitted Register -------- */ +#define GMAC_TBFT1518_NFTX_Pos 0 +#define GMAC_TBFT1518_NFTX_Msk (0xffffffffu << GMAC_TBFT1518_NFTX_Pos) /**< \brief (GMAC_TBFT1518) 1024 to 1518 Byte Frames Transmitted without Error */ +/* -------- GMAC_GTBFT1518 : (GMAC Offset: 0x130) Greater Than 1518 Byte Frames Transmitted Register -------- */ +#define GMAC_GTBFT1518_NFTX_Pos 0 +#define GMAC_GTBFT1518_NFTX_Msk (0xffffffffu << GMAC_GTBFT1518_NFTX_Pos) /**< \brief (GMAC_GTBFT1518) Greater than 1518 Byte Frames Transmitted without Error */ +/* -------- GMAC_TUR : (GMAC Offset: 0x134) Transmit Underruns Register -------- */ +#define GMAC_TUR_TXUNR_Pos 0 +#define GMAC_TUR_TXUNR_Msk (0x3ffu << GMAC_TUR_TXUNR_Pos) /**< \brief (GMAC_TUR) Transmit Underruns */ +/* -------- GMAC_SCF : (GMAC Offset: 0x138) Single Collision Frames Register -------- */ +#define GMAC_SCF_SCOL_Pos 0 +#define GMAC_SCF_SCOL_Msk (0x3ffffu << GMAC_SCF_SCOL_Pos) /**< \brief (GMAC_SCF) Single Collision */ +/* -------- GMAC_MCF : (GMAC Offset: 0x13C) Multiple Collision Frames Register -------- */ +#define GMAC_MCF_MCOL_Pos 0 +#define GMAC_MCF_MCOL_Msk (0x3ffffu << GMAC_MCF_MCOL_Pos) /**< \brief (GMAC_MCF) Multiple Collision */ +/* -------- GMAC_EC : (GMAC Offset: 0x140) Excessive Collisions Register -------- */ +#define GMAC_EC_XCOL_Pos 0 +#define GMAC_EC_XCOL_Msk (0x3ffu << GMAC_EC_XCOL_Pos) /**< \brief (GMAC_EC) Excessive Collisions */ +/* -------- GMAC_LC : (GMAC Offset: 0x144) Late Collisions Register -------- */ +#define GMAC_LC_LCOL_Pos 0 +#define GMAC_LC_LCOL_Msk (0x3ffu << GMAC_LC_LCOL_Pos) /**< \brief (GMAC_LC) Late Collisions */ +/* -------- GMAC_DTF : (GMAC Offset: 0x148) Deferred Transmission Frames Register -------- */ +#define GMAC_DTF_DEFT_Pos 0 +#define GMAC_DTF_DEFT_Msk (0x3ffffu << GMAC_DTF_DEFT_Pos) /**< \brief (GMAC_DTF) Deferred Transmission */ +/* -------- GMAC_CSE : (GMAC Offset: 0x14C) Carrier Sense Errors Register -------- */ +#define GMAC_CSE_CSR_Pos 0 +#define GMAC_CSE_CSR_Msk (0x3ffu << GMAC_CSE_CSR_Pos) /**< \brief (GMAC_CSE) Carrier Sense Error */ +/* -------- GMAC_ORLO : (GMAC Offset: 0x150) Octets Received Low Received Register -------- */ +#define GMAC_ORLO_RXO_Pos 0 +#define GMAC_ORLO_RXO_Msk (0xffffffffu << GMAC_ORLO_RXO_Pos) /**< \brief (GMAC_ORLO) Received Octets */ +/* -------- GMAC_ORHI : (GMAC Offset: 0x154) Octets Received High Received Register -------- */ +#define GMAC_ORHI_RXO_Pos 0 +#define GMAC_ORHI_RXO_Msk (0xffffu << GMAC_ORHI_RXO_Pos) /**< \brief (GMAC_ORHI) Received Octets */ +/* -------- GMAC_FR : (GMAC Offset: 0x158) Frames Received Register -------- */ +#define GMAC_FR_FRX_Pos 0 +#define GMAC_FR_FRX_Msk (0xffffffffu << GMAC_FR_FRX_Pos) /**< \brief (GMAC_FR) Frames Received without Error */ +/* -------- GMAC_BCFR : (GMAC Offset: 0x15C) Broadcast Frames Received Register -------- */ +#define GMAC_BCFR_BFRX_Pos 0 +#define GMAC_BCFR_BFRX_Msk (0xffffffffu << GMAC_BCFR_BFRX_Pos) /**< \brief (GMAC_BCFR) Broadcast Frames Received without Error */ +/* -------- GMAC_MFR : (GMAC Offset: 0x160) Multicast Frames Received Register -------- */ +#define GMAC_MFR_MFRX_Pos 0 +#define GMAC_MFR_MFRX_Msk (0xffffffffu << GMAC_MFR_MFRX_Pos) /**< \brief (GMAC_MFR) Multicast Frames Received without Error */ +/* -------- GMAC_PFR : (GMAC Offset: 0x164) Pause Frames Received Register -------- */ +#define GMAC_PFR_PFRX_Pos 0 +#define GMAC_PFR_PFRX_Msk (0xffffu << GMAC_PFR_PFRX_Pos) /**< \brief (GMAC_PFR) Pause Frames Received Register */ +/* -------- GMAC_BFR64 : (GMAC Offset: 0x168) 64 Byte Frames Received Register -------- */ +#define GMAC_BFR64_NFRX_Pos 0 +#define GMAC_BFR64_NFRX_Msk (0xffffffffu << GMAC_BFR64_NFRX_Pos) /**< \brief (GMAC_BFR64) 64 Byte Frames Received without Error */ +/* -------- GMAC_TBFR127 : (GMAC Offset: 0x16C) 65 to 127 Byte Frames Received Register -------- */ +#define GMAC_TBFR127_NFRX_Pos 0 +#define GMAC_TBFR127_NFRX_Msk (0xffffffffu << GMAC_TBFR127_NFRX_Pos) /**< \brief (GMAC_TBFR127) 65 to 127 Byte Frames Received without Error */ +/* -------- GMAC_TBFR255 : (GMAC Offset: 0x170) 128 to 255 Byte Frames Received Register -------- */ +#define GMAC_TBFR255_NFRX_Pos 0 +#define GMAC_TBFR255_NFRX_Msk (0xffffffffu << GMAC_TBFR255_NFRX_Pos) /**< \brief (GMAC_TBFR255) 128 to 255 Byte Frames Received without Error */ +/* -------- GMAC_TBFR511 : (GMAC Offset: 0x174) 256 to 511 Byte Frames Received Register -------- */ +#define GMAC_TBFR511_NFRX_Pos 0 +#define GMAC_TBFR511_NFRX_Msk (0xffffffffu << GMAC_TBFR511_NFRX_Pos) /**< \brief (GMAC_TBFR511) 256 to 511 Byte Frames Received without Error */ +/* -------- GMAC_TBFR1023 : (GMAC Offset: 0x178) 512 to 1023 Byte Frames Received Register -------- */ +#define GMAC_TBFR1023_NFRX_Pos 0 +#define GMAC_TBFR1023_NFRX_Msk (0xffffffffu << GMAC_TBFR1023_NFRX_Pos) /**< \brief (GMAC_TBFR1023) 512 to 1023 Byte Frames Received without Error */ +/* -------- GMAC_TBFR1518 : (GMAC Offset: 0x17C) 1024 to 1518 Byte Frames Received Register -------- */ +#define GMAC_TBFR1518_NFRX_Pos 0 +#define GMAC_TBFR1518_NFRX_Msk (0xffffffffu << GMAC_TBFR1518_NFRX_Pos) /**< \brief (GMAC_TBFR1518) 1024 to 1518 Byte Frames Received without Error */ +/* -------- GMAC_TMXBFR : (GMAC Offset: 0x180) 1519 to Maximum Byte Frames Received Register -------- */ +#define GMAC_TMXBFR_NFRX_Pos 0 +#define GMAC_TMXBFR_NFRX_Msk (0xffffffffu << GMAC_TMXBFR_NFRX_Pos) /**< \brief (GMAC_TMXBFR) 1519 to Maximum Byte Frames Received without Error */ +/* -------- GMAC_UFR : (GMAC Offset: 0x184) Undersize Frames Received Register -------- */ +#define GMAC_UFR_UFRX_Pos 0 +#define GMAC_UFR_UFRX_Msk (0x3ffu << GMAC_UFR_UFRX_Pos) /**< \brief (GMAC_UFR) Undersize Frames Received */ +/* -------- GMAC_OFR : (GMAC Offset: 0x188) Oversize Frames Received Register -------- */ +#define GMAC_OFR_OFRX_Pos 0 +#define GMAC_OFR_OFRX_Msk (0x3ffu << GMAC_OFR_OFRX_Pos) /**< \brief (GMAC_OFR) Oversized Frames Received */ +/* -------- GMAC_JR : (GMAC Offset: 0x18C) Jabbers Received Register -------- */ +#define GMAC_JR_JRX_Pos 0 +#define GMAC_JR_JRX_Msk (0x3ffu << GMAC_JR_JRX_Pos) /**< \brief (GMAC_JR) Jabbers Received */ +/* -------- GMAC_FCSE : (GMAC Offset: 0x190) Frame Check Sequence Errors Register -------- */ +#define GMAC_FCSE_FCKR_Pos 0 +#define GMAC_FCSE_FCKR_Msk (0x3ffu << GMAC_FCSE_FCKR_Pos) /**< \brief (GMAC_FCSE) Frame Check Sequence Errors */ +/* -------- GMAC_LFFE : (GMAC Offset: 0x194) Length Field Frame Errors Register -------- */ +#define GMAC_LFFE_LFER_Pos 0 +#define GMAC_LFFE_LFER_Msk (0x3ffu << GMAC_LFFE_LFER_Pos) /**< \brief (GMAC_LFFE) Length Field Frame Errors */ +/* -------- GMAC_RSE : (GMAC Offset: 0x198) Receive Symbol Errors Register -------- */ +#define GMAC_RSE_RXSE_Pos 0 +#define GMAC_RSE_RXSE_Msk (0x3ffu << GMAC_RSE_RXSE_Pos) /**< \brief (GMAC_RSE) Receive Symbol Errors */ +/* -------- GMAC_AE : (GMAC Offset: 0x19C) Alignment Errors Register -------- */ +#define GMAC_AE_AER_Pos 0 +#define GMAC_AE_AER_Msk (0x3ffu << GMAC_AE_AER_Pos) /**< \brief (GMAC_AE) Alignment Errors */ +/* -------- GMAC_RRE : (GMAC Offset: 0x1A0) Receive Resource Errors Register -------- */ +#define GMAC_RRE_RXRER_Pos 0 +#define GMAC_RRE_RXRER_Msk (0x3ffffu << GMAC_RRE_RXRER_Pos) /**< \brief (GMAC_RRE) Receive Resource Errors */ +/* -------- GMAC_ROE : (GMAC Offset: 0x1A4) Receive Overrun Register -------- */ +#define GMAC_ROE_RXOVR_Pos 0 +#define GMAC_ROE_RXOVR_Msk (0x3ffu << GMAC_ROE_RXOVR_Pos) /**< \brief (GMAC_ROE) Receive Overruns */ +/* -------- GMAC_IHCE : (GMAC Offset: 0x1A8) IP Header Checksum Errors Register -------- */ +#define GMAC_IHCE_HCKER_Pos 0 +#define GMAC_IHCE_HCKER_Msk (0xffu << GMAC_IHCE_HCKER_Pos) /**< \brief (GMAC_IHCE) IP Header Checksum Errors */ +/* -------- GMAC_TCE : (GMAC Offset: 0x1AC) TCP Checksum Errors Register -------- */ +#define GMAC_TCE_TCKER_Pos 0 +#define GMAC_TCE_TCKER_Msk (0xffu << GMAC_TCE_TCKER_Pos) /**< \brief (GMAC_TCE) TCP Checksum Errors */ +/* -------- GMAC_UCE : (GMAC Offset: 0x1B0) UDP Checksum Errors Register -------- */ +#define GMAC_UCE_UCKER_Pos 0 +#define GMAC_UCE_UCKER_Msk (0xffu << GMAC_UCE_UCKER_Pos) /**< \brief (GMAC_UCE) UDP Checksum Errors */ +/* -------- GMAC_TISUBN : (GMAC Offset: 0x1BC) 1588 Timer Increment Sub-nanoseconds Register -------- */ +#define GMAC_TISUBN_LSBTIR_Pos 0 +#define GMAC_TISUBN_LSBTIR_Msk (0xffffu << GMAC_TISUBN_LSBTIR_Pos) /**< \brief (GMAC_TISUBN) Lower Significant Bits of Timer Increment Register */ +#define GMAC_TISUBN_LSBTIR(value) ((GMAC_TISUBN_LSBTIR_Msk & ((value) << GMAC_TISUBN_LSBTIR_Pos))) +/* -------- GMAC_TSH : (GMAC Offset: 0x1C0) 1588 Timer Seconds High Register -------- */ +#define GMAC_TSH_TCS_Pos 0 +#define GMAC_TSH_TCS_Msk (0xffffu << GMAC_TSH_TCS_Pos) /**< \brief (GMAC_TSH) Timer Count in Seconds */ +#define GMAC_TSH_TCS(value) ((GMAC_TSH_TCS_Msk & ((value) << GMAC_TSH_TCS_Pos))) +/* -------- GMAC_TSL : (GMAC Offset: 0x1D0) 1588 Timer Seconds Low Register -------- */ +#define GMAC_TSL_TCS_Pos 0 +#define GMAC_TSL_TCS_Msk (0xffffffffu << GMAC_TSL_TCS_Pos) /**< \brief (GMAC_TSL) Timer Count in Seconds */ +#define GMAC_TSL_TCS(value) ((GMAC_TSL_TCS_Msk & ((value) << GMAC_TSL_TCS_Pos))) +/* -------- GMAC_TN : (GMAC Offset: 0x1D4) 1588 Timer Nanoseconds Register -------- */ +#define GMAC_TN_TNS_Pos 0 +#define GMAC_TN_TNS_Msk (0x3fffffffu << GMAC_TN_TNS_Pos) /**< \brief (GMAC_TN) Timer Count in Nanoseconds */ +#define GMAC_TN_TNS(value) ((GMAC_TN_TNS_Msk & ((value) << GMAC_TN_TNS_Pos))) +/* -------- GMAC_TA : (GMAC Offset: 0x1D8) 1588 Timer Adjust Register -------- */ +#define GMAC_TA_ITDT_Pos 0 +#define GMAC_TA_ITDT_Msk (0x3fffffffu << GMAC_TA_ITDT_Pos) /**< \brief (GMAC_TA) Increment/Decrement */ +#define GMAC_TA_ITDT(value) ((GMAC_TA_ITDT_Msk & ((value) << GMAC_TA_ITDT_Pos))) +#define GMAC_TA_ADJ (0x1u << 31) /**< \brief (GMAC_TA) Adjust 1588 Timer */ +/* -------- GMAC_TI : (GMAC Offset: 0x1DC) 1588 Timer Increment Register -------- */ +#define GMAC_TI_CNS_Pos 0 +#define GMAC_TI_CNS_Msk (0xffu << GMAC_TI_CNS_Pos) /**< \brief (GMAC_TI) Count Nanoseconds */ +#define GMAC_TI_CNS(value) ((GMAC_TI_CNS_Msk & ((value) << GMAC_TI_CNS_Pos))) +#define GMAC_TI_ACNS_Pos 8 +#define GMAC_TI_ACNS_Msk (0xffu << GMAC_TI_ACNS_Pos) /**< \brief (GMAC_TI) Alternative Count Nanoseconds */ +#define GMAC_TI_ACNS(value) ((GMAC_TI_ACNS_Msk & ((value) << GMAC_TI_ACNS_Pos))) +#define GMAC_TI_NIT_Pos 16 +#define GMAC_TI_NIT_Msk (0xffu << GMAC_TI_NIT_Pos) /**< \brief (GMAC_TI) Number of Increments */ +#define GMAC_TI_NIT(value) ((GMAC_TI_NIT_Msk & ((value) << GMAC_TI_NIT_Pos))) +/* -------- GMAC_EFTSL : (GMAC Offset: 0x1E0) PTP Event Frame Transmitted Seconds Low Register -------- */ +#define GMAC_EFTSL_RUD_Pos 0 +#define GMAC_EFTSL_RUD_Msk (0xffffffffu << GMAC_EFTSL_RUD_Pos) /**< \brief (GMAC_EFTSL) Register Update */ +/* -------- GMAC_EFTN : (GMAC Offset: 0x1E4) PTP Event Frame Transmitted Nanoseconds Register -------- */ +#define GMAC_EFTN_RUD_Pos 0 +#define GMAC_EFTN_RUD_Msk (0x3fffffffu << GMAC_EFTN_RUD_Pos) /**< \brief (GMAC_EFTN) Register Update */ +/* -------- GMAC_EFRSL : (GMAC Offset: 0x1E8) PTP Event Frame Received Seconds Low Register -------- */ +#define GMAC_EFRSL_RUD_Pos 0 +#define GMAC_EFRSL_RUD_Msk (0xffffffffu << GMAC_EFRSL_RUD_Pos) /**< \brief (GMAC_EFRSL) Register Update */ +/* -------- GMAC_EFRN : (GMAC Offset: 0x1EC) PTP Event Frame Received Nanoseconds Register -------- */ +#define GMAC_EFRN_RUD_Pos 0 +#define GMAC_EFRN_RUD_Msk (0x3fffffffu << GMAC_EFRN_RUD_Pos) /**< \brief (GMAC_EFRN) Register Update */ +/* -------- GMAC_PEFTSL : (GMAC Offset: 0x1F0) PTP Peer Event Frame Transmitted Seconds Low Register -------- */ +#define GMAC_PEFTSL_RUD_Pos 0 +#define GMAC_PEFTSL_RUD_Msk (0xffffffffu << GMAC_PEFTSL_RUD_Pos) /**< \brief (GMAC_PEFTSL) Register Update */ +/* -------- GMAC_PEFTN : (GMAC Offset: 0x1F4) PTP Peer Event Frame Transmitted Nanoseconds Register -------- */ +#define GMAC_PEFTN_RUD_Pos 0 +#define GMAC_PEFTN_RUD_Msk (0x3fffffffu << GMAC_PEFTN_RUD_Pos) /**< \brief (GMAC_PEFTN) Register Update */ +/* -------- GMAC_PEFRSL : (GMAC Offset: 0x1F8) PTP Peer Event Frame Received Seconds Low Register -------- */ +#define GMAC_PEFRSL_RUD_Pos 0 +#define GMAC_PEFRSL_RUD_Msk (0xffffffffu << GMAC_PEFRSL_RUD_Pos) /**< \brief (GMAC_PEFRSL) Register Update */ +/* -------- GMAC_PEFRN : (GMAC Offset: 0x1FC) PTP Peer Event Frame Received Nanoseconds Register -------- */ +#define GMAC_PEFRN_RUD_Pos 0 +#define GMAC_PEFRN_RUD_Msk (0x3fffffffu << GMAC_PEFRN_RUD_Pos) /**< \brief (GMAC_PEFRN) Register Update */ +/* -------- GMAC_RXLPI : (GMAC Offset: 0x270) Received LPI Transitions -------- */ +#define GMAC_RXLPI_COUNT_Pos 0 +#define GMAC_RXLPI_COUNT_Msk (0xffffu << GMAC_RXLPI_COUNT_Pos) /**< \brief (GMAC_RXLPI) Count of RX LPI transitions (cleared on read) */ +/* -------- GMAC_RXLPITIME : (GMAC Offset: 0x274) Received LPI Time -------- */ +#define GMAC_RXLPITIME_LPITIME_Pos 0 +#define GMAC_RXLPITIME_LPITIME_Msk (0xffffffu << GMAC_RXLPITIME_LPITIME_Pos) /**< \brief (GMAC_RXLPITIME) Time in LPI (cleared on read) */ +/* -------- GMAC_TXLPI : (GMAC Offset: 0x278) Transmit LPI Transitions -------- */ +#define GMAC_TXLPI_COUNT_Pos 0 +#define GMAC_TXLPI_COUNT_Msk (0xffffu << GMAC_TXLPI_COUNT_Pos) /**< \brief (GMAC_TXLPI) Count of LPI transitions (cleared on read) */ +/* -------- GMAC_TXLPITIME : (GMAC Offset: 0x27C) Transmit LPI Time -------- */ +#define GMAC_TXLPITIME_LPITIME_Pos 0 +#define GMAC_TXLPITIME_LPITIME_Msk (0xffffffu << GMAC_TXLPITIME_LPITIME_Pos) /**< \brief (GMAC_TXLPITIME) Time in LPI (cleared on read) */ +/* -------- GMAC_ISRPQ[5] : (GMAC Offset: 0x400) Interrupt Status Register Priority Queue (index = 1) -------- */ +#define GMAC_ISRPQ_RCOMP (0x1u << 1) /**< \brief (GMAC_ISRPQ[5]) Receive Complete */ +#define GMAC_ISRPQ_RXUBR (0x1u << 2) /**< \brief (GMAC_ISRPQ[5]) RX Used Bit Read */ +#define GMAC_ISRPQ_RLEX (0x1u << 5) /**< \brief (GMAC_ISRPQ[5]) Retry Limit Exceeded or Late Collision */ +#define GMAC_ISRPQ_TFC (0x1u << 6) /**< \brief (GMAC_ISRPQ[5]) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_ISRPQ_TCOMP (0x1u << 7) /**< \brief (GMAC_ISRPQ[5]) Transmit Complete */ +#define GMAC_ISRPQ_ROVR (0x1u << 10) /**< \brief (GMAC_ISRPQ[5]) Receive Overrun */ +#define GMAC_ISRPQ_HRESP (0x1u << 11) /**< \brief (GMAC_ISRPQ[5]) HRESP Not OK */ +/* -------- GMAC_TBQBAPQ[5] : (GMAC Offset: 0x440) Transmit Buffer Queue Base Address Register Priority Queue (index = 1) -------- */ +#define GMAC_TBQBAPQ_TXBQBA_Pos 2 +#define GMAC_TBQBAPQ_TXBQBA_Msk (0x3fffffffu << GMAC_TBQBAPQ_TXBQBA_Pos) /**< \brief (GMAC_TBQBAPQ[5]) Transmit Buffer Queue Base Address */ +#define GMAC_TBQBAPQ_TXBQBA(value) ((GMAC_TBQBAPQ_TXBQBA_Msk & ((value) << GMAC_TBQBAPQ_TXBQBA_Pos))) +/* -------- GMAC_RBQBAPQ[5] : (GMAC Offset: 0x480) Receive Buffer Queue Base Address Register Priority Queue (index = 1) -------- */ +#define GMAC_RBQBAPQ_RXBQBA_Pos 2 +#define GMAC_RBQBAPQ_RXBQBA_Msk (0x3fffffffu << GMAC_RBQBAPQ_RXBQBA_Pos) /**< \brief (GMAC_RBQBAPQ[5]) Receive Buffer Queue Base Address */ +#define GMAC_RBQBAPQ_RXBQBA(value) ((GMAC_RBQBAPQ_RXBQBA_Msk & ((value) << GMAC_RBQBAPQ_RXBQBA_Pos))) +/* -------- GMAC_RBSRPQ[5] : (GMAC Offset: 0x4A0) Receive Buffer Size Register Priority Queue (index = 1) -------- */ +#define GMAC_RBSRPQ_RBS_Pos 0 +#define GMAC_RBSRPQ_RBS_Msk (0xffffu << GMAC_RBSRPQ_RBS_Pos) /**< \brief (GMAC_RBSRPQ[5]) Receive Buffer Size */ +#define GMAC_RBSRPQ_RBS(value) ((GMAC_RBSRPQ_RBS_Msk & ((value) << GMAC_RBSRPQ_RBS_Pos))) +/* -------- GMAC_CBSCR : (GMAC Offset: 0x4BC) Credit-Based Shaping Control Register -------- */ +#define GMAC_CBSCR_QBE (0x1u << 0) /**< \brief (GMAC_CBSCR) Queue B CBS Enable */ +#define GMAC_CBSCR_QAE (0x1u << 1) /**< \brief (GMAC_CBSCR) Queue A CBS Enable */ +/* -------- GMAC_CBSISQA : (GMAC Offset: 0x4C0) Credit-Based Shaping IdleSlope Register for Queue A -------- */ +#define GMAC_CBSISQA_IS_Pos 0 +#define GMAC_CBSISQA_IS_Msk (0xffffffffu << GMAC_CBSISQA_IS_Pos) /**< \brief (GMAC_CBSISQA) IdleSlope */ +#define GMAC_CBSISQA_IS(value) ((GMAC_CBSISQA_IS_Msk & ((value) << GMAC_CBSISQA_IS_Pos))) +/* -------- GMAC_CBSISQB : (GMAC Offset: 0x4C4) Credit-Based Shaping IdleSlope Register for Queue B -------- */ +#define GMAC_CBSISQB_IS_Pos 0 +#define GMAC_CBSISQB_IS_Msk (0xffffffffu << GMAC_CBSISQB_IS_Pos) /**< \brief (GMAC_CBSISQB) IdleSlope */ +#define GMAC_CBSISQB_IS(value) ((GMAC_CBSISQB_IS_Msk & ((value) << GMAC_CBSISQB_IS_Pos))) +/* -------- GMAC_ST1RPQ[4] : (GMAC Offset: 0x500) Screening Type 1 Register Priority Queue (index = 0) -------- */ +#define GMAC_ST1RPQ_QNB_Pos 0 +#define GMAC_ST1RPQ_QNB_Msk (0x7u << GMAC_ST1RPQ_QNB_Pos) /**< \brief (GMAC_ST1RPQ[4]) Queue Number (0-5) */ +#define GMAC_ST1RPQ_QNB(value) ((GMAC_ST1RPQ_QNB_Msk & ((value) << GMAC_ST1RPQ_QNB_Pos))) +#define GMAC_ST1RPQ_DSTCM_Pos 4 +#define GMAC_ST1RPQ_DSTCM_Msk (0xffu << GMAC_ST1RPQ_DSTCM_Pos) /**< \brief (GMAC_ST1RPQ[4]) Differentiated Services or Traffic Class Match */ +#define GMAC_ST1RPQ_DSTCM(value) ((GMAC_ST1RPQ_DSTCM_Msk & ((value) << GMAC_ST1RPQ_DSTCM_Pos))) +#define GMAC_ST1RPQ_UDPM_Pos 12 +#define GMAC_ST1RPQ_UDPM_Msk (0xffffu << GMAC_ST1RPQ_UDPM_Pos) /**< \brief (GMAC_ST1RPQ[4]) UDP Port Match */ +#define GMAC_ST1RPQ_UDPM(value) ((GMAC_ST1RPQ_UDPM_Msk & ((value) << GMAC_ST1RPQ_UDPM_Pos))) +#define GMAC_ST1RPQ_DSTCE (0x1u << 28) /**< \brief (GMAC_ST1RPQ[4]) Differentiated Services or Traffic Class Match Enable */ +#define GMAC_ST1RPQ_UDPE (0x1u << 29) /**< \brief (GMAC_ST1RPQ[4]) UDP Port Match Enable */ +/* -------- GMAC_ST2RPQ[8] : (GMAC Offset: 0x540) Screening Type 2 Register Priority Queue (index = 0) -------- */ +#define GMAC_ST2RPQ_QNB_Pos 0 +#define GMAC_ST2RPQ_QNB_Msk (0x7u << GMAC_ST2RPQ_QNB_Pos) /**< \brief (GMAC_ST2RPQ[8]) Queue Number (0-5) */ +#define GMAC_ST2RPQ_QNB(value) ((GMAC_ST2RPQ_QNB_Msk & ((value) << GMAC_ST2RPQ_QNB_Pos))) +#define GMAC_ST2RPQ_VLANP_Pos 4 +#define GMAC_ST2RPQ_VLANP_Msk (0x7u << GMAC_ST2RPQ_VLANP_Pos) /**< \brief (GMAC_ST2RPQ[8]) VLAN Priority */ +#define GMAC_ST2RPQ_VLANP(value) ((GMAC_ST2RPQ_VLANP_Msk & ((value) << GMAC_ST2RPQ_VLANP_Pos))) +#define GMAC_ST2RPQ_VLANE (0x1u << 8) /**< \brief (GMAC_ST2RPQ[8]) VLAN Enable */ +#define GMAC_ST2RPQ_I2ETH_Pos 9 +#define GMAC_ST2RPQ_I2ETH_Msk (0x7u << GMAC_ST2RPQ_I2ETH_Pos) /**< \brief (GMAC_ST2RPQ[8]) Index of Screening Type 2 EtherType register x */ +#define GMAC_ST2RPQ_I2ETH(value) ((GMAC_ST2RPQ_I2ETH_Msk & ((value) << GMAC_ST2RPQ_I2ETH_Pos))) +#define GMAC_ST2RPQ_ETHE (0x1u << 12) /**< \brief (GMAC_ST2RPQ[8]) EtherType Enable */ +#define GMAC_ST2RPQ_COMPA_Pos 13 +#define GMAC_ST2RPQ_COMPA_Msk (0x1fu << GMAC_ST2RPQ_COMPA_Pos) /**< \brief (GMAC_ST2RPQ[8]) Index of Screening Type 2 Compare Word 0/Word 1 register x */ +#define GMAC_ST2RPQ_COMPA(value) ((GMAC_ST2RPQ_COMPA_Msk & ((value) << GMAC_ST2RPQ_COMPA_Pos))) +#define GMAC_ST2RPQ_COMPAE (0x1u << 18) /**< \brief (GMAC_ST2RPQ[8]) Compare A Enable */ +#define GMAC_ST2RPQ_COMPB_Pos 19 +#define GMAC_ST2RPQ_COMPB_Msk (0x1fu << GMAC_ST2RPQ_COMPB_Pos) /**< \brief (GMAC_ST2RPQ[8]) Index of Screening Type 2 Compare Word 0/Word 1 register x */ +#define GMAC_ST2RPQ_COMPB(value) ((GMAC_ST2RPQ_COMPB_Msk & ((value) << GMAC_ST2RPQ_COMPB_Pos))) +#define GMAC_ST2RPQ_COMPBE (0x1u << 24) /**< \brief (GMAC_ST2RPQ[8]) Compare B Enable */ +#define GMAC_ST2RPQ_COMPC_Pos 25 +#define GMAC_ST2RPQ_COMPC_Msk (0x1fu << GMAC_ST2RPQ_COMPC_Pos) /**< \brief (GMAC_ST2RPQ[8]) Index of Screening Type 2 Compare Word 0/Word 1 register x */ +#define GMAC_ST2RPQ_COMPC(value) ((GMAC_ST2RPQ_COMPC_Msk & ((value) << GMAC_ST2RPQ_COMPC_Pos))) +#define GMAC_ST2RPQ_COMPCE (0x1u << 30) /**< \brief (GMAC_ST2RPQ[8]) Compare C Enable */ +/* -------- GMAC_IERPQ[5] : (GMAC Offset: 0x5FC) Interrupt Enable Register Priority Queue (index = 1) -------- */ +#define GMAC_IERPQ_RCOMP (0x1u << 1) /**< \brief (GMAC_IERPQ[5]) Receive Complete */ +#define GMAC_IERPQ_RXUBR (0x1u << 2) /**< \brief (GMAC_IERPQ[5]) RX Used Bit Read */ +#define GMAC_IERPQ_RLEX (0x1u << 5) /**< \brief (GMAC_IERPQ[5]) Retry Limit Exceeded or Late Collision */ +#define GMAC_IERPQ_TFC (0x1u << 6) /**< \brief (GMAC_IERPQ[5]) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_IERPQ_TCOMP (0x1u << 7) /**< \brief (GMAC_IERPQ[5]) Transmit Complete */ +#define GMAC_IERPQ_ROVR (0x1u << 10) /**< \brief (GMAC_IERPQ[5]) Receive Overrun */ +#define GMAC_IERPQ_HRESP (0x1u << 11) /**< \brief (GMAC_IERPQ[5]) HRESP Not OK */ +/* -------- GMAC_IDRPQ[5] : (GMAC Offset: 0x61C) Interrupt Disable Register Priority Queue (index = 1) -------- */ +#define GMAC_IDRPQ_RCOMP (0x1u << 1) /**< \brief (GMAC_IDRPQ[5]) Receive Complete */ +#define GMAC_IDRPQ_RXUBR (0x1u << 2) /**< \brief (GMAC_IDRPQ[5]) RX Used Bit Read */ +#define GMAC_IDRPQ_RLEX (0x1u << 5) /**< \brief (GMAC_IDRPQ[5]) Retry Limit Exceeded or Late Collision */ +#define GMAC_IDRPQ_TFC (0x1u << 6) /**< \brief (GMAC_IDRPQ[5]) Transmit Frame Corruption Due to AHB Error */ +#define GMAC_IDRPQ_TCOMP (0x1u << 7) /**< \brief (GMAC_IDRPQ[5]) Transmit Complete */ +#define GMAC_IDRPQ_ROVR (0x1u << 10) /**< \brief (GMAC_IDRPQ[5]) Receive Overrun */ +#define GMAC_IDRPQ_HRESP (0x1u << 11) /**< \brief (GMAC_IDRPQ[5]) HRESP Not OK */ +/* -------- GMAC_IMRPQ[5] : (GMAC Offset: 0x63C) Interrupt Mask Register Priority Queue (index = 1) -------- */ +#define GMAC_IMRPQ_RCOMP (0x1u << 1) /**< \brief (GMAC_IMRPQ[5]) Receive Complete */ +#define GMAC_IMRPQ_RXUBR (0x1u << 2) /**< \brief (GMAC_IMRPQ[5]) RX Used Bit Read */ +#define GMAC_IMRPQ_RLEX (0x1u << 5) /**< \brief (GMAC_IMRPQ[5]) Retry Limit Exceeded or Late Collision */ +#define GMAC_IMRPQ_AHB (0x1u << 6) /**< \brief (GMAC_IMRPQ[5]) AHB Error */ +#define GMAC_IMRPQ_TCOMP (0x1u << 7) /**< \brief (GMAC_IMRPQ[5]) Transmit Complete */ +#define GMAC_IMRPQ_ROVR (0x1u << 10) /**< \brief (GMAC_IMRPQ[5]) Receive Overrun */ +#define GMAC_IMRPQ_HRESP (0x1u << 11) /**< \brief (GMAC_IMRPQ[5]) HRESP Not OK */ +/* -------- GMAC_ST2ER[4] : (GMAC Offset: 0x6E0) Screening Type 2 Ethertype Register (index = 0) -------- */ +#define GMAC_ST2ER_COMPVAL_Pos 0 +#define GMAC_ST2ER_COMPVAL_Msk (0xffffu << GMAC_ST2ER_COMPVAL_Pos) /**< \brief (GMAC_ST2ER[4]) Ethertype Compare Value */ +#define GMAC_ST2ER_COMPVAL(value) ((GMAC_ST2ER_COMPVAL_Msk & ((value) << GMAC_ST2ER_COMPVAL_Pos))) +/* -------- GMAC_ST2CW00 : (GMAC Offset: 0x700) Screening Type 2 Compare Word 0 Register (index = 0) -------- */ +#define GMAC_ST2CW00_MASKVAL_Pos 0 +#define GMAC_ST2CW00_MASKVAL_Msk (0xffffu << GMAC_ST2CW00_MASKVAL_Pos) /**< \brief (GMAC_ST2CW00) Mask Value */ +#define GMAC_ST2CW00_MASKVAL(value) ((GMAC_ST2CW00_MASKVAL_Msk & ((value) << GMAC_ST2CW00_MASKVAL_Pos))) +#define GMAC_ST2CW00_COMPVAL_Pos 16 +#define GMAC_ST2CW00_COMPVAL_Msk (0xffffu << GMAC_ST2CW00_COMPVAL_Pos) /**< \brief (GMAC_ST2CW00) Compare Value */ +#define GMAC_ST2CW00_COMPVAL(value) ((GMAC_ST2CW00_COMPVAL_Msk & ((value) << GMAC_ST2CW00_COMPVAL_Pos))) +/* -------- GMAC_ST2CW10 : (GMAC Offset: 0x704) Screening Type 2 Compare Word 1 Register (index = 0) -------- */ +#define GMAC_ST2CW10_OFFSVAL_Pos 0 +#define GMAC_ST2CW10_OFFSVAL_Msk (0x7fu << GMAC_ST2CW10_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW10) Offset Value in Bytes */ +#define GMAC_ST2CW10_OFFSVAL(value) ((GMAC_ST2CW10_OFFSVAL_Msk & ((value) << GMAC_ST2CW10_OFFSVAL_Pos))) +#define GMAC_ST2CW10_OFFSSTRT_Pos 7 +#define GMAC_ST2CW10_OFFSSTRT_Msk (0x3u << GMAC_ST2CW10_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW10) Ethernet Frame Offset Start */ +#define GMAC_ST2CW10_OFFSSTRT(value) ((GMAC_ST2CW10_OFFSSTRT_Msk & ((value) << GMAC_ST2CW10_OFFSSTRT_Pos))) +#define GMAC_ST2CW10_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW10) Offset from the start of the frame */ +#define GMAC_ST2CW10_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW10) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW10_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW10) Offset from the byte after the IP header field */ +#define GMAC_ST2CW10_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW10) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW01 : (GMAC Offset: 0x708) Screening Type 2 Compare Word 0 Register (index = 1) -------- */ +#define GMAC_ST2CW01_MASKVAL_Pos 0 +#define GMAC_ST2CW01_MASKVAL_Msk (0xffffu << GMAC_ST2CW01_MASKVAL_Pos) /**< \brief (GMAC_ST2CW01) Mask Value */ +#define GMAC_ST2CW01_MASKVAL(value) ((GMAC_ST2CW01_MASKVAL_Msk & ((value) << GMAC_ST2CW01_MASKVAL_Pos))) +#define GMAC_ST2CW01_COMPVAL_Pos 16 +#define GMAC_ST2CW01_COMPVAL_Msk (0xffffu << GMAC_ST2CW01_COMPVAL_Pos) /**< \brief (GMAC_ST2CW01) Compare Value */ +#define GMAC_ST2CW01_COMPVAL(value) ((GMAC_ST2CW01_COMPVAL_Msk & ((value) << GMAC_ST2CW01_COMPVAL_Pos))) +/* -------- GMAC_ST2CW11 : (GMAC Offset: 0x70C) Screening Type 2 Compare Word 1 Register (index = 1) -------- */ +#define GMAC_ST2CW11_OFFSVAL_Pos 0 +#define GMAC_ST2CW11_OFFSVAL_Msk (0x7fu << GMAC_ST2CW11_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW11) Offset Value in Bytes */ +#define GMAC_ST2CW11_OFFSVAL(value) ((GMAC_ST2CW11_OFFSVAL_Msk & ((value) << GMAC_ST2CW11_OFFSVAL_Pos))) +#define GMAC_ST2CW11_OFFSSTRT_Pos 7 +#define GMAC_ST2CW11_OFFSSTRT_Msk (0x3u << GMAC_ST2CW11_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW11) Ethernet Frame Offset Start */ +#define GMAC_ST2CW11_OFFSSTRT(value) ((GMAC_ST2CW11_OFFSSTRT_Msk & ((value) << GMAC_ST2CW11_OFFSSTRT_Pos))) +#define GMAC_ST2CW11_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW11) Offset from the start of the frame */ +#define GMAC_ST2CW11_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW11) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW11_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW11) Offset from the byte after the IP header field */ +#define GMAC_ST2CW11_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW11) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW02 : (GMAC Offset: 0x710) Screening Type 2 Compare Word 0 Register (index = 2) -------- */ +#define GMAC_ST2CW02_MASKVAL_Pos 0 +#define GMAC_ST2CW02_MASKVAL_Msk (0xffffu << GMAC_ST2CW02_MASKVAL_Pos) /**< \brief (GMAC_ST2CW02) Mask Value */ +#define GMAC_ST2CW02_MASKVAL(value) ((GMAC_ST2CW02_MASKVAL_Msk & ((value) << GMAC_ST2CW02_MASKVAL_Pos))) +#define GMAC_ST2CW02_COMPVAL_Pos 16 +#define GMAC_ST2CW02_COMPVAL_Msk (0xffffu << GMAC_ST2CW02_COMPVAL_Pos) /**< \brief (GMAC_ST2CW02) Compare Value */ +#define GMAC_ST2CW02_COMPVAL(value) ((GMAC_ST2CW02_COMPVAL_Msk & ((value) << GMAC_ST2CW02_COMPVAL_Pos))) +/* -------- GMAC_ST2CW12 : (GMAC Offset: 0x714) Screening Type 2 Compare Word 1 Register (index = 2) -------- */ +#define GMAC_ST2CW12_OFFSVAL_Pos 0 +#define GMAC_ST2CW12_OFFSVAL_Msk (0x7fu << GMAC_ST2CW12_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW12) Offset Value in Bytes */ +#define GMAC_ST2CW12_OFFSVAL(value) ((GMAC_ST2CW12_OFFSVAL_Msk & ((value) << GMAC_ST2CW12_OFFSVAL_Pos))) +#define GMAC_ST2CW12_OFFSSTRT_Pos 7 +#define GMAC_ST2CW12_OFFSSTRT_Msk (0x3u << GMAC_ST2CW12_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW12) Ethernet Frame Offset Start */ +#define GMAC_ST2CW12_OFFSSTRT(value) ((GMAC_ST2CW12_OFFSSTRT_Msk & ((value) << GMAC_ST2CW12_OFFSSTRT_Pos))) +#define GMAC_ST2CW12_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW12) Offset from the start of the frame */ +#define GMAC_ST2CW12_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW12) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW12_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW12) Offset from the byte after the IP header field */ +#define GMAC_ST2CW12_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW12) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW03 : (GMAC Offset: 0x718) Screening Type 2 Compare Word 0 Register (index = 3) -------- */ +#define GMAC_ST2CW03_MASKVAL_Pos 0 +#define GMAC_ST2CW03_MASKVAL_Msk (0xffffu << GMAC_ST2CW03_MASKVAL_Pos) /**< \brief (GMAC_ST2CW03) Mask Value */ +#define GMAC_ST2CW03_MASKVAL(value) ((GMAC_ST2CW03_MASKVAL_Msk & ((value) << GMAC_ST2CW03_MASKVAL_Pos))) +#define GMAC_ST2CW03_COMPVAL_Pos 16 +#define GMAC_ST2CW03_COMPVAL_Msk (0xffffu << GMAC_ST2CW03_COMPVAL_Pos) /**< \brief (GMAC_ST2CW03) Compare Value */ +#define GMAC_ST2CW03_COMPVAL(value) ((GMAC_ST2CW03_COMPVAL_Msk & ((value) << GMAC_ST2CW03_COMPVAL_Pos))) +/* -------- GMAC_ST2CW13 : (GMAC Offset: 0x71C) Screening Type 2 Compare Word 1 Register (index = 3) -------- */ +#define GMAC_ST2CW13_OFFSVAL_Pos 0 +#define GMAC_ST2CW13_OFFSVAL_Msk (0x7fu << GMAC_ST2CW13_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW13) Offset Value in Bytes */ +#define GMAC_ST2CW13_OFFSVAL(value) ((GMAC_ST2CW13_OFFSVAL_Msk & ((value) << GMAC_ST2CW13_OFFSVAL_Pos))) +#define GMAC_ST2CW13_OFFSSTRT_Pos 7 +#define GMAC_ST2CW13_OFFSSTRT_Msk (0x3u << GMAC_ST2CW13_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW13) Ethernet Frame Offset Start */ +#define GMAC_ST2CW13_OFFSSTRT(value) ((GMAC_ST2CW13_OFFSSTRT_Msk & ((value) << GMAC_ST2CW13_OFFSSTRT_Pos))) +#define GMAC_ST2CW13_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW13) Offset from the start of the frame */ +#define GMAC_ST2CW13_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW13) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW13_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW13) Offset from the byte after the IP header field */ +#define GMAC_ST2CW13_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW13) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW04 : (GMAC Offset: 0x720) Screening Type 2 Compare Word 0 Register (index = 4) -------- */ +#define GMAC_ST2CW04_MASKVAL_Pos 0 +#define GMAC_ST2CW04_MASKVAL_Msk (0xffffu << GMAC_ST2CW04_MASKVAL_Pos) /**< \brief (GMAC_ST2CW04) Mask Value */ +#define GMAC_ST2CW04_MASKVAL(value) ((GMAC_ST2CW04_MASKVAL_Msk & ((value) << GMAC_ST2CW04_MASKVAL_Pos))) +#define GMAC_ST2CW04_COMPVAL_Pos 16 +#define GMAC_ST2CW04_COMPVAL_Msk (0xffffu << GMAC_ST2CW04_COMPVAL_Pos) /**< \brief (GMAC_ST2CW04) Compare Value */ +#define GMAC_ST2CW04_COMPVAL(value) ((GMAC_ST2CW04_COMPVAL_Msk & ((value) << GMAC_ST2CW04_COMPVAL_Pos))) +/* -------- GMAC_ST2CW14 : (GMAC Offset: 0x724) Screening Type 2 Compare Word 1 Register (index = 4) -------- */ +#define GMAC_ST2CW14_OFFSVAL_Pos 0 +#define GMAC_ST2CW14_OFFSVAL_Msk (0x7fu << GMAC_ST2CW14_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW14) Offset Value in Bytes */ +#define GMAC_ST2CW14_OFFSVAL(value) ((GMAC_ST2CW14_OFFSVAL_Msk & ((value) << GMAC_ST2CW14_OFFSVAL_Pos))) +#define GMAC_ST2CW14_OFFSSTRT_Pos 7 +#define GMAC_ST2CW14_OFFSSTRT_Msk (0x3u << GMAC_ST2CW14_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW14) Ethernet Frame Offset Start */ +#define GMAC_ST2CW14_OFFSSTRT(value) ((GMAC_ST2CW14_OFFSSTRT_Msk & ((value) << GMAC_ST2CW14_OFFSSTRT_Pos))) +#define GMAC_ST2CW14_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW14) Offset from the start of the frame */ +#define GMAC_ST2CW14_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW14) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW14_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW14) Offset from the byte after the IP header field */ +#define GMAC_ST2CW14_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW14) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW05 : (GMAC Offset: 0x728) Screening Type 2 Compare Word 0 Register (index = 5) -------- */ +#define GMAC_ST2CW05_MASKVAL_Pos 0 +#define GMAC_ST2CW05_MASKVAL_Msk (0xffffu << GMAC_ST2CW05_MASKVAL_Pos) /**< \brief (GMAC_ST2CW05) Mask Value */ +#define GMAC_ST2CW05_MASKVAL(value) ((GMAC_ST2CW05_MASKVAL_Msk & ((value) << GMAC_ST2CW05_MASKVAL_Pos))) +#define GMAC_ST2CW05_COMPVAL_Pos 16 +#define GMAC_ST2CW05_COMPVAL_Msk (0xffffu << GMAC_ST2CW05_COMPVAL_Pos) /**< \brief (GMAC_ST2CW05) Compare Value */ +#define GMAC_ST2CW05_COMPVAL(value) ((GMAC_ST2CW05_COMPVAL_Msk & ((value) << GMAC_ST2CW05_COMPVAL_Pos))) +/* -------- GMAC_ST2CW15 : (GMAC Offset: 0x72C) Screening Type 2 Compare Word 1 Register (index = 5) -------- */ +#define GMAC_ST2CW15_OFFSVAL_Pos 0 +#define GMAC_ST2CW15_OFFSVAL_Msk (0x7fu << GMAC_ST2CW15_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW15) Offset Value in Bytes */ +#define GMAC_ST2CW15_OFFSVAL(value) ((GMAC_ST2CW15_OFFSVAL_Msk & ((value) << GMAC_ST2CW15_OFFSVAL_Pos))) +#define GMAC_ST2CW15_OFFSSTRT_Pos 7 +#define GMAC_ST2CW15_OFFSSTRT_Msk (0x3u << GMAC_ST2CW15_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW15) Ethernet Frame Offset Start */ +#define GMAC_ST2CW15_OFFSSTRT(value) ((GMAC_ST2CW15_OFFSSTRT_Msk & ((value) << GMAC_ST2CW15_OFFSSTRT_Pos))) +#define GMAC_ST2CW15_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW15) Offset from the start of the frame */ +#define GMAC_ST2CW15_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW15) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW15_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW15) Offset from the byte after the IP header field */ +#define GMAC_ST2CW15_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW15) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW06 : (GMAC Offset: 0x730) Screening Type 2 Compare Word 0 Register (index = 6) -------- */ +#define GMAC_ST2CW06_MASKVAL_Pos 0 +#define GMAC_ST2CW06_MASKVAL_Msk (0xffffu << GMAC_ST2CW06_MASKVAL_Pos) /**< \brief (GMAC_ST2CW06) Mask Value */ +#define GMAC_ST2CW06_MASKVAL(value) ((GMAC_ST2CW06_MASKVAL_Msk & ((value) << GMAC_ST2CW06_MASKVAL_Pos))) +#define GMAC_ST2CW06_COMPVAL_Pos 16 +#define GMAC_ST2CW06_COMPVAL_Msk (0xffffu << GMAC_ST2CW06_COMPVAL_Pos) /**< \brief (GMAC_ST2CW06) Compare Value */ +#define GMAC_ST2CW06_COMPVAL(value) ((GMAC_ST2CW06_COMPVAL_Msk & ((value) << GMAC_ST2CW06_COMPVAL_Pos))) +/* -------- GMAC_ST2CW16 : (GMAC Offset: 0x734) Screening Type 2 Compare Word 1 Register (index = 6) -------- */ +#define GMAC_ST2CW16_OFFSVAL_Pos 0 +#define GMAC_ST2CW16_OFFSVAL_Msk (0x7fu << GMAC_ST2CW16_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW16) Offset Value in Bytes */ +#define GMAC_ST2CW16_OFFSVAL(value) ((GMAC_ST2CW16_OFFSVAL_Msk & ((value) << GMAC_ST2CW16_OFFSVAL_Pos))) +#define GMAC_ST2CW16_OFFSSTRT_Pos 7 +#define GMAC_ST2CW16_OFFSSTRT_Msk (0x3u << GMAC_ST2CW16_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW16) Ethernet Frame Offset Start */ +#define GMAC_ST2CW16_OFFSSTRT(value) ((GMAC_ST2CW16_OFFSSTRT_Msk & ((value) << GMAC_ST2CW16_OFFSSTRT_Pos))) +#define GMAC_ST2CW16_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW16) Offset from the start of the frame */ +#define GMAC_ST2CW16_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW16) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW16_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW16) Offset from the byte after the IP header field */ +#define GMAC_ST2CW16_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW16) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW07 : (GMAC Offset: 0x738) Screening Type 2 Compare Word 0 Register (index = 7) -------- */ +#define GMAC_ST2CW07_MASKVAL_Pos 0 +#define GMAC_ST2CW07_MASKVAL_Msk (0xffffu << GMAC_ST2CW07_MASKVAL_Pos) /**< \brief (GMAC_ST2CW07) Mask Value */ +#define GMAC_ST2CW07_MASKVAL(value) ((GMAC_ST2CW07_MASKVAL_Msk & ((value) << GMAC_ST2CW07_MASKVAL_Pos))) +#define GMAC_ST2CW07_COMPVAL_Pos 16 +#define GMAC_ST2CW07_COMPVAL_Msk (0xffffu << GMAC_ST2CW07_COMPVAL_Pos) /**< \brief (GMAC_ST2CW07) Compare Value */ +#define GMAC_ST2CW07_COMPVAL(value) ((GMAC_ST2CW07_COMPVAL_Msk & ((value) << GMAC_ST2CW07_COMPVAL_Pos))) +/* -------- GMAC_ST2CW17 : (GMAC Offset: 0x73C) Screening Type 2 Compare Word 1 Register (index = 7) -------- */ +#define GMAC_ST2CW17_OFFSVAL_Pos 0 +#define GMAC_ST2CW17_OFFSVAL_Msk (0x7fu << GMAC_ST2CW17_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW17) Offset Value in Bytes */ +#define GMAC_ST2CW17_OFFSVAL(value) ((GMAC_ST2CW17_OFFSVAL_Msk & ((value) << GMAC_ST2CW17_OFFSVAL_Pos))) +#define GMAC_ST2CW17_OFFSSTRT_Pos 7 +#define GMAC_ST2CW17_OFFSSTRT_Msk (0x3u << GMAC_ST2CW17_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW17) Ethernet Frame Offset Start */ +#define GMAC_ST2CW17_OFFSSTRT(value) ((GMAC_ST2CW17_OFFSSTRT_Msk & ((value) << GMAC_ST2CW17_OFFSSTRT_Pos))) +#define GMAC_ST2CW17_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW17) Offset from the start of the frame */ +#define GMAC_ST2CW17_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW17) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW17_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW17) Offset from the byte after the IP header field */ +#define GMAC_ST2CW17_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW17) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW08 : (GMAC Offset: 0x740) Screening Type 2 Compare Word 0 Register (index = 8) -------- */ +#define GMAC_ST2CW08_MASKVAL_Pos 0 +#define GMAC_ST2CW08_MASKVAL_Msk (0xffffu << GMAC_ST2CW08_MASKVAL_Pos) /**< \brief (GMAC_ST2CW08) Mask Value */ +#define GMAC_ST2CW08_MASKVAL(value) ((GMAC_ST2CW08_MASKVAL_Msk & ((value) << GMAC_ST2CW08_MASKVAL_Pos))) +#define GMAC_ST2CW08_COMPVAL_Pos 16 +#define GMAC_ST2CW08_COMPVAL_Msk (0xffffu << GMAC_ST2CW08_COMPVAL_Pos) /**< \brief (GMAC_ST2CW08) Compare Value */ +#define GMAC_ST2CW08_COMPVAL(value) ((GMAC_ST2CW08_COMPVAL_Msk & ((value) << GMAC_ST2CW08_COMPVAL_Pos))) +/* -------- GMAC_ST2CW18 : (GMAC Offset: 0x744) Screening Type 2 Compare Word 1 Register (index = 8) -------- */ +#define GMAC_ST2CW18_OFFSVAL_Pos 0 +#define GMAC_ST2CW18_OFFSVAL_Msk (0x7fu << GMAC_ST2CW18_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW18) Offset Value in Bytes */ +#define GMAC_ST2CW18_OFFSVAL(value) ((GMAC_ST2CW18_OFFSVAL_Msk & ((value) << GMAC_ST2CW18_OFFSVAL_Pos))) +#define GMAC_ST2CW18_OFFSSTRT_Pos 7 +#define GMAC_ST2CW18_OFFSSTRT_Msk (0x3u << GMAC_ST2CW18_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW18) Ethernet Frame Offset Start */ +#define GMAC_ST2CW18_OFFSSTRT(value) ((GMAC_ST2CW18_OFFSSTRT_Msk & ((value) << GMAC_ST2CW18_OFFSSTRT_Pos))) +#define GMAC_ST2CW18_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW18) Offset from the start of the frame */ +#define GMAC_ST2CW18_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW18) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW18_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW18) Offset from the byte after the IP header field */ +#define GMAC_ST2CW18_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW18) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW09 : (GMAC Offset: 0x748) Screening Type 2 Compare Word 0 Register (index = 9) -------- */ +#define GMAC_ST2CW09_MASKVAL_Pos 0 +#define GMAC_ST2CW09_MASKVAL_Msk (0xffffu << GMAC_ST2CW09_MASKVAL_Pos) /**< \brief (GMAC_ST2CW09) Mask Value */ +#define GMAC_ST2CW09_MASKVAL(value) ((GMAC_ST2CW09_MASKVAL_Msk & ((value) << GMAC_ST2CW09_MASKVAL_Pos))) +#define GMAC_ST2CW09_COMPVAL_Pos 16 +#define GMAC_ST2CW09_COMPVAL_Msk (0xffffu << GMAC_ST2CW09_COMPVAL_Pos) /**< \brief (GMAC_ST2CW09) Compare Value */ +#define GMAC_ST2CW09_COMPVAL(value) ((GMAC_ST2CW09_COMPVAL_Msk & ((value) << GMAC_ST2CW09_COMPVAL_Pos))) +/* -------- GMAC_ST2CW19 : (GMAC Offset: 0x74C) Screening Type 2 Compare Word 1 Register (index = 9) -------- */ +#define GMAC_ST2CW19_OFFSVAL_Pos 0 +#define GMAC_ST2CW19_OFFSVAL_Msk (0x7fu << GMAC_ST2CW19_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW19) Offset Value in Bytes */ +#define GMAC_ST2CW19_OFFSVAL(value) ((GMAC_ST2CW19_OFFSVAL_Msk & ((value) << GMAC_ST2CW19_OFFSVAL_Pos))) +#define GMAC_ST2CW19_OFFSSTRT_Pos 7 +#define GMAC_ST2CW19_OFFSSTRT_Msk (0x3u << GMAC_ST2CW19_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW19) Ethernet Frame Offset Start */ +#define GMAC_ST2CW19_OFFSSTRT(value) ((GMAC_ST2CW19_OFFSSTRT_Msk & ((value) << GMAC_ST2CW19_OFFSSTRT_Pos))) +#define GMAC_ST2CW19_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW19) Offset from the start of the frame */ +#define GMAC_ST2CW19_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW19) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW19_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW19) Offset from the byte after the IP header field */ +#define GMAC_ST2CW19_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW19) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW010 : (GMAC Offset: 0x750) Screening Type 2 Compare Word 0 Register (index = 10) -------- */ +#define GMAC_ST2CW010_MASKVAL_Pos 0 +#define GMAC_ST2CW010_MASKVAL_Msk (0xffffu << GMAC_ST2CW010_MASKVAL_Pos) /**< \brief (GMAC_ST2CW010) Mask Value */ +#define GMAC_ST2CW010_MASKVAL(value) ((GMAC_ST2CW010_MASKVAL_Msk & ((value) << GMAC_ST2CW010_MASKVAL_Pos))) +#define GMAC_ST2CW010_COMPVAL_Pos 16 +#define GMAC_ST2CW010_COMPVAL_Msk (0xffffu << GMAC_ST2CW010_COMPVAL_Pos) /**< \brief (GMAC_ST2CW010) Compare Value */ +#define GMAC_ST2CW010_COMPVAL(value) ((GMAC_ST2CW010_COMPVAL_Msk & ((value) << GMAC_ST2CW010_COMPVAL_Pos))) +/* -------- GMAC_ST2CW110 : (GMAC Offset: 0x754) Screening Type 2 Compare Word 1 Register (index = 10) -------- */ +#define GMAC_ST2CW110_OFFSVAL_Pos 0 +#define GMAC_ST2CW110_OFFSVAL_Msk (0x7fu << GMAC_ST2CW110_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW110) Offset Value in Bytes */ +#define GMAC_ST2CW110_OFFSVAL(value) ((GMAC_ST2CW110_OFFSVAL_Msk & ((value) << GMAC_ST2CW110_OFFSVAL_Pos))) +#define GMAC_ST2CW110_OFFSSTRT_Pos 7 +#define GMAC_ST2CW110_OFFSSTRT_Msk (0x3u << GMAC_ST2CW110_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW110) Ethernet Frame Offset Start */ +#define GMAC_ST2CW110_OFFSSTRT(value) ((GMAC_ST2CW110_OFFSSTRT_Msk & ((value) << GMAC_ST2CW110_OFFSSTRT_Pos))) +#define GMAC_ST2CW110_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW110) Offset from the start of the frame */ +#define GMAC_ST2CW110_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW110) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW110_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW110) Offset from the byte after the IP header field */ +#define GMAC_ST2CW110_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW110) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW011 : (GMAC Offset: 0x758) Screening Type 2 Compare Word 0 Register (index = 11) -------- */ +#define GMAC_ST2CW011_MASKVAL_Pos 0 +#define GMAC_ST2CW011_MASKVAL_Msk (0xffffu << GMAC_ST2CW011_MASKVAL_Pos) /**< \brief (GMAC_ST2CW011) Mask Value */ +#define GMAC_ST2CW011_MASKVAL(value) ((GMAC_ST2CW011_MASKVAL_Msk & ((value) << GMAC_ST2CW011_MASKVAL_Pos))) +#define GMAC_ST2CW011_COMPVAL_Pos 16 +#define GMAC_ST2CW011_COMPVAL_Msk (0xffffu << GMAC_ST2CW011_COMPVAL_Pos) /**< \brief (GMAC_ST2CW011) Compare Value */ +#define GMAC_ST2CW011_COMPVAL(value) ((GMAC_ST2CW011_COMPVAL_Msk & ((value) << GMAC_ST2CW011_COMPVAL_Pos))) +/* -------- GMAC_ST2CW111 : (GMAC Offset: 0x75C) Screening Type 2 Compare Word 1 Register (index = 11) -------- */ +#define GMAC_ST2CW111_OFFSVAL_Pos 0 +#define GMAC_ST2CW111_OFFSVAL_Msk (0x7fu << GMAC_ST2CW111_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW111) Offset Value in Bytes */ +#define GMAC_ST2CW111_OFFSVAL(value) ((GMAC_ST2CW111_OFFSVAL_Msk & ((value) << GMAC_ST2CW111_OFFSVAL_Pos))) +#define GMAC_ST2CW111_OFFSSTRT_Pos 7 +#define GMAC_ST2CW111_OFFSSTRT_Msk (0x3u << GMAC_ST2CW111_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW111) Ethernet Frame Offset Start */ +#define GMAC_ST2CW111_OFFSSTRT(value) ((GMAC_ST2CW111_OFFSSTRT_Msk & ((value) << GMAC_ST2CW111_OFFSSTRT_Pos))) +#define GMAC_ST2CW111_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW111) Offset from the start of the frame */ +#define GMAC_ST2CW111_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW111) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW111_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW111) Offset from the byte after the IP header field */ +#define GMAC_ST2CW111_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW111) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW012 : (GMAC Offset: 0x760) Screening Type 2 Compare Word 0 Register (index = 12) -------- */ +#define GMAC_ST2CW012_MASKVAL_Pos 0 +#define GMAC_ST2CW012_MASKVAL_Msk (0xffffu << GMAC_ST2CW012_MASKVAL_Pos) /**< \brief (GMAC_ST2CW012) Mask Value */ +#define GMAC_ST2CW012_MASKVAL(value) ((GMAC_ST2CW012_MASKVAL_Msk & ((value) << GMAC_ST2CW012_MASKVAL_Pos))) +#define GMAC_ST2CW012_COMPVAL_Pos 16 +#define GMAC_ST2CW012_COMPVAL_Msk (0xffffu << GMAC_ST2CW012_COMPVAL_Pos) /**< \brief (GMAC_ST2CW012) Compare Value */ +#define GMAC_ST2CW012_COMPVAL(value) ((GMAC_ST2CW012_COMPVAL_Msk & ((value) << GMAC_ST2CW012_COMPVAL_Pos))) +/* -------- GMAC_ST2CW112 : (GMAC Offset: 0x764) Screening Type 2 Compare Word 1 Register (index = 12) -------- */ +#define GMAC_ST2CW112_OFFSVAL_Pos 0 +#define GMAC_ST2CW112_OFFSVAL_Msk (0x7fu << GMAC_ST2CW112_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW112) Offset Value in Bytes */ +#define GMAC_ST2CW112_OFFSVAL(value) ((GMAC_ST2CW112_OFFSVAL_Msk & ((value) << GMAC_ST2CW112_OFFSVAL_Pos))) +#define GMAC_ST2CW112_OFFSSTRT_Pos 7 +#define GMAC_ST2CW112_OFFSSTRT_Msk (0x3u << GMAC_ST2CW112_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW112) Ethernet Frame Offset Start */ +#define GMAC_ST2CW112_OFFSSTRT(value) ((GMAC_ST2CW112_OFFSSTRT_Msk & ((value) << GMAC_ST2CW112_OFFSSTRT_Pos))) +#define GMAC_ST2CW112_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW112) Offset from the start of the frame */ +#define GMAC_ST2CW112_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW112) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW112_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW112) Offset from the byte after the IP header field */ +#define GMAC_ST2CW112_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW112) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW013 : (GMAC Offset: 0x768) Screening Type 2 Compare Word 0 Register (index = 13) -------- */ +#define GMAC_ST2CW013_MASKVAL_Pos 0 +#define GMAC_ST2CW013_MASKVAL_Msk (0xffffu << GMAC_ST2CW013_MASKVAL_Pos) /**< \brief (GMAC_ST2CW013) Mask Value */ +#define GMAC_ST2CW013_MASKVAL(value) ((GMAC_ST2CW013_MASKVAL_Msk & ((value) << GMAC_ST2CW013_MASKVAL_Pos))) +#define GMAC_ST2CW013_COMPVAL_Pos 16 +#define GMAC_ST2CW013_COMPVAL_Msk (0xffffu << GMAC_ST2CW013_COMPVAL_Pos) /**< \brief (GMAC_ST2CW013) Compare Value */ +#define GMAC_ST2CW013_COMPVAL(value) ((GMAC_ST2CW013_COMPVAL_Msk & ((value) << GMAC_ST2CW013_COMPVAL_Pos))) +/* -------- GMAC_ST2CW113 : (GMAC Offset: 0x76C) Screening Type 2 Compare Word 1 Register (index = 13) -------- */ +#define GMAC_ST2CW113_OFFSVAL_Pos 0 +#define GMAC_ST2CW113_OFFSVAL_Msk (0x7fu << GMAC_ST2CW113_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW113) Offset Value in Bytes */ +#define GMAC_ST2CW113_OFFSVAL(value) ((GMAC_ST2CW113_OFFSVAL_Msk & ((value) << GMAC_ST2CW113_OFFSVAL_Pos))) +#define GMAC_ST2CW113_OFFSSTRT_Pos 7 +#define GMAC_ST2CW113_OFFSSTRT_Msk (0x3u << GMAC_ST2CW113_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW113) Ethernet Frame Offset Start */ +#define GMAC_ST2CW113_OFFSSTRT(value) ((GMAC_ST2CW113_OFFSSTRT_Msk & ((value) << GMAC_ST2CW113_OFFSSTRT_Pos))) +#define GMAC_ST2CW113_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW113) Offset from the start of the frame */ +#define GMAC_ST2CW113_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW113) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW113_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW113) Offset from the byte after the IP header field */ +#define GMAC_ST2CW113_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW113) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW014 : (GMAC Offset: 0x770) Screening Type 2 Compare Word 0 Register (index = 14) -------- */ +#define GMAC_ST2CW014_MASKVAL_Pos 0 +#define GMAC_ST2CW014_MASKVAL_Msk (0xffffu << GMAC_ST2CW014_MASKVAL_Pos) /**< \brief (GMAC_ST2CW014) Mask Value */ +#define GMAC_ST2CW014_MASKVAL(value) ((GMAC_ST2CW014_MASKVAL_Msk & ((value) << GMAC_ST2CW014_MASKVAL_Pos))) +#define GMAC_ST2CW014_COMPVAL_Pos 16 +#define GMAC_ST2CW014_COMPVAL_Msk (0xffffu << GMAC_ST2CW014_COMPVAL_Pos) /**< \brief (GMAC_ST2CW014) Compare Value */ +#define GMAC_ST2CW014_COMPVAL(value) ((GMAC_ST2CW014_COMPVAL_Msk & ((value) << GMAC_ST2CW014_COMPVAL_Pos))) +/* -------- GMAC_ST2CW114 : (GMAC Offset: 0x774) Screening Type 2 Compare Word 1 Register (index = 14) -------- */ +#define GMAC_ST2CW114_OFFSVAL_Pos 0 +#define GMAC_ST2CW114_OFFSVAL_Msk (0x7fu << GMAC_ST2CW114_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW114) Offset Value in Bytes */ +#define GMAC_ST2CW114_OFFSVAL(value) ((GMAC_ST2CW114_OFFSVAL_Msk & ((value) << GMAC_ST2CW114_OFFSVAL_Pos))) +#define GMAC_ST2CW114_OFFSSTRT_Pos 7 +#define GMAC_ST2CW114_OFFSSTRT_Msk (0x3u << GMAC_ST2CW114_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW114) Ethernet Frame Offset Start */ +#define GMAC_ST2CW114_OFFSSTRT(value) ((GMAC_ST2CW114_OFFSSTRT_Msk & ((value) << GMAC_ST2CW114_OFFSSTRT_Pos))) +#define GMAC_ST2CW114_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW114) Offset from the start of the frame */ +#define GMAC_ST2CW114_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW114) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW114_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW114) Offset from the byte after the IP header field */ +#define GMAC_ST2CW114_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW114) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW015 : (GMAC Offset: 0x778) Screening Type 2 Compare Word 0 Register (index = 15) -------- */ +#define GMAC_ST2CW015_MASKVAL_Pos 0 +#define GMAC_ST2CW015_MASKVAL_Msk (0xffffu << GMAC_ST2CW015_MASKVAL_Pos) /**< \brief (GMAC_ST2CW015) Mask Value */ +#define GMAC_ST2CW015_MASKVAL(value) ((GMAC_ST2CW015_MASKVAL_Msk & ((value) << GMAC_ST2CW015_MASKVAL_Pos))) +#define GMAC_ST2CW015_COMPVAL_Pos 16 +#define GMAC_ST2CW015_COMPVAL_Msk (0xffffu << GMAC_ST2CW015_COMPVAL_Pos) /**< \brief (GMAC_ST2CW015) Compare Value */ +#define GMAC_ST2CW015_COMPVAL(value) ((GMAC_ST2CW015_COMPVAL_Msk & ((value) << GMAC_ST2CW015_COMPVAL_Pos))) +/* -------- GMAC_ST2CW115 : (GMAC Offset: 0x77C) Screening Type 2 Compare Word 1 Register (index = 15) -------- */ +#define GMAC_ST2CW115_OFFSVAL_Pos 0 +#define GMAC_ST2CW115_OFFSVAL_Msk (0x7fu << GMAC_ST2CW115_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW115) Offset Value in Bytes */ +#define GMAC_ST2CW115_OFFSVAL(value) ((GMAC_ST2CW115_OFFSVAL_Msk & ((value) << GMAC_ST2CW115_OFFSVAL_Pos))) +#define GMAC_ST2CW115_OFFSSTRT_Pos 7 +#define GMAC_ST2CW115_OFFSSTRT_Msk (0x3u << GMAC_ST2CW115_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW115) Ethernet Frame Offset Start */ +#define GMAC_ST2CW115_OFFSSTRT(value) ((GMAC_ST2CW115_OFFSSTRT_Msk & ((value) << GMAC_ST2CW115_OFFSSTRT_Pos))) +#define GMAC_ST2CW115_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW115) Offset from the start of the frame */ +#define GMAC_ST2CW115_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW115) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW115_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW115) Offset from the byte after the IP header field */ +#define GMAC_ST2CW115_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW115) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW016 : (GMAC Offset: 0x780) Screening Type 2 Compare Word 0 Register (index = 16) -------- */ +#define GMAC_ST2CW016_MASKVAL_Pos 0 +#define GMAC_ST2CW016_MASKVAL_Msk (0xffffu << GMAC_ST2CW016_MASKVAL_Pos) /**< \brief (GMAC_ST2CW016) Mask Value */ +#define GMAC_ST2CW016_MASKVAL(value) ((GMAC_ST2CW016_MASKVAL_Msk & ((value) << GMAC_ST2CW016_MASKVAL_Pos))) +#define GMAC_ST2CW016_COMPVAL_Pos 16 +#define GMAC_ST2CW016_COMPVAL_Msk (0xffffu << GMAC_ST2CW016_COMPVAL_Pos) /**< \brief (GMAC_ST2CW016) Compare Value */ +#define GMAC_ST2CW016_COMPVAL(value) ((GMAC_ST2CW016_COMPVAL_Msk & ((value) << GMAC_ST2CW016_COMPVAL_Pos))) +/* -------- GMAC_ST2CW116 : (GMAC Offset: 0x784) Screening Type 2 Compare Word 1 Register (index = 16) -------- */ +#define GMAC_ST2CW116_OFFSVAL_Pos 0 +#define GMAC_ST2CW116_OFFSVAL_Msk (0x7fu << GMAC_ST2CW116_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW116) Offset Value in Bytes */ +#define GMAC_ST2CW116_OFFSVAL(value) ((GMAC_ST2CW116_OFFSVAL_Msk & ((value) << GMAC_ST2CW116_OFFSVAL_Pos))) +#define GMAC_ST2CW116_OFFSSTRT_Pos 7 +#define GMAC_ST2CW116_OFFSSTRT_Msk (0x3u << GMAC_ST2CW116_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW116) Ethernet Frame Offset Start */ +#define GMAC_ST2CW116_OFFSSTRT(value) ((GMAC_ST2CW116_OFFSSTRT_Msk & ((value) << GMAC_ST2CW116_OFFSSTRT_Pos))) +#define GMAC_ST2CW116_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW116) Offset from the start of the frame */ +#define GMAC_ST2CW116_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW116) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW116_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW116) Offset from the byte after the IP header field */ +#define GMAC_ST2CW116_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW116) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW017 : (GMAC Offset: 0x788) Screening Type 2 Compare Word 0 Register (index = 17) -------- */ +#define GMAC_ST2CW017_MASKVAL_Pos 0 +#define GMAC_ST2CW017_MASKVAL_Msk (0xffffu << GMAC_ST2CW017_MASKVAL_Pos) /**< \brief (GMAC_ST2CW017) Mask Value */ +#define GMAC_ST2CW017_MASKVAL(value) ((GMAC_ST2CW017_MASKVAL_Msk & ((value) << GMAC_ST2CW017_MASKVAL_Pos))) +#define GMAC_ST2CW017_COMPVAL_Pos 16 +#define GMAC_ST2CW017_COMPVAL_Msk (0xffffu << GMAC_ST2CW017_COMPVAL_Pos) /**< \brief (GMAC_ST2CW017) Compare Value */ +#define GMAC_ST2CW017_COMPVAL(value) ((GMAC_ST2CW017_COMPVAL_Msk & ((value) << GMAC_ST2CW017_COMPVAL_Pos))) +/* -------- GMAC_ST2CW117 : (GMAC Offset: 0x78C) Screening Type 2 Compare Word 1 Register (index = 17) -------- */ +#define GMAC_ST2CW117_OFFSVAL_Pos 0 +#define GMAC_ST2CW117_OFFSVAL_Msk (0x7fu << GMAC_ST2CW117_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW117) Offset Value in Bytes */ +#define GMAC_ST2CW117_OFFSVAL(value) ((GMAC_ST2CW117_OFFSVAL_Msk & ((value) << GMAC_ST2CW117_OFFSVAL_Pos))) +#define GMAC_ST2CW117_OFFSSTRT_Pos 7 +#define GMAC_ST2CW117_OFFSSTRT_Msk (0x3u << GMAC_ST2CW117_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW117) Ethernet Frame Offset Start */ +#define GMAC_ST2CW117_OFFSSTRT(value) ((GMAC_ST2CW117_OFFSSTRT_Msk & ((value) << GMAC_ST2CW117_OFFSSTRT_Pos))) +#define GMAC_ST2CW117_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW117) Offset from the start of the frame */ +#define GMAC_ST2CW117_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW117) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW117_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW117) Offset from the byte after the IP header field */ +#define GMAC_ST2CW117_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW117) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW018 : (GMAC Offset: 0x790) Screening Type 2 Compare Word 0 Register (index = 18) -------- */ +#define GMAC_ST2CW018_MASKVAL_Pos 0 +#define GMAC_ST2CW018_MASKVAL_Msk (0xffffu << GMAC_ST2CW018_MASKVAL_Pos) /**< \brief (GMAC_ST2CW018) Mask Value */ +#define GMAC_ST2CW018_MASKVAL(value) ((GMAC_ST2CW018_MASKVAL_Msk & ((value) << GMAC_ST2CW018_MASKVAL_Pos))) +#define GMAC_ST2CW018_COMPVAL_Pos 16 +#define GMAC_ST2CW018_COMPVAL_Msk (0xffffu << GMAC_ST2CW018_COMPVAL_Pos) /**< \brief (GMAC_ST2CW018) Compare Value */ +#define GMAC_ST2CW018_COMPVAL(value) ((GMAC_ST2CW018_COMPVAL_Msk & ((value) << GMAC_ST2CW018_COMPVAL_Pos))) +/* -------- GMAC_ST2CW118 : (GMAC Offset: 0x794) Screening Type 2 Compare Word 1 Register (index = 18) -------- */ +#define GMAC_ST2CW118_OFFSVAL_Pos 0 +#define GMAC_ST2CW118_OFFSVAL_Msk (0x7fu << GMAC_ST2CW118_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW118) Offset Value in Bytes */ +#define GMAC_ST2CW118_OFFSVAL(value) ((GMAC_ST2CW118_OFFSVAL_Msk & ((value) << GMAC_ST2CW118_OFFSVAL_Pos))) +#define GMAC_ST2CW118_OFFSSTRT_Pos 7 +#define GMAC_ST2CW118_OFFSSTRT_Msk (0x3u << GMAC_ST2CW118_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW118) Ethernet Frame Offset Start */ +#define GMAC_ST2CW118_OFFSSTRT(value) ((GMAC_ST2CW118_OFFSSTRT_Msk & ((value) << GMAC_ST2CW118_OFFSSTRT_Pos))) +#define GMAC_ST2CW118_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW118) Offset from the start of the frame */ +#define GMAC_ST2CW118_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW118) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW118_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW118) Offset from the byte after the IP header field */ +#define GMAC_ST2CW118_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW118) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW019 : (GMAC Offset: 0x798) Screening Type 2 Compare Word 0 Register (index = 19) -------- */ +#define GMAC_ST2CW019_MASKVAL_Pos 0 +#define GMAC_ST2CW019_MASKVAL_Msk (0xffffu << GMAC_ST2CW019_MASKVAL_Pos) /**< \brief (GMAC_ST2CW019) Mask Value */ +#define GMAC_ST2CW019_MASKVAL(value) ((GMAC_ST2CW019_MASKVAL_Msk & ((value) << GMAC_ST2CW019_MASKVAL_Pos))) +#define GMAC_ST2CW019_COMPVAL_Pos 16 +#define GMAC_ST2CW019_COMPVAL_Msk (0xffffu << GMAC_ST2CW019_COMPVAL_Pos) /**< \brief (GMAC_ST2CW019) Compare Value */ +#define GMAC_ST2CW019_COMPVAL(value) ((GMAC_ST2CW019_COMPVAL_Msk & ((value) << GMAC_ST2CW019_COMPVAL_Pos))) +/* -------- GMAC_ST2CW119 : (GMAC Offset: 0x79C) Screening Type 2 Compare Word 1 Register (index = 19) -------- */ +#define GMAC_ST2CW119_OFFSVAL_Pos 0 +#define GMAC_ST2CW119_OFFSVAL_Msk (0x7fu << GMAC_ST2CW119_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW119) Offset Value in Bytes */ +#define GMAC_ST2CW119_OFFSVAL(value) ((GMAC_ST2CW119_OFFSVAL_Msk & ((value) << GMAC_ST2CW119_OFFSVAL_Pos))) +#define GMAC_ST2CW119_OFFSSTRT_Pos 7 +#define GMAC_ST2CW119_OFFSSTRT_Msk (0x3u << GMAC_ST2CW119_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW119) Ethernet Frame Offset Start */ +#define GMAC_ST2CW119_OFFSSTRT(value) ((GMAC_ST2CW119_OFFSSTRT_Msk & ((value) << GMAC_ST2CW119_OFFSSTRT_Pos))) +#define GMAC_ST2CW119_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW119) Offset from the start of the frame */ +#define GMAC_ST2CW119_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW119) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW119_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW119) Offset from the byte after the IP header field */ +#define GMAC_ST2CW119_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW119) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW020 : (GMAC Offset: 0x7A0) Screening Type 2 Compare Word 0 Register (index = 20) -------- */ +#define GMAC_ST2CW020_MASKVAL_Pos 0 +#define GMAC_ST2CW020_MASKVAL_Msk (0xffffu << GMAC_ST2CW020_MASKVAL_Pos) /**< \brief (GMAC_ST2CW020) Mask Value */ +#define GMAC_ST2CW020_MASKVAL(value) ((GMAC_ST2CW020_MASKVAL_Msk & ((value) << GMAC_ST2CW020_MASKVAL_Pos))) +#define GMAC_ST2CW020_COMPVAL_Pos 16 +#define GMAC_ST2CW020_COMPVAL_Msk (0xffffu << GMAC_ST2CW020_COMPVAL_Pos) /**< \brief (GMAC_ST2CW020) Compare Value */ +#define GMAC_ST2CW020_COMPVAL(value) ((GMAC_ST2CW020_COMPVAL_Msk & ((value) << GMAC_ST2CW020_COMPVAL_Pos))) +/* -------- GMAC_ST2CW120 : (GMAC Offset: 0x7A4) Screening Type 2 Compare Word 1 Register (index = 20) -------- */ +#define GMAC_ST2CW120_OFFSVAL_Pos 0 +#define GMAC_ST2CW120_OFFSVAL_Msk (0x7fu << GMAC_ST2CW120_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW120) Offset Value in Bytes */ +#define GMAC_ST2CW120_OFFSVAL(value) ((GMAC_ST2CW120_OFFSVAL_Msk & ((value) << GMAC_ST2CW120_OFFSVAL_Pos))) +#define GMAC_ST2CW120_OFFSSTRT_Pos 7 +#define GMAC_ST2CW120_OFFSSTRT_Msk (0x3u << GMAC_ST2CW120_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW120) Ethernet Frame Offset Start */ +#define GMAC_ST2CW120_OFFSSTRT(value) ((GMAC_ST2CW120_OFFSSTRT_Msk & ((value) << GMAC_ST2CW120_OFFSSTRT_Pos))) +#define GMAC_ST2CW120_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW120) Offset from the start of the frame */ +#define GMAC_ST2CW120_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW120) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW120_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW120) Offset from the byte after the IP header field */ +#define GMAC_ST2CW120_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW120) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW021 : (GMAC Offset: 0x7A8) Screening Type 2 Compare Word 0 Register (index = 21) -------- */ +#define GMAC_ST2CW021_MASKVAL_Pos 0 +#define GMAC_ST2CW021_MASKVAL_Msk (0xffffu << GMAC_ST2CW021_MASKVAL_Pos) /**< \brief (GMAC_ST2CW021) Mask Value */ +#define GMAC_ST2CW021_MASKVAL(value) ((GMAC_ST2CW021_MASKVAL_Msk & ((value) << GMAC_ST2CW021_MASKVAL_Pos))) +#define GMAC_ST2CW021_COMPVAL_Pos 16 +#define GMAC_ST2CW021_COMPVAL_Msk (0xffffu << GMAC_ST2CW021_COMPVAL_Pos) /**< \brief (GMAC_ST2CW021) Compare Value */ +#define GMAC_ST2CW021_COMPVAL(value) ((GMAC_ST2CW021_COMPVAL_Msk & ((value) << GMAC_ST2CW021_COMPVAL_Pos))) +/* -------- GMAC_ST2CW121 : (GMAC Offset: 0x7AC) Screening Type 2 Compare Word 1 Register (index = 21) -------- */ +#define GMAC_ST2CW121_OFFSVAL_Pos 0 +#define GMAC_ST2CW121_OFFSVAL_Msk (0x7fu << GMAC_ST2CW121_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW121) Offset Value in Bytes */ +#define GMAC_ST2CW121_OFFSVAL(value) ((GMAC_ST2CW121_OFFSVAL_Msk & ((value) << GMAC_ST2CW121_OFFSVAL_Pos))) +#define GMAC_ST2CW121_OFFSSTRT_Pos 7 +#define GMAC_ST2CW121_OFFSSTRT_Msk (0x3u << GMAC_ST2CW121_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW121) Ethernet Frame Offset Start */ +#define GMAC_ST2CW121_OFFSSTRT(value) ((GMAC_ST2CW121_OFFSSTRT_Msk & ((value) << GMAC_ST2CW121_OFFSSTRT_Pos))) +#define GMAC_ST2CW121_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW121) Offset from the start of the frame */ +#define GMAC_ST2CW121_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW121) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW121_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW121) Offset from the byte after the IP header field */ +#define GMAC_ST2CW121_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW121) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW022 : (GMAC Offset: 0x7B0) Screening Type 2 Compare Word 0 Register (index = 22) -------- */ +#define GMAC_ST2CW022_MASKVAL_Pos 0 +#define GMAC_ST2CW022_MASKVAL_Msk (0xffffu << GMAC_ST2CW022_MASKVAL_Pos) /**< \brief (GMAC_ST2CW022) Mask Value */ +#define GMAC_ST2CW022_MASKVAL(value) ((GMAC_ST2CW022_MASKVAL_Msk & ((value) << GMAC_ST2CW022_MASKVAL_Pos))) +#define GMAC_ST2CW022_COMPVAL_Pos 16 +#define GMAC_ST2CW022_COMPVAL_Msk (0xffffu << GMAC_ST2CW022_COMPVAL_Pos) /**< \brief (GMAC_ST2CW022) Compare Value */ +#define GMAC_ST2CW022_COMPVAL(value) ((GMAC_ST2CW022_COMPVAL_Msk & ((value) << GMAC_ST2CW022_COMPVAL_Pos))) +/* -------- GMAC_ST2CW122 : (GMAC Offset: 0x7B4) Screening Type 2 Compare Word 1 Register (index = 22) -------- */ +#define GMAC_ST2CW122_OFFSVAL_Pos 0 +#define GMAC_ST2CW122_OFFSVAL_Msk (0x7fu << GMAC_ST2CW122_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW122) Offset Value in Bytes */ +#define GMAC_ST2CW122_OFFSVAL(value) ((GMAC_ST2CW122_OFFSVAL_Msk & ((value) << GMAC_ST2CW122_OFFSVAL_Pos))) +#define GMAC_ST2CW122_OFFSSTRT_Pos 7 +#define GMAC_ST2CW122_OFFSSTRT_Msk (0x3u << GMAC_ST2CW122_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW122) Ethernet Frame Offset Start */ +#define GMAC_ST2CW122_OFFSSTRT(value) ((GMAC_ST2CW122_OFFSSTRT_Msk & ((value) << GMAC_ST2CW122_OFFSSTRT_Pos))) +#define GMAC_ST2CW122_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW122) Offset from the start of the frame */ +#define GMAC_ST2CW122_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW122) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW122_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW122) Offset from the byte after the IP header field */ +#define GMAC_ST2CW122_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW122) Offset from the byte after the TCP/UDP header field */ +/* -------- GMAC_ST2CW023 : (GMAC Offset: 0x7B8) Screening Type 2 Compare Word 0 Register (index = 23) -------- */ +#define GMAC_ST2CW023_MASKVAL_Pos 0 +#define GMAC_ST2CW023_MASKVAL_Msk (0xffffu << GMAC_ST2CW023_MASKVAL_Pos) /**< \brief (GMAC_ST2CW023) Mask Value */ +#define GMAC_ST2CW023_MASKVAL(value) ((GMAC_ST2CW023_MASKVAL_Msk & ((value) << GMAC_ST2CW023_MASKVAL_Pos))) +#define GMAC_ST2CW023_COMPVAL_Pos 16 +#define GMAC_ST2CW023_COMPVAL_Msk (0xffffu << GMAC_ST2CW023_COMPVAL_Pos) /**< \brief (GMAC_ST2CW023) Compare Value */ +#define GMAC_ST2CW023_COMPVAL(value) ((GMAC_ST2CW023_COMPVAL_Msk & ((value) << GMAC_ST2CW023_COMPVAL_Pos))) +/* -------- GMAC_ST2CW123 : (GMAC Offset: 0x7BC) Screening Type 2 Compare Word 1 Register (index = 23) -------- */ +#define GMAC_ST2CW123_OFFSVAL_Pos 0 +#define GMAC_ST2CW123_OFFSVAL_Msk (0x7fu << GMAC_ST2CW123_OFFSVAL_Pos) /**< \brief (GMAC_ST2CW123) Offset Value in Bytes */ +#define GMAC_ST2CW123_OFFSVAL(value) ((GMAC_ST2CW123_OFFSVAL_Msk & ((value) << GMAC_ST2CW123_OFFSVAL_Pos))) +#define GMAC_ST2CW123_OFFSSTRT_Pos 7 +#define GMAC_ST2CW123_OFFSSTRT_Msk (0x3u << GMAC_ST2CW123_OFFSSTRT_Pos) /**< \brief (GMAC_ST2CW123) Ethernet Frame Offset Start */ +#define GMAC_ST2CW123_OFFSSTRT(value) ((GMAC_ST2CW123_OFFSSTRT_Msk & ((value) << GMAC_ST2CW123_OFFSSTRT_Pos))) +#define GMAC_ST2CW123_OFFSSTRT_FRAMESTART (0x0u << 7) /**< \brief (GMAC_ST2CW123) Offset from the start of the frame */ +#define GMAC_ST2CW123_OFFSSTRT_ETHERTYPE (0x1u << 7) /**< \brief (GMAC_ST2CW123) Offset from the byte after the EtherType field */ +#define GMAC_ST2CW123_OFFSSTRT_IP (0x2u << 7) /**< \brief (GMAC_ST2CW123) Offset from the byte after the IP header field */ +#define GMAC_ST2CW123_OFFSSTRT_TCP_UDP (0x3u << 7) /**< \brief (GMAC_ST2CW123) Offset from the byte after the TCP/UDP header field */ + +/*@}*/ + + +#endif /* _SAME70_GMAC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h new file mode 100644 index 00000000..d6d19b0d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h @@ -0,0 +1,58 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_GPBR_COMPONENT_ +#define _SAME70_GPBR_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR General Purpose Backup Registers */ +/* ============================================================================= */ +/** \addtogroup SAME70_GPBR General Purpose Backup Registers */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Gpbr hardware registers */ +typedef struct { + __IO uint32_t SYS_GPBR[8]; /**< \brief (Gpbr Offset: 0x0) General Purpose Backup Register */ +} Gpbr; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SYS_GPBR[8] : (GPBR Offset: 0x0) General Purpose Backup Register -------- */ +#define SYS_GPBR_GPBR_VALUE_Pos 0 +#define SYS_GPBR_GPBR_VALUE_Msk (0xffffffffu << SYS_GPBR_GPBR_VALUE_Pos) /**< \brief (SYS_GPBR[8]) Value of GPBR x */ +#define SYS_GPBR_GPBR_VALUE(value) ((SYS_GPBR_GPBR_VALUE_Msk & ((value) << SYS_GPBR_GPBR_VALUE_Pos))) + +/*@}*/ + + +#endif /* _SAME70_GPBR_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h new file mode 100644 index 00000000..d2f35e30 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h @@ -0,0 +1,347 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_HSMCI_COMPONENT_ +#define _SAME70_HSMCI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR High Speed MultiMedia Card Interface */ +/* ============================================================================= */ +/** \addtogroup SAME70_HSMCI High Speed MultiMedia Card Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Hsmci hardware registers */ +typedef struct { + __O uint32_t HSMCI_CR; /**< \brief (Hsmci Offset: 0x00) Control Register */ + __IO uint32_t HSMCI_MR; /**< \brief (Hsmci Offset: 0x04) Mode Register */ + __IO uint32_t HSMCI_DTOR; /**< \brief (Hsmci Offset: 0x08) Data Timeout Register */ + __IO uint32_t HSMCI_SDCR; /**< \brief (Hsmci Offset: 0x0C) SD/SDIO Card Register */ + __IO uint32_t HSMCI_ARGR; /**< \brief (Hsmci Offset: 0x10) Argument Register */ + __O uint32_t HSMCI_CMDR; /**< \brief (Hsmci Offset: 0x14) Command Register */ + __IO uint32_t HSMCI_BLKR; /**< \brief (Hsmci Offset: 0x18) Block Register */ + __IO uint32_t HSMCI_CSTOR; /**< \brief (Hsmci Offset: 0x1C) Completion Signal Timeout Register */ + __I uint32_t HSMCI_RSPR[4]; /**< \brief (Hsmci Offset: 0x20) Response Register */ + __I uint32_t HSMCI_RDR; /**< \brief (Hsmci Offset: 0x30) Receive Data Register */ + __O uint32_t HSMCI_TDR; /**< \brief (Hsmci Offset: 0x34) Transmit Data Register */ + __I uint32_t Reserved1[2]; + __I uint32_t HSMCI_SR; /**< \brief (Hsmci Offset: 0x40) Status Register */ + __O uint32_t HSMCI_IER; /**< \brief (Hsmci Offset: 0x44) Interrupt Enable Register */ + __O uint32_t HSMCI_IDR; /**< \brief (Hsmci Offset: 0x48) Interrupt Disable Register */ + __I uint32_t HSMCI_IMR; /**< \brief (Hsmci Offset: 0x4C) Interrupt Mask Register */ + __IO uint32_t HSMCI_DMA; /**< \brief (Hsmci Offset: 0x50) DMA Configuration Register */ + __IO uint32_t HSMCI_CFG; /**< \brief (Hsmci Offset: 0x54) Configuration Register */ + __I uint32_t Reserved2[35]; + __IO uint32_t HSMCI_WPMR; /**< \brief (Hsmci Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t HSMCI_WPSR; /**< \brief (Hsmci Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved3[4]; + __I uint32_t HSMCI_VERSION; /**< \brief (Hsmci Offset: 0xFC) Version Register */ + __I uint32_t Reserved4[64]; + __IO uint32_t HSMCI_FIFO[256]; /**< \brief (Hsmci Offset: 0x200) FIFO Memory Aperture0 */ +} Hsmci; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- HSMCI_CR : (HSMCI Offset: 0x00) Control Register -------- */ +#define HSMCI_CR_MCIEN (0x1u << 0) /**< \brief (HSMCI_CR) Multi-Media Interface Enable */ +#define HSMCI_CR_MCIDIS (0x1u << 1) /**< \brief (HSMCI_CR) Multi-Media Interface Disable */ +#define HSMCI_CR_PWSEN (0x1u << 2) /**< \brief (HSMCI_CR) Power Save Mode Enable */ +#define HSMCI_CR_PWSDIS (0x1u << 3) /**< \brief (HSMCI_CR) Power Save Mode Disable */ +#define HSMCI_CR_SWRST (0x1u << 7) /**< \brief (HSMCI_CR) Software Reset */ +/* -------- HSMCI_MR : (HSMCI Offset: 0x04) Mode Register -------- */ +#define HSMCI_MR_CLKDIV_Pos 0 +#define HSMCI_MR_CLKDIV_Msk (0xffu << HSMCI_MR_CLKDIV_Pos) /**< \brief (HSMCI_MR) Clock Divider */ +#define HSMCI_MR_CLKDIV(value) ((HSMCI_MR_CLKDIV_Msk & ((value) << HSMCI_MR_CLKDIV_Pos))) +#define HSMCI_MR_PWSDIV_Pos 8 +#define HSMCI_MR_PWSDIV_Msk (0x7u << HSMCI_MR_PWSDIV_Pos) /**< \brief (HSMCI_MR) Power Saving Divider */ +#define HSMCI_MR_PWSDIV(value) ((HSMCI_MR_PWSDIV_Msk & ((value) << HSMCI_MR_PWSDIV_Pos))) +#define HSMCI_MR_RDPROOF (0x1u << 11) /**< \brief (HSMCI_MR) Read Proof Enable */ +#define HSMCI_MR_WRPROOF (0x1u << 12) /**< \brief (HSMCI_MR) Write Proof Enable */ +#define HSMCI_MR_FBYTE (0x1u << 13) /**< \brief (HSMCI_MR) Force Byte Transfer */ +#define HSMCI_MR_PADV (0x1u << 14) /**< \brief (HSMCI_MR) Padding Value */ +#define HSMCI_MR_CLKODD (0x1u << 16) /**< \brief (HSMCI_MR) Clock divider is odd */ +/* -------- HSMCI_DTOR : (HSMCI Offset: 0x08) Data Timeout Register -------- */ +#define HSMCI_DTOR_DTOCYC_Pos 0 +#define HSMCI_DTOR_DTOCYC_Msk (0xfu << HSMCI_DTOR_DTOCYC_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Cycle Number */ +#define HSMCI_DTOR_DTOCYC(value) ((HSMCI_DTOR_DTOCYC_Msk & ((value) << HSMCI_DTOR_DTOCYC_Pos))) +#define HSMCI_DTOR_DTOMUL_Pos 4 +#define HSMCI_DTOR_DTOMUL_Msk (0x7u << HSMCI_DTOR_DTOMUL_Pos) /**< \brief (HSMCI_DTOR) Data Timeout Multiplier */ +#define HSMCI_DTOR_DTOMUL(value) ((HSMCI_DTOR_DTOMUL_Msk & ((value) << HSMCI_DTOR_DTOMUL_Pos))) +#define HSMCI_DTOR_DTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_DTOR) DTOCYC */ +#define HSMCI_DTOR_DTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 16 */ +#define HSMCI_DTOR_DTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 128 */ +#define HSMCI_DTOR_DTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 256 */ +#define HSMCI_DTOR_DTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1024 */ +#define HSMCI_DTOR_DTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 4096 */ +#define HSMCI_DTOR_DTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 65536 */ +#define HSMCI_DTOR_DTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_DTOR) DTOCYC x 1048576 */ +/* -------- HSMCI_SDCR : (HSMCI Offset: 0x0C) SD/SDIO Card Register -------- */ +#define HSMCI_SDCR_SDCSEL_Pos 0 +#define HSMCI_SDCR_SDCSEL_Msk (0x3u << HSMCI_SDCR_SDCSEL_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Slot */ +#define HSMCI_SDCR_SDCSEL(value) ((HSMCI_SDCR_SDCSEL_Msk & ((value) << HSMCI_SDCR_SDCSEL_Pos))) +#define HSMCI_SDCR_SDCSEL_SLOTA (0x0u << 0) /**< \brief (HSMCI_SDCR) Slot A is selected. */ +#define HSMCI_SDCR_SDCBUS_Pos 6 +#define HSMCI_SDCR_SDCBUS_Msk (0x3u << HSMCI_SDCR_SDCBUS_Pos) /**< \brief (HSMCI_SDCR) SDCard/SDIO Bus Width */ +#define HSMCI_SDCR_SDCBUS(value) ((HSMCI_SDCR_SDCBUS_Msk & ((value) << HSMCI_SDCR_SDCBUS_Pos))) +#define HSMCI_SDCR_SDCBUS_1 (0x0u << 6) /**< \brief (HSMCI_SDCR) 1 bit */ +#define HSMCI_SDCR_SDCBUS_4 (0x2u << 6) /**< \brief (HSMCI_SDCR) 4 bits */ +#define HSMCI_SDCR_SDCBUS_8 (0x3u << 6) /**< \brief (HSMCI_SDCR) 8 bits */ +/* -------- HSMCI_ARGR : (HSMCI Offset: 0x10) Argument Register -------- */ +#define HSMCI_ARGR_ARG_Pos 0 +#define HSMCI_ARGR_ARG_Msk (0xffffffffu << HSMCI_ARGR_ARG_Pos) /**< \brief (HSMCI_ARGR) Command Argument */ +#define HSMCI_ARGR_ARG(value) ((HSMCI_ARGR_ARG_Msk & ((value) << HSMCI_ARGR_ARG_Pos))) +/* -------- HSMCI_CMDR : (HSMCI Offset: 0x14) Command Register -------- */ +#define HSMCI_CMDR_CMDNB_Pos 0 +#define HSMCI_CMDR_CMDNB_Msk (0x3fu << HSMCI_CMDR_CMDNB_Pos) /**< \brief (HSMCI_CMDR) Command Number */ +#define HSMCI_CMDR_CMDNB(value) ((HSMCI_CMDR_CMDNB_Msk & ((value) << HSMCI_CMDR_CMDNB_Pos))) +#define HSMCI_CMDR_RSPTYP_Pos 6 +#define HSMCI_CMDR_RSPTYP_Msk (0x3u << HSMCI_CMDR_RSPTYP_Pos) /**< \brief (HSMCI_CMDR) Response Type */ +#define HSMCI_CMDR_RSPTYP(value) ((HSMCI_CMDR_RSPTYP_Msk & ((value) << HSMCI_CMDR_RSPTYP_Pos))) +#define HSMCI_CMDR_RSPTYP_NORESP (0x0u << 6) /**< \brief (HSMCI_CMDR) No response */ +#define HSMCI_CMDR_RSPTYP_48_BIT (0x1u << 6) /**< \brief (HSMCI_CMDR) 48-bit response */ +#define HSMCI_CMDR_RSPTYP_136_BIT (0x2u << 6) /**< \brief (HSMCI_CMDR) 136-bit response */ +#define HSMCI_CMDR_RSPTYP_R1B (0x3u << 6) /**< \brief (HSMCI_CMDR) R1b response type */ +#define HSMCI_CMDR_SPCMD_Pos 8 +#define HSMCI_CMDR_SPCMD_Msk (0x7u << HSMCI_CMDR_SPCMD_Pos) /**< \brief (HSMCI_CMDR) Special Command */ +#define HSMCI_CMDR_SPCMD(value) ((HSMCI_CMDR_SPCMD_Msk & ((value) << HSMCI_CMDR_SPCMD_Pos))) +#define HSMCI_CMDR_SPCMD_STD (0x0u << 8) /**< \brief (HSMCI_CMDR) Not a special CMD. */ +#define HSMCI_CMDR_SPCMD_INIT (0x1u << 8) /**< \brief (HSMCI_CMDR) Initialization CMD: 74 clock cycles for initialization sequence. */ +#define HSMCI_CMDR_SPCMD_SYNC (0x2u << 8) /**< \brief (HSMCI_CMDR) Synchronized CMD: Wait for the end of the current data block transfer before sending the pending command. */ +#define HSMCI_CMDR_SPCMD_CE_ATA (0x3u << 8) /**< \brief (HSMCI_CMDR) CE-ATA Completion Signal disable Command. The host cancels the ability for the device to return a command completion signal on the command line. */ +#define HSMCI_CMDR_SPCMD_IT_CMD (0x4u << 8) /**< \brief (HSMCI_CMDR) Interrupt command: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_IT_RESP (0x5u << 8) /**< \brief (HSMCI_CMDR) Interrupt response: Corresponds to the Interrupt Mode (CMD40). */ +#define HSMCI_CMDR_SPCMD_BOR (0x6u << 8) /**< \brief (HSMCI_CMDR) Boot Operation Request. Start a boot operation mode, the host processor can read boot data from the MMC device directly. */ +#define HSMCI_CMDR_SPCMD_EBO (0x7u << 8) /**< \brief (HSMCI_CMDR) End Boot Operation. This command allows the host processor to terminate the boot operation mode. */ +#define HSMCI_CMDR_OPDCMD (0x1u << 11) /**< \brief (HSMCI_CMDR) Open Drain Command */ +#define HSMCI_CMDR_OPDCMD_PUSHPULL (0x0u << 11) /**< \brief (HSMCI_CMDR) Push pull command. */ +#define HSMCI_CMDR_OPDCMD_OPENDRAIN (0x1u << 11) /**< \brief (HSMCI_CMDR) Open drain command. */ +#define HSMCI_CMDR_MAXLAT (0x1u << 12) /**< \brief (HSMCI_CMDR) Max Latency for Command to Response */ +#define HSMCI_CMDR_MAXLAT_5 (0x0u << 12) /**< \brief (HSMCI_CMDR) 5-cycle max latency. */ +#define HSMCI_CMDR_MAXLAT_64 (0x1u << 12) /**< \brief (HSMCI_CMDR) 64-cycle max latency. */ +#define HSMCI_CMDR_TRCMD_Pos 16 +#define HSMCI_CMDR_TRCMD_Msk (0x3u << HSMCI_CMDR_TRCMD_Pos) /**< \brief (HSMCI_CMDR) Transfer Command */ +#define HSMCI_CMDR_TRCMD(value) ((HSMCI_CMDR_TRCMD_Msk & ((value) << HSMCI_CMDR_TRCMD_Pos))) +#define HSMCI_CMDR_TRCMD_NO_DATA (0x0u << 16) /**< \brief (HSMCI_CMDR) No data transfer */ +#define HSMCI_CMDR_TRCMD_START_DATA (0x1u << 16) /**< \brief (HSMCI_CMDR) Start data transfer */ +#define HSMCI_CMDR_TRCMD_STOP_DATA (0x2u << 16) /**< \brief (HSMCI_CMDR) Stop data transfer */ +#define HSMCI_CMDR_TRDIR (0x1u << 18) /**< \brief (HSMCI_CMDR) Transfer Direction */ +#define HSMCI_CMDR_TRDIR_WRITE (0x0u << 18) /**< \brief (HSMCI_CMDR) Write. */ +#define HSMCI_CMDR_TRDIR_READ (0x1u << 18) /**< \brief (HSMCI_CMDR) Read. */ +#define HSMCI_CMDR_TRTYP_Pos 19 +#define HSMCI_CMDR_TRTYP_Msk (0x7u << HSMCI_CMDR_TRTYP_Pos) /**< \brief (HSMCI_CMDR) Transfer Type */ +#define HSMCI_CMDR_TRTYP(value) ((HSMCI_CMDR_TRTYP_Msk & ((value) << HSMCI_CMDR_TRTYP_Pos))) +#define HSMCI_CMDR_TRTYP_SINGLE (0x0u << 19) /**< \brief (HSMCI_CMDR) MMC/SD Card Single Block */ +#define HSMCI_CMDR_TRTYP_MULTIPLE (0x1u << 19) /**< \brief (HSMCI_CMDR) MMC/SD Card Multiple Block */ +#define HSMCI_CMDR_TRTYP_STREAM (0x2u << 19) /**< \brief (HSMCI_CMDR) MMC Stream */ +#define HSMCI_CMDR_TRTYP_BYTE (0x4u << 19) /**< \brief (HSMCI_CMDR) SDIO Byte */ +#define HSMCI_CMDR_TRTYP_BLOCK (0x5u << 19) /**< \brief (HSMCI_CMDR) SDIO Block */ +#define HSMCI_CMDR_IOSPCMD_Pos 24 +#define HSMCI_CMDR_IOSPCMD_Msk (0x3u << HSMCI_CMDR_IOSPCMD_Pos) /**< \brief (HSMCI_CMDR) SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD(value) ((HSMCI_CMDR_IOSPCMD_Msk & ((value) << HSMCI_CMDR_IOSPCMD_Pos))) +#define HSMCI_CMDR_IOSPCMD_STD (0x0u << 24) /**< \brief (HSMCI_CMDR) Not an SDIO Special Command */ +#define HSMCI_CMDR_IOSPCMD_SUSPEND (0x1u << 24) /**< \brief (HSMCI_CMDR) SDIO Suspend Command */ +#define HSMCI_CMDR_IOSPCMD_RESUME (0x2u << 24) /**< \brief (HSMCI_CMDR) SDIO Resume Command */ +#define HSMCI_CMDR_ATACS (0x1u << 26) /**< \brief (HSMCI_CMDR) ATA with Command Completion Signal */ +#define HSMCI_CMDR_ATACS_NORMAL (0x0u << 26) /**< \brief (HSMCI_CMDR) Normal operation mode. */ +#define HSMCI_CMDR_ATACS_COMPLETION (0x1u << 26) /**< \brief (HSMCI_CMDR) This bit indicates that a completion signal is expected within a programmed amount of time (HSMCI_CSTOR). */ +#define HSMCI_CMDR_BOOT_ACK (0x1u << 27) /**< \brief (HSMCI_CMDR) Boot Operation Acknowledge */ +/* -------- HSMCI_BLKR : (HSMCI Offset: 0x18) Block Register -------- */ +#define HSMCI_BLKR_BCNT_Pos 0 +#define HSMCI_BLKR_BCNT_Msk (0xffffu << HSMCI_BLKR_BCNT_Pos) /**< \brief (HSMCI_BLKR) MMC/SDIO Block Count - SDIO Byte Count */ +#define HSMCI_BLKR_BCNT(value) ((HSMCI_BLKR_BCNT_Msk & ((value) << HSMCI_BLKR_BCNT_Pos))) +#define HSMCI_BLKR_BLKLEN_Pos 16 +#define HSMCI_BLKR_BLKLEN_Msk (0xffffu << HSMCI_BLKR_BLKLEN_Pos) /**< \brief (HSMCI_BLKR) Data Block Length */ +#define HSMCI_BLKR_BLKLEN(value) ((HSMCI_BLKR_BLKLEN_Msk & ((value) << HSMCI_BLKR_BLKLEN_Pos))) +/* -------- HSMCI_CSTOR : (HSMCI Offset: 0x1C) Completion Signal Timeout Register -------- */ +#define HSMCI_CSTOR_CSTOCYC_Pos 0 +#define HSMCI_CSTOR_CSTOCYC_Msk (0xfu << HSMCI_CSTOR_CSTOCYC_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Cycle Number */ +#define HSMCI_CSTOR_CSTOCYC(value) ((HSMCI_CSTOR_CSTOCYC_Msk & ((value) << HSMCI_CSTOR_CSTOCYC_Pos))) +#define HSMCI_CSTOR_CSTOMUL_Pos 4 +#define HSMCI_CSTOR_CSTOMUL_Msk (0x7u << HSMCI_CSTOR_CSTOMUL_Pos) /**< \brief (HSMCI_CSTOR) Completion Signal Timeout Multiplier */ +#define HSMCI_CSTOR_CSTOMUL(value) ((HSMCI_CSTOR_CSTOMUL_Msk & ((value) << HSMCI_CSTOR_CSTOMUL_Pos))) +#define HSMCI_CSTOR_CSTOMUL_1 (0x0u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1 */ +#define HSMCI_CSTOR_CSTOMUL_16 (0x1u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 16 */ +#define HSMCI_CSTOR_CSTOMUL_128 (0x2u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 128 */ +#define HSMCI_CSTOR_CSTOMUL_256 (0x3u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 256 */ +#define HSMCI_CSTOR_CSTOMUL_1024 (0x4u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1024 */ +#define HSMCI_CSTOR_CSTOMUL_4096 (0x5u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 4096 */ +#define HSMCI_CSTOR_CSTOMUL_65536 (0x6u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 65536 */ +#define HSMCI_CSTOR_CSTOMUL_1048576 (0x7u << 4) /**< \brief (HSMCI_CSTOR) CSTOCYC x 1048576 */ +/* -------- HSMCI_RSPR[4] : (HSMCI Offset: 0x20) Response Register -------- */ +#define HSMCI_RSPR_RSP_Pos 0 +#define HSMCI_RSPR_RSP_Msk (0xffffffffu << HSMCI_RSPR_RSP_Pos) /**< \brief (HSMCI_RSPR[4]) Response */ +/* -------- HSMCI_RDR : (HSMCI Offset: 0x30) Receive Data Register -------- */ +#define HSMCI_RDR_DATA_Pos 0 +#define HSMCI_RDR_DATA_Msk (0xffffffffu << HSMCI_RDR_DATA_Pos) /**< \brief (HSMCI_RDR) Data to Read */ +/* -------- HSMCI_TDR : (HSMCI Offset: 0x34) Transmit Data Register -------- */ +#define HSMCI_TDR_DATA_Pos 0 +#define HSMCI_TDR_DATA_Msk (0xffffffffu << HSMCI_TDR_DATA_Pos) /**< \brief (HSMCI_TDR) Data to Write */ +#define HSMCI_TDR_DATA(value) ((HSMCI_TDR_DATA_Msk & ((value) << HSMCI_TDR_DATA_Pos))) +/* -------- HSMCI_SR : (HSMCI Offset: 0x40) Status Register -------- */ +#define HSMCI_SR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_SR) Command Ready (cleared by writing in HSMCI_CMDR) */ +#define HSMCI_SR_RXRDY (0x1u << 1) /**< \brief (HSMCI_SR) Receiver Ready (cleared by reading HSMCI_RDR) */ +#define HSMCI_SR_TXRDY (0x1u << 2) /**< \brief (HSMCI_SR) Transmit Ready (cleared by writing in HSMCI_TDR) */ +#define HSMCI_SR_BLKE (0x1u << 3) /**< \brief (HSMCI_SR) Data Block Ended (cleared on read) */ +#define HSMCI_SR_DTIP (0x1u << 4) /**< \brief (HSMCI_SR) Data Transfer in Progress (cleared at the end of CRC16 calculation) */ +#define HSMCI_SR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_SR) HSMCI Not Busy */ +#define HSMCI_SR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_SR) SDIO Interrupt for Slot A (cleared on read) */ +#define HSMCI_SR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_SR) SDIO Read Wait Operation Status */ +#define HSMCI_SR_CSRCV (0x1u << 13) /**< \brief (HSMCI_SR) CE-ATA Completion Signal Received (cleared on read) */ +#define HSMCI_SR_RINDE (0x1u << 16) /**< \brief (HSMCI_SR) Response Index Error (cleared by writing in HSMCI_CMDR) */ +#define HSMCI_SR_RDIRE (0x1u << 17) /**< \brief (HSMCI_SR) Response Direction Error (cleared by writing in HSMCI_CMDR) */ +#define HSMCI_SR_RCRCE (0x1u << 18) /**< \brief (HSMCI_SR) Response CRC Error (cleared by writing in HSMCI_CMDR) */ +#define HSMCI_SR_RENDE (0x1u << 19) /**< \brief (HSMCI_SR) Response End Bit Error (cleared by writing in HSMCI_CMDR) */ +#define HSMCI_SR_RTOE (0x1u << 20) /**< \brief (HSMCI_SR) Response Time-out Error (cleared by writing in HSMCI_CMDR) */ +#define HSMCI_SR_DCRCE (0x1u << 21) /**< \brief (HSMCI_SR) Data CRC Error (cleared on read) */ +#define HSMCI_SR_DTOE (0x1u << 22) /**< \brief (HSMCI_SR) Data Time-out Error (cleared on read) */ +#define HSMCI_SR_CSTOE (0x1u << 23) /**< \brief (HSMCI_SR) Completion Signal Time-out Error (cleared on read) */ +#define HSMCI_SR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_SR) DMA Block Overrun Error (cleared on read) */ +#define HSMCI_SR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_SR) FIFO empty flag */ +#define HSMCI_SR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_SR) Transfer Done flag */ +#define HSMCI_SR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Received (cleared on read) */ +#define HSMCI_SR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_SR) Boot Operation Acknowledge Error (cleared on read) */ +#define HSMCI_SR_OVRE (0x1u << 30) /**< \brief (HSMCI_SR) Overrun (if FERRCTRL = 1, cleared by writing in HSMCI_CMDR or cleared on read if FERRCTRL = 0) */ +#define HSMCI_SR_UNRE (0x1u << 31) /**< \brief (HSMCI_SR) Underrun (if FERRCTRL = 1, cleared by writing in HSMCI_CMDR or cleared on read if FERRCTRL = 0) */ +/* -------- HSMCI_IER : (HSMCI Offset: 0x44) Interrupt Enable Register -------- */ +#define HSMCI_IER_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IER) Command Ready Interrupt Enable */ +#define HSMCI_IER_RXRDY (0x1u << 1) /**< \brief (HSMCI_IER) Receiver Ready Interrupt Enable */ +#define HSMCI_IER_TXRDY (0x1u << 2) /**< \brief (HSMCI_IER) Transmit Ready Interrupt Enable */ +#define HSMCI_IER_BLKE (0x1u << 3) /**< \brief (HSMCI_IER) Data Block Ended Interrupt Enable */ +#define HSMCI_IER_DTIP (0x1u << 4) /**< \brief (HSMCI_IER) Data Transfer in Progress Interrupt Enable */ +#define HSMCI_IER_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IER) Data Not Busy Interrupt Enable */ +#define HSMCI_IER_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IER) SDIO Interrupt for Slot A Interrupt Enable */ +#define HSMCI_IER_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IER) SDIO Read Wait Operation Status Interrupt Enable */ +#define HSMCI_IER_CSRCV (0x1u << 13) /**< \brief (HSMCI_IER) Completion Signal Received Interrupt Enable */ +#define HSMCI_IER_RINDE (0x1u << 16) /**< \brief (HSMCI_IER) Response Index Error Interrupt Enable */ +#define HSMCI_IER_RDIRE (0x1u << 17) /**< \brief (HSMCI_IER) Response Direction Error Interrupt Enable */ +#define HSMCI_IER_RCRCE (0x1u << 18) /**< \brief (HSMCI_IER) Response CRC Error Interrupt Enable */ +#define HSMCI_IER_RENDE (0x1u << 19) /**< \brief (HSMCI_IER) Response End Bit Error Interrupt Enable */ +#define HSMCI_IER_RTOE (0x1u << 20) /**< \brief (HSMCI_IER) Response Time-out Error Interrupt Enable */ +#define HSMCI_IER_DCRCE (0x1u << 21) /**< \brief (HSMCI_IER) Data CRC Error Interrupt Enable */ +#define HSMCI_IER_DTOE (0x1u << 22) /**< \brief (HSMCI_IER) Data Time-out Error Interrupt Enable */ +#define HSMCI_IER_CSTOE (0x1u << 23) /**< \brief (HSMCI_IER) Completion Signal Timeout Error Interrupt Enable */ +#define HSMCI_IER_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IER) DMA Block Overrun Error Interrupt Enable */ +#define HSMCI_IER_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IER) FIFO empty Interrupt enable */ +#define HSMCI_IER_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IER) Transfer Done Interrupt enable */ +#define HSMCI_IER_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IER) Boot Acknowledge Interrupt Enable */ +#define HSMCI_IER_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IER) Boot Acknowledge Error Interrupt Enable */ +#define HSMCI_IER_OVRE (0x1u << 30) /**< \brief (HSMCI_IER) Overrun Interrupt Enable */ +#define HSMCI_IER_UNRE (0x1u << 31) /**< \brief (HSMCI_IER) Underrun Interrupt Enable */ +/* -------- HSMCI_IDR : (HSMCI Offset: 0x48) Interrupt Disable Register -------- */ +#define HSMCI_IDR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IDR) Command Ready Interrupt Disable */ +#define HSMCI_IDR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IDR) Receiver Ready Interrupt Disable */ +#define HSMCI_IDR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IDR) Transmit Ready Interrupt Disable */ +#define HSMCI_IDR_BLKE (0x1u << 3) /**< \brief (HSMCI_IDR) Data Block Ended Interrupt Disable */ +#define HSMCI_IDR_DTIP (0x1u << 4) /**< \brief (HSMCI_IDR) Data Transfer in Progress Interrupt Disable */ +#define HSMCI_IDR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IDR) Data Not Busy Interrupt Disable */ +#define HSMCI_IDR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IDR) SDIO Interrupt for Slot A Interrupt Disable */ +#define HSMCI_IDR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IDR) SDIO Read Wait Operation Status Interrupt Disable */ +#define HSMCI_IDR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IDR) Completion Signal received interrupt Disable */ +#define HSMCI_IDR_RINDE (0x1u << 16) /**< \brief (HSMCI_IDR) Response Index Error Interrupt Disable */ +#define HSMCI_IDR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IDR) Response Direction Error Interrupt Disable */ +#define HSMCI_IDR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IDR) Response CRC Error Interrupt Disable */ +#define HSMCI_IDR_RENDE (0x1u << 19) /**< \brief (HSMCI_IDR) Response End Bit Error Interrupt Disable */ +#define HSMCI_IDR_RTOE (0x1u << 20) /**< \brief (HSMCI_IDR) Response Time-out Error Interrupt Disable */ +#define HSMCI_IDR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IDR) Data CRC Error Interrupt Disable */ +#define HSMCI_IDR_DTOE (0x1u << 22) /**< \brief (HSMCI_IDR) Data Time-out Error Interrupt Disable */ +#define HSMCI_IDR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IDR) Completion Signal Time out Error Interrupt Disable */ +#define HSMCI_IDR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IDR) DMA Block Overrun Error Interrupt Disable */ +#define HSMCI_IDR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IDR) FIFO empty Interrupt Disable */ +#define HSMCI_IDR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IDR) Transfer Done Interrupt Disable */ +#define HSMCI_IDR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IDR) Boot Acknowledge Interrupt Disable */ +#define HSMCI_IDR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IDR) Boot Acknowledge Error Interrupt Disable */ +#define HSMCI_IDR_OVRE (0x1u << 30) /**< \brief (HSMCI_IDR) Overrun Interrupt Disable */ +#define HSMCI_IDR_UNRE (0x1u << 31) /**< \brief (HSMCI_IDR) Underrun Interrupt Disable */ +/* -------- HSMCI_IMR : (HSMCI Offset: 0x4C) Interrupt Mask Register -------- */ +#define HSMCI_IMR_CMDRDY (0x1u << 0) /**< \brief (HSMCI_IMR) Command Ready Interrupt Mask */ +#define HSMCI_IMR_RXRDY (0x1u << 1) /**< \brief (HSMCI_IMR) Receiver Ready Interrupt Mask */ +#define HSMCI_IMR_TXRDY (0x1u << 2) /**< \brief (HSMCI_IMR) Transmit Ready Interrupt Mask */ +#define HSMCI_IMR_BLKE (0x1u << 3) /**< \brief (HSMCI_IMR) Data Block Ended Interrupt Mask */ +#define HSMCI_IMR_DTIP (0x1u << 4) /**< \brief (HSMCI_IMR) Data Transfer in Progress Interrupt Mask */ +#define HSMCI_IMR_NOTBUSY (0x1u << 5) /**< \brief (HSMCI_IMR) Data Not Busy Interrupt Mask */ +#define HSMCI_IMR_SDIOIRQA (0x1u << 8) /**< \brief (HSMCI_IMR) SDIO Interrupt for Slot A Interrupt Mask */ +#define HSMCI_IMR_SDIOWAIT (0x1u << 12) /**< \brief (HSMCI_IMR) SDIO Read Wait Operation Status Interrupt Mask */ +#define HSMCI_IMR_CSRCV (0x1u << 13) /**< \brief (HSMCI_IMR) Completion Signal Received Interrupt Mask */ +#define HSMCI_IMR_RINDE (0x1u << 16) /**< \brief (HSMCI_IMR) Response Index Error Interrupt Mask */ +#define HSMCI_IMR_RDIRE (0x1u << 17) /**< \brief (HSMCI_IMR) Response Direction Error Interrupt Mask */ +#define HSMCI_IMR_RCRCE (0x1u << 18) /**< \brief (HSMCI_IMR) Response CRC Error Interrupt Mask */ +#define HSMCI_IMR_RENDE (0x1u << 19) /**< \brief (HSMCI_IMR) Response End Bit Error Interrupt Mask */ +#define HSMCI_IMR_RTOE (0x1u << 20) /**< \brief (HSMCI_IMR) Response Time-out Error Interrupt Mask */ +#define HSMCI_IMR_DCRCE (0x1u << 21) /**< \brief (HSMCI_IMR) Data CRC Error Interrupt Mask */ +#define HSMCI_IMR_DTOE (0x1u << 22) /**< \brief (HSMCI_IMR) Data Time-out Error Interrupt Mask */ +#define HSMCI_IMR_CSTOE (0x1u << 23) /**< \brief (HSMCI_IMR) Completion Signal Time-out Error Interrupt Mask */ +#define HSMCI_IMR_BLKOVRE (0x1u << 24) /**< \brief (HSMCI_IMR) DMA Block Overrun Error Interrupt Mask */ +#define HSMCI_IMR_FIFOEMPTY (0x1u << 26) /**< \brief (HSMCI_IMR) FIFO Empty Interrupt Mask */ +#define HSMCI_IMR_XFRDONE (0x1u << 27) /**< \brief (HSMCI_IMR) Transfer Done Interrupt Mask */ +#define HSMCI_IMR_ACKRCV (0x1u << 28) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Received Interrupt Mask */ +#define HSMCI_IMR_ACKRCVE (0x1u << 29) /**< \brief (HSMCI_IMR) Boot Operation Acknowledge Error Interrupt Mask */ +#define HSMCI_IMR_OVRE (0x1u << 30) /**< \brief (HSMCI_IMR) Overrun Interrupt Mask */ +#define HSMCI_IMR_UNRE (0x1u << 31) /**< \brief (HSMCI_IMR) Underrun Interrupt Mask */ +/* -------- HSMCI_DMA : (HSMCI Offset: 0x50) DMA Configuration Register -------- */ +#define HSMCI_DMA_CHKSIZE_Pos 4 +#define HSMCI_DMA_CHKSIZE_Msk (0x7u << HSMCI_DMA_CHKSIZE_Pos) /**< \brief (HSMCI_DMA) DMA Channel Read and Write Chunk Size */ +#define HSMCI_DMA_CHKSIZE(value) ((HSMCI_DMA_CHKSIZE_Msk & ((value) << HSMCI_DMA_CHKSIZE_Pos))) +#define HSMCI_DMA_CHKSIZE_1 (0x0u << 4) /**< \brief (HSMCI_DMA) 1 data available */ +#define HSMCI_DMA_CHKSIZE_2 (0x1u << 4) /**< \brief (HSMCI_DMA) 2 data available */ +#define HSMCI_DMA_CHKSIZE_4 (0x2u << 4) /**< \brief (HSMCI_DMA) 4 data available */ +#define HSMCI_DMA_CHKSIZE_8 (0x3u << 4) /**< \brief (HSMCI_DMA) 8 data available */ +#define HSMCI_DMA_CHKSIZE_16 (0x4u << 4) /**< \brief (HSMCI_DMA) 16 data available */ +#define HSMCI_DMA_DMAEN (0x1u << 8) /**< \brief (HSMCI_DMA) DMA Hardware Handshaking Enable */ +/* -------- HSMCI_CFG : (HSMCI Offset: 0x54) Configuration Register -------- */ +#define HSMCI_CFG_FIFOMODE (0x1u << 0) /**< \brief (HSMCI_CFG) HSMCI Internal FIFO control mode */ +#define HSMCI_CFG_FERRCTRL (0x1u << 4) /**< \brief (HSMCI_CFG) Flow Error flag reset control mode */ +#define HSMCI_CFG_HSMODE (0x1u << 8) /**< \brief (HSMCI_CFG) High Speed Mode */ +#define HSMCI_CFG_LSYNC (0x1u << 12) /**< \brief (HSMCI_CFG) Synchronize on the last block */ +/* -------- HSMCI_WPMR : (HSMCI Offset: 0xE4) Write Protection Mode Register -------- */ +#define HSMCI_WPMR_WPEN (0x1u << 0) /**< \brief (HSMCI_WPMR) Write Protect Enable */ +#define HSMCI_WPMR_WPKEY_Pos 8 +#define HSMCI_WPMR_WPKEY_Msk (0xffffffu << HSMCI_WPMR_WPKEY_Pos) /**< \brief (HSMCI_WPMR) Write Protect Key */ +#define HSMCI_WPMR_WPKEY(value) ((HSMCI_WPMR_WPKEY_Msk & ((value) << HSMCI_WPMR_WPKEY_Pos))) +#define HSMCI_WPMR_WPKEY_PASSWD (0x4D4349u << 8) /**< \brief (HSMCI_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- HSMCI_WPSR : (HSMCI Offset: 0xE8) Write Protection Status Register -------- */ +#define HSMCI_WPSR_WPVS (0x1u << 0) /**< \brief (HSMCI_WPSR) Write Protection Violation Status */ +#define HSMCI_WPSR_WPVSRC_Pos 8 +#define HSMCI_WPSR_WPVSRC_Msk (0xffffu << HSMCI_WPSR_WPVSRC_Pos) /**< \brief (HSMCI_WPSR) Write Protection Violation Source */ +/* -------- HSMCI_VERSION : (HSMCI Offset: 0xFC) Version Register -------- */ +#define HSMCI_VERSION_VERSION_Pos 0 +#define HSMCI_VERSION_VERSION_Msk (0xfffu << HSMCI_VERSION_VERSION_Pos) /**< \brief (HSMCI_VERSION) Hardware Module Version */ +#define HSMCI_VERSION_MFN_Pos 16 +#define HSMCI_VERSION_MFN_Msk (0x7u << HSMCI_VERSION_MFN_Pos) /**< \brief (HSMCI_VERSION) Metal Fix Number */ +/* -------- HSMCI_FIFO[256] : (HSMCI Offset: 0x200) FIFO Memory Aperture0 -------- */ +#define HSMCI_FIFO_DATA_Pos 0 +#define HSMCI_FIFO_DATA_Msk (0xffffffffu << HSMCI_FIFO_DATA_Pos) /**< \brief (HSMCI_FIFO[256]) Data to Read or Data to Write */ +#define HSMCI_FIFO_DATA(value) ((HSMCI_FIFO_DATA_Msk & ((value) << HSMCI_FIFO_DATA_Pos))) + +/*@}*/ + + +#endif /* _SAME70_HSMCI_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h new file mode 100644 index 00000000..ea0afdbe --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h @@ -0,0 +1,174 @@ +/** + * \file + * + * Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_I2SC_COMPONENT_ +#define _SAME70_I2SC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Inter-IC Sound Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_I2SC Inter-IC Sound Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief I2sc hardware registers */ +typedef struct { + __O uint32_t I2SC_CR; /**< \brief (I2sc Offset: 0x00) Control Register */ + __IO uint32_t I2SC_MR; /**< \brief (I2sc Offset: 0x04) Mode Register */ + __I uint32_t I2SC_SR; /**< \brief (I2sc Offset: 0x08) Status Register */ + __O uint32_t I2SC_SCR; /**< \brief (I2sc Offset: 0x0C) Status Clear Register */ + __O uint32_t I2SC_SSR; /**< \brief (I2sc Offset: 0x10) Status Set Register */ + __O uint32_t I2SC_IER; /**< \brief (I2sc Offset: 0x14) Interrupt Enable Register */ + __O uint32_t I2SC_IDR; /**< \brief (I2sc Offset: 0x18) Interrupt Disable Register */ + __I uint32_t I2SC_IMR; /**< \brief (I2sc Offset: 0x1C) Interrupt Mask Register */ + __I uint32_t I2SC_RHR; /**< \brief (I2sc Offset: 0x20) Receiver Holding Register */ + __O uint32_t I2SC_THR; /**< \brief (I2sc Offset: 0x24) Transmitter Holding Register */ + __I uint32_t I2SC_VERSION; /**< \brief (I2sc Offset: 0x28) Version Register */ +} I2sc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- I2SC_CR : (I2SC Offset: 0x00) Control Register -------- */ +#define I2SC_CR_RXEN (0x1u << 0) /**< \brief (I2SC_CR) Receiver Enable */ +#define I2SC_CR_RXDIS (0x1u << 1) /**< \brief (I2SC_CR) Receiver Disable */ +#define I2SC_CR_CKEN (0x1u << 2) /**< \brief (I2SC_CR) Clocks Enable */ +#define I2SC_CR_CKDIS (0x1u << 3) /**< \brief (I2SC_CR) Clocks Disable */ +#define I2SC_CR_TXEN (0x1u << 4) /**< \brief (I2SC_CR) Transmitter Enable */ +#define I2SC_CR_TXDIS (0x1u << 5) /**< \brief (I2SC_CR) Transmitter Disable */ +#define I2SC_CR_SWRST (0x1u << 7) /**< \brief (I2SC_CR) Software Reset */ +/* -------- I2SC_MR : (I2SC Offset: 0x04) Mode Register -------- */ +#define I2SC_MR_MODE (0x1u << 0) /**< \brief (I2SC_MR) Inter-IC Sound Controller Mode */ +#define I2SC_MR_MODE_SLAVE (0x0u << 0) /**< \brief (I2SC_MR) I2SCK and i2SWS pin inputs used as bit clock and word select/frame synchronization. */ +#define I2SC_MR_MODE_MASTER (0x1u << 0) /**< \brief (I2SC_MR) Bit clock and word select/frame synchronization generated by I2SC from MCK and output to I2SCK and I2SWS pins. MCK is output as master clock on I2SMCK if I2SC_MR.IMCKMODE is set. */ +#define I2SC_MR_DATALENGTH_Pos 2 +#define I2SC_MR_DATALENGTH_Msk (0x7u << I2SC_MR_DATALENGTH_Pos) /**< \brief (I2SC_MR) Data Word Length */ +#define I2SC_MR_DATALENGTH(value) ((I2SC_MR_DATALENGTH_Msk & ((value) << I2SC_MR_DATALENGTH_Pos))) +#define I2SC_MR_DATALENGTH_32_BITS (0x0u << 2) /**< \brief (I2SC_MR) Data length is set to 32 bits */ +#define I2SC_MR_DATALENGTH_24_BITS (0x1u << 2) /**< \brief (I2SC_MR) Data length is set to 24 bits */ +#define I2SC_MR_DATALENGTH_20_BITS (0x2u << 2) /**< \brief (I2SC_MR) Data length is set to 20 bits */ +#define I2SC_MR_DATALENGTH_18_BITS (0x3u << 2) /**< \brief (I2SC_MR) Data length is set to 18 bits */ +#define I2SC_MR_DATALENGTH_16_BITS (0x4u << 2) /**< \brief (I2SC_MR) Data length is set to 16 bits */ +#define I2SC_MR_DATALENGTH_16_BITS_COMPACT (0x5u << 2) /**< \brief (I2SC_MR) Data length is set to 16-bit compact stereo. Left sample in bits 15:0 and right sample in bits 31:16 of same word. */ +#define I2SC_MR_DATALENGTH_8_BITS (0x6u << 2) /**< \brief (I2SC_MR) Data length is set to 8 bits */ +#define I2SC_MR_DATALENGTH_8_BITS_COMPACT (0x7u << 2) /**< \brief (I2SC_MR) Data length is set to 8-bit compact stereo. Left sample in bits 7:0 and right sample in bits 15:8 of the same word. */ +#define I2SC_MR_FORMAT_Pos 6 +#define I2SC_MR_FORMAT_Msk (0x3u << I2SC_MR_FORMAT_Pos) /**< \brief (I2SC_MR) Data Format */ +#define I2SC_MR_FORMAT(value) ((I2SC_MR_FORMAT_Msk & ((value) << I2SC_MR_FORMAT_Pos))) +#define I2SC_MR_FORMAT_I2S (0x0u << 6) /**< \brief (I2SC_MR) I2S format, stereo with I2SWS low for left channel, and MSB of sample starting one I2SCK period after I2SWS edge */ +#define I2SC_MR_FORMAT_LJ (0x1u << 6) /**< \brief (I2SC_MR) Left-justified format, stereo with I2SWS high for left channel, and MSB of sample starting on I2SWS edge */ +#define I2SC_MR_RXMONO (0x1u << 8) /**< \brief (I2SC_MR) Receive Mono */ +#define I2SC_MR_RXDMA (0x1u << 9) /**< \brief (I2SC_MR) Single or Multiple DMA Controller Channels for Receiver */ +#define I2SC_MR_RXLOOP (0x1u << 10) /**< \brief (I2SC_MR) Loop-back Test Mode */ +#define I2SC_MR_TXMONO (0x1u << 12) /**< \brief (I2SC_MR) Transmit Mono */ +#define I2SC_MR_TXDMA (0x1u << 13) /**< \brief (I2SC_MR) Single or Multiple DMA Controller Channels for Transmitter */ +#define I2SC_MR_TXSAME (0x1u << 14) /**< \brief (I2SC_MR) Transmit Data when Underrun */ +#define I2SC_MR_IMCKDIV_Pos 16 +#define I2SC_MR_IMCKDIV_Msk (0x3fu << I2SC_MR_IMCKDIV_Pos) /**< \brief (I2SC_MR) Selected Clock to I2SC Master Clock Ratio */ +#define I2SC_MR_IMCKDIV(value) ((I2SC_MR_IMCKDIV_Msk & ((value) << I2SC_MR_IMCKDIV_Pos))) +#define I2SC_MR_IMCKFS_Pos 24 +#define I2SC_MR_IMCKFS_Msk (0x3fu << I2SC_MR_IMCKFS_Pos) /**< \brief (I2SC_MR) Master Clock to fs Ratio */ +#define I2SC_MR_IMCKFS(value) ((I2SC_MR_IMCKFS_Msk & ((value) << I2SC_MR_IMCKFS_Pos))) +#define I2SC_MR_IMCKFS_M2SF32 (0x0u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 32 */ +#define I2SC_MR_IMCKFS_M2SF64 (0x1u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 64 */ +#define I2SC_MR_IMCKFS_M2SF96 (0x2u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 96 */ +#define I2SC_MR_IMCKFS_M2SF128 (0x3u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 128 */ +#define I2SC_MR_IMCKFS_M2SF192 (0x5u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 192 */ +#define I2SC_MR_IMCKFS_M2SF256 (0x7u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 256 */ +#define I2SC_MR_IMCKFS_M2SF384 (0xBu << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 384 */ +#define I2SC_MR_IMCKFS_M2SF512 (0xFu << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 512 */ +#define I2SC_MR_IMCKFS_M2SF768 (0x17u << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 768 */ +#define I2SC_MR_IMCKFS_M2SF1024 (0x1Fu << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 1024 */ +#define I2SC_MR_IMCKFS_M2SF1536 (0x2Fu << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 1536 */ +#define I2SC_MR_IMCKFS_M2SF2048 (0x3Fu << 24) /**< \brief (I2SC_MR) Sample frequency ratio set to 2048 */ +#define I2SC_MR_IMCKMODE (0x1u << 30) /**< \brief (I2SC_MR) Master Clock Mode */ +#define I2SC_MR_IWS (0x1u << 31) /**< \brief (I2SC_MR) I2SWS Slot Width */ +/* -------- I2SC_SR : (I2SC Offset: 0x08) Status Register -------- */ +#define I2SC_SR_RXEN (0x1u << 0) /**< \brief (I2SC_SR) Receiver Enabled */ +#define I2SC_SR_RXRDY (0x1u << 1) /**< \brief (I2SC_SR) Receive Ready */ +#define I2SC_SR_RXOR (0x1u << 2) /**< \brief (I2SC_SR) Receive Overrun */ +#define I2SC_SR_TXEN (0x1u << 4) /**< \brief (I2SC_SR) Transmitter Enabled */ +#define I2SC_SR_TXRDY (0x1u << 5) /**< \brief (I2SC_SR) Transmit Ready */ +#define I2SC_SR_TXUR (0x1u << 6) /**< \brief (I2SC_SR) Transmit Underrun */ +#define I2SC_SR_RXORCH_Pos 8 +#define I2SC_SR_RXORCH_Msk (0x3u << I2SC_SR_RXORCH_Pos) /**< \brief (I2SC_SR) Receive Overrun Channel */ +#define I2SC_SR_TXURCH_Pos 20 +#define I2SC_SR_TXURCH_Msk (0x3u << I2SC_SR_TXURCH_Pos) /**< \brief (I2SC_SR) Transmit Underrun Channel */ +/* -------- I2SC_SCR : (I2SC Offset: 0x0C) Status Clear Register -------- */ +#define I2SC_SCR_RXOR (0x1u << 2) /**< \brief (I2SC_SCR) Receive Overrun Status Clear */ +#define I2SC_SCR_TXUR (0x1u << 6) /**< \brief (I2SC_SCR) Transmit Underrun Status Clear */ +#define I2SC_SCR_RXORCH_Pos 8 +#define I2SC_SCR_RXORCH_Msk (0x3u << I2SC_SCR_RXORCH_Pos) /**< \brief (I2SC_SCR) Receive Overrun Per Channel Status Clear */ +#define I2SC_SCR_RXORCH(value) ((I2SC_SCR_RXORCH_Msk & ((value) << I2SC_SCR_RXORCH_Pos))) +#define I2SC_SCR_TXURCH_Pos 20 +#define I2SC_SCR_TXURCH_Msk (0x3u << I2SC_SCR_TXURCH_Pos) /**< \brief (I2SC_SCR) Transmit Underrun Per Channel Status Clear */ +#define I2SC_SCR_TXURCH(value) ((I2SC_SCR_TXURCH_Msk & ((value) << I2SC_SCR_TXURCH_Pos))) +/* -------- I2SC_SSR : (I2SC Offset: 0x10) Status Set Register -------- */ +#define I2SC_SSR_RXOR (0x1u << 2) /**< \brief (I2SC_SSR) Receive Overrun Status Set */ +#define I2SC_SSR_TXUR (0x1u << 6) /**< \brief (I2SC_SSR) Transmit Underrun Status Set */ +#define I2SC_SSR_RXORCH_Pos 8 +#define I2SC_SSR_RXORCH_Msk (0x3u << I2SC_SSR_RXORCH_Pos) /**< \brief (I2SC_SSR) Receive Overrun Per Channel Status Set */ +#define I2SC_SSR_RXORCH(value) ((I2SC_SSR_RXORCH_Msk & ((value) << I2SC_SSR_RXORCH_Pos))) +#define I2SC_SSR_TXURCH_Pos 20 +#define I2SC_SSR_TXURCH_Msk (0x3u << I2SC_SSR_TXURCH_Pos) /**< \brief (I2SC_SSR) Transmit Underrun Per Channel Status Set */ +#define I2SC_SSR_TXURCH(value) ((I2SC_SSR_TXURCH_Msk & ((value) << I2SC_SSR_TXURCH_Pos))) +/* -------- I2SC_IER : (I2SC Offset: 0x14) Interrupt Enable Register -------- */ +#define I2SC_IER_RXRDY (0x1u << 1) /**< \brief (I2SC_IER) Receiver Ready Interrupt Enable */ +#define I2SC_IER_RXOR (0x1u << 2) /**< \brief (I2SC_IER) Receiver Overrun Interrupt Enable */ +#define I2SC_IER_TXRDY (0x1u << 5) /**< \brief (I2SC_IER) Transmit Ready Interrupt Enable */ +#define I2SC_IER_TXUR (0x1u << 6) /**< \brief (I2SC_IER) Transmit Underflow Interrupt Enable */ +/* -------- I2SC_IDR : (I2SC Offset: 0x18) Interrupt Disable Register -------- */ +#define I2SC_IDR_RXRDY (0x1u << 1) /**< \brief (I2SC_IDR) Receiver Ready Interrupt Disable */ +#define I2SC_IDR_RXOR (0x1u << 2) /**< \brief (I2SC_IDR) Receiver Overrun Interrupt Disable */ +#define I2SC_IDR_TXRDY (0x1u << 5) /**< \brief (I2SC_IDR) Transmit Ready Interrupt Disable */ +#define I2SC_IDR_TXUR (0x1u << 6) /**< \brief (I2SC_IDR) Transmit Underflow Interrupt Disable */ +/* -------- I2SC_IMR : (I2SC Offset: 0x1C) Interrupt Mask Register -------- */ +#define I2SC_IMR_RXRDY (0x1u << 1) /**< \brief (I2SC_IMR) Receiver Ready Interrupt Disable */ +#define I2SC_IMR_RXOR (0x1u << 2) /**< \brief (I2SC_IMR) Receiver Overrun Interrupt Disable */ +#define I2SC_IMR_TXRDY (0x1u << 5) /**< \brief (I2SC_IMR) Transmit Ready Interrupt Disable */ +#define I2SC_IMR_TXUR (0x1u << 6) /**< \brief (I2SC_IMR) Transmit Underflow Interrupt Disable */ +/* -------- I2SC_RHR : (I2SC Offset: 0x20) Receiver Holding Register -------- */ +#define I2SC_RHR_RHR_Pos 0 +#define I2SC_RHR_RHR_Msk (0xffffffffu << I2SC_RHR_RHR_Pos) /**< \brief (I2SC_RHR) Receiver Holding Register */ +/* -------- I2SC_THR : (I2SC Offset: 0x24) Transmitter Holding Register -------- */ +#define I2SC_THR_THR_Pos 0 +#define I2SC_THR_THR_Msk (0xffffffffu << I2SC_THR_THR_Pos) /**< \brief (I2SC_THR) Transmitter Holding Register */ +#define I2SC_THR_THR(value) ((I2SC_THR_THR_Msk & ((value) << I2SC_THR_THR_Pos))) +/* -------- I2SC_VERSION : (I2SC Offset: 0x28) Version Register -------- */ +#define I2SC_VERSION_VERSION_Pos 0 +#define I2SC_VERSION_VERSION_Msk (0xfffu << I2SC_VERSION_VERSION_Pos) /**< \brief (I2SC_VERSION) Version of the Hardware Module */ +#define I2SC_VERSION_MFN_Pos 16 +#define I2SC_VERSION_MFN_Msk (0x7u << I2SC_VERSION_MFN_Pos) /**< \brief (I2SC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_I2SC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h new file mode 100644 index 00000000..98a4e3fa --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h @@ -0,0 +1,229 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_ICM_COMPONENT_ +#define _SAME70_ICM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Integrity Check Monitor */ +/* ============================================================================= */ +/** \addtogroup SAME70_ICM Integrity Check Monitor */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Icm hardware registers */ +typedef struct { + __IO uint32_t ICM_CFG; /**< \brief (Icm Offset: 0x00) Configuration Register */ + __O uint32_t ICM_CTRL; /**< \brief (Icm Offset: 0x04) Control Register */ + __I uint32_t ICM_SR; /**< \brief (Icm Offset: 0x08) Status Register */ + __I uint32_t Reserved1[1]; + __O uint32_t ICM_IER; /**< \brief (Icm Offset: 0x10) Interrupt Enable Register */ + __O uint32_t ICM_IDR; /**< \brief (Icm Offset: 0x14) Interrupt Disable Register */ + __I uint32_t ICM_IMR; /**< \brief (Icm Offset: 0x18) Interrupt Mask Register */ + __I uint32_t ICM_ISR; /**< \brief (Icm Offset: 0x1C) Interrupt Status Register */ + __I uint32_t ICM_UASR; /**< \brief (Icm Offset: 0x20) Undefined Access Status Register */ + __I uint32_t Reserved2[3]; + __IO uint32_t ICM_DSCR; /**< \brief (Icm Offset: 0x30) Region Descriptor Area Start Address Register */ + __IO uint32_t ICM_HASH; /**< \brief (Icm Offset: 0x34) Region Hash Area Start Address Register */ + __O uint32_t ICM_UIHVAL[8]; /**< \brief (Icm Offset: 0x38) User Initial Hash Value 0 Register */ + __I uint32_t Reserved3[37]; + __I uint32_t ICM_ADDRSIZE; /**< \brief (Icm Offset: 0xEC) Address Size Register */ + __I uint32_t ICM_IPNAME[2]; /**< \brief (Icm Offset: 0xF0) IP Name 1 Register */ + __I uint32_t ICM_FEATURES; /**< \brief (Icm Offset: 0xF8) Feature Register */ + __I uint32_t ICM_VERSION; /**< \brief (Icm Offset: 0xFC) Version Register */ +} Icm; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- ICM_CFG : (ICM Offset: 0x00) Configuration Register -------- */ +#define ICM_CFG_WBDIS (0x1u << 0) /**< \brief (ICM_CFG) Write Back Disable */ +#define ICM_CFG_EOMDIS (0x1u << 1) /**< \brief (ICM_CFG) End of Monitoring Disable */ +#define ICM_CFG_SLBDIS (0x1u << 2) /**< \brief (ICM_CFG) Secondary List Branching Disable */ +#define ICM_CFG_BBC_Pos 4 +#define ICM_CFG_BBC_Msk (0xfu << ICM_CFG_BBC_Pos) /**< \brief (ICM_CFG) Bus Burden Control */ +#define ICM_CFG_BBC(value) ((ICM_CFG_BBC_Msk & ((value) << ICM_CFG_BBC_Pos))) +#define ICM_CFG_ASCD (0x1u << 8) /**< \brief (ICM_CFG) Automatic Switch To Compare Digest */ +#define ICM_CFG_DUALBUFF (0x1u << 9) /**< \brief (ICM_CFG) Dual Input Buffer */ +#define ICM_CFG_UIHASH (0x1u << 12) /**< \brief (ICM_CFG) User Initial Hash Value */ +#define ICM_CFG_UALGO_Pos 13 +#define ICM_CFG_UALGO_Msk (0x7u << ICM_CFG_UALGO_Pos) /**< \brief (ICM_CFG) User SHA Algorithm */ +#define ICM_CFG_UALGO(value) ((ICM_CFG_UALGO_Msk & ((value) << ICM_CFG_UALGO_Pos))) +#define ICM_CFG_UALGO_SHA1 (0x0u << 13) /**< \brief (ICM_CFG) SHA1 algorithm processed */ +#define ICM_CFG_UALGO_SHA256 (0x1u << 13) /**< \brief (ICM_CFG) SHA256 algorithm processed */ +#define ICM_CFG_UALGO_SHA224 (0x4u << 13) /**< \brief (ICM_CFG) SHA224 algorithm processed */ +#define ICM_CFG_HAPROT_Pos 16 +#define ICM_CFG_HAPROT_Msk (0x3fu << ICM_CFG_HAPROT_Pos) /**< \brief (ICM_CFG) Region Hash Area Protection */ +#define ICM_CFG_HAPROT(value) ((ICM_CFG_HAPROT_Msk & ((value) << ICM_CFG_HAPROT_Pos))) +#define ICM_CFG_DAPROT_Pos 24 +#define ICM_CFG_DAPROT_Msk (0x3fu << ICM_CFG_DAPROT_Pos) /**< \brief (ICM_CFG) Region Descriptor Area Protection */ +#define ICM_CFG_DAPROT(value) ((ICM_CFG_DAPROT_Msk & ((value) << ICM_CFG_DAPROT_Pos))) +/* -------- ICM_CTRL : (ICM Offset: 0x04) Control Register -------- */ +#define ICM_CTRL_ENABLE (0x1u << 0) /**< \brief (ICM_CTRL) ICM Enable */ +#define ICM_CTRL_DISABLE (0x1u << 1) /**< \brief (ICM_CTRL) ICM Disable Register */ +#define ICM_CTRL_SWRST (0x1u << 2) /**< \brief (ICM_CTRL) Software Reset */ +#define ICM_CTRL_REHASH_Pos 4 +#define ICM_CTRL_REHASH_Msk (0xfu << ICM_CTRL_REHASH_Pos) /**< \brief (ICM_CTRL) Recompute Internal Hash */ +#define ICM_CTRL_REHASH(value) ((ICM_CTRL_REHASH_Msk & ((value) << ICM_CTRL_REHASH_Pos))) +#define ICM_CTRL_RMDIS_Pos 8 +#define ICM_CTRL_RMDIS_Msk (0xfu << ICM_CTRL_RMDIS_Pos) /**< \brief (ICM_CTRL) Region Monitoring Disable */ +#define ICM_CTRL_RMDIS(value) ((ICM_CTRL_RMDIS_Msk & ((value) << ICM_CTRL_RMDIS_Pos))) +#define ICM_CTRL_RMEN_Pos 12 +#define ICM_CTRL_RMEN_Msk (0xfu << ICM_CTRL_RMEN_Pos) /**< \brief (ICM_CTRL) Region Monitoring Enable */ +#define ICM_CTRL_RMEN(value) ((ICM_CTRL_RMEN_Msk & ((value) << ICM_CTRL_RMEN_Pos))) +/* -------- ICM_SR : (ICM Offset: 0x08) Status Register -------- */ +#define ICM_SR_ENABLE (0x1u << 0) /**< \brief (ICM_SR) ICM Controller Enable Register */ +#define ICM_SR_RAWRMDIS_Pos 8 +#define ICM_SR_RAWRMDIS_Msk (0xfu << ICM_SR_RAWRMDIS_Pos) /**< \brief (ICM_SR) RAW Region Monitoring Disabled Status */ +#define ICM_SR_RAWRMDIS(value) ((ICM_SR_RAWRMDIS_Msk & ((value) << ICM_SR_RAWRMDIS_Pos))) +#define ICM_SR_RMDIS_Pos 12 +#define ICM_SR_RMDIS_Msk (0xfu << ICM_SR_RMDIS_Pos) /**< \brief (ICM_SR) Region Monitoring Disabled Status */ +#define ICM_SR_RMDIS(value) ((ICM_SR_RMDIS_Msk & ((value) << ICM_SR_RMDIS_Pos))) +/* -------- ICM_IER : (ICM Offset: 0x10) Interrupt Enable Register -------- */ +#define ICM_IER_RHC_Pos 0 +#define ICM_IER_RHC_Msk (0xfu << ICM_IER_RHC_Pos) /**< \brief (ICM_IER) Region Hash Completed Interrupt Enable */ +#define ICM_IER_RHC(value) ((ICM_IER_RHC_Msk & ((value) << ICM_IER_RHC_Pos))) +#define ICM_IER_RDM_Pos 4 +#define ICM_IER_RDM_Msk (0xfu << ICM_IER_RDM_Pos) /**< \brief (ICM_IER) Region Digest Mismatch Interrupt Enable */ +#define ICM_IER_RDM(value) ((ICM_IER_RDM_Msk & ((value) << ICM_IER_RDM_Pos))) +#define ICM_IER_RBE_Pos 8 +#define ICM_IER_RBE_Msk (0xfu << ICM_IER_RBE_Pos) /**< \brief (ICM_IER) Region Bus Error Interrupt Enable */ +#define ICM_IER_RBE(value) ((ICM_IER_RBE_Msk & ((value) << ICM_IER_RBE_Pos))) +#define ICM_IER_RWC_Pos 12 +#define ICM_IER_RWC_Msk (0xfu << ICM_IER_RWC_Pos) /**< \brief (ICM_IER) Region Wrap Condition detected Interrupt Enable */ +#define ICM_IER_RWC(value) ((ICM_IER_RWC_Msk & ((value) << ICM_IER_RWC_Pos))) +#define ICM_IER_REC_Pos 16 +#define ICM_IER_REC_Msk (0xfu << ICM_IER_REC_Pos) /**< \brief (ICM_IER) Region End bit Condition Detected Interrupt Enable */ +#define ICM_IER_REC(value) ((ICM_IER_REC_Msk & ((value) << ICM_IER_REC_Pos))) +#define ICM_IER_RSU_Pos 20 +#define ICM_IER_RSU_Msk (0xfu << ICM_IER_RSU_Pos) /**< \brief (ICM_IER) Region Status Updated Interrupt Disable */ +#define ICM_IER_RSU(value) ((ICM_IER_RSU_Msk & ((value) << ICM_IER_RSU_Pos))) +#define ICM_IER_URAD (0x1u << 24) /**< \brief (ICM_IER) Undefined Register Access Detection Interrupt Enable */ +/* -------- ICM_IDR : (ICM Offset: 0x14) Interrupt Disable Register -------- */ +#define ICM_IDR_RHC_Pos 0 +#define ICM_IDR_RHC_Msk (0xfu << ICM_IDR_RHC_Pos) /**< \brief (ICM_IDR) Region Hash Completed Interrupt Disable */ +#define ICM_IDR_RHC(value) ((ICM_IDR_RHC_Msk & ((value) << ICM_IDR_RHC_Pos))) +#define ICM_IDR_RDM_Pos 4 +#define ICM_IDR_RDM_Msk (0xfu << ICM_IDR_RDM_Pos) /**< \brief (ICM_IDR) Region Digest Mismatch Interrupt Disable */ +#define ICM_IDR_RDM(value) ((ICM_IDR_RDM_Msk & ((value) << ICM_IDR_RDM_Pos))) +#define ICM_IDR_RBE_Pos 8 +#define ICM_IDR_RBE_Msk (0xfu << ICM_IDR_RBE_Pos) /**< \brief (ICM_IDR) Region Bus Error Interrupt Disable */ +#define ICM_IDR_RBE(value) ((ICM_IDR_RBE_Msk & ((value) << ICM_IDR_RBE_Pos))) +#define ICM_IDR_RWC_Pos 12 +#define ICM_IDR_RWC_Msk (0xfu << ICM_IDR_RWC_Pos) /**< \brief (ICM_IDR) Region Wrap Condition Detected Interrupt Disable */ +#define ICM_IDR_RWC(value) ((ICM_IDR_RWC_Msk & ((value) << ICM_IDR_RWC_Pos))) +#define ICM_IDR_REC_Pos 16 +#define ICM_IDR_REC_Msk (0xfu << ICM_IDR_REC_Pos) /**< \brief (ICM_IDR) Region End bit Condition detected Interrupt Disable */ +#define ICM_IDR_REC(value) ((ICM_IDR_REC_Msk & ((value) << ICM_IDR_REC_Pos))) +#define ICM_IDR_RSU_Pos 20 +#define ICM_IDR_RSU_Msk (0xfu << ICM_IDR_RSU_Pos) /**< \brief (ICM_IDR) Region Status Updated Interrupt Disable */ +#define ICM_IDR_RSU(value) ((ICM_IDR_RSU_Msk & ((value) << ICM_IDR_RSU_Pos))) +#define ICM_IDR_URAD (0x1u << 24) /**< \brief (ICM_IDR) Undefined Register Access Detection Interrupt Disable */ +/* -------- ICM_IMR : (ICM Offset: 0x18) Interrupt Mask Register -------- */ +#define ICM_IMR_RHC_Pos 0 +#define ICM_IMR_RHC_Msk (0xfu << ICM_IMR_RHC_Pos) /**< \brief (ICM_IMR) Region Hash Completed Interrupt Mask */ +#define ICM_IMR_RDM_Pos 4 +#define ICM_IMR_RDM_Msk (0xfu << ICM_IMR_RDM_Pos) /**< \brief (ICM_IMR) Region Digest Mismatch Interrupt Mask */ +#define ICM_IMR_RBE_Pos 8 +#define ICM_IMR_RBE_Msk (0xfu << ICM_IMR_RBE_Pos) /**< \brief (ICM_IMR) Region Bus Error Interrupt Mask */ +#define ICM_IMR_RWC_Pos 12 +#define ICM_IMR_RWC_Msk (0xfu << ICM_IMR_RWC_Pos) /**< \brief (ICM_IMR) Region Wrap Condition Detected Interrupt Mask */ +#define ICM_IMR_REC_Pos 16 +#define ICM_IMR_REC_Msk (0xfu << ICM_IMR_REC_Pos) /**< \brief (ICM_IMR) Region End bit Condition Detected Interrupt Mask */ +#define ICM_IMR_RSU_Pos 20 +#define ICM_IMR_RSU_Msk (0xfu << ICM_IMR_RSU_Pos) /**< \brief (ICM_IMR) Region Status Updated Interrupt Mask */ +#define ICM_IMR_URAD (0x1u << 24) /**< \brief (ICM_IMR) Undefined Register Access Detection Interrupt Mask */ +/* -------- ICM_ISR : (ICM Offset: 0x1C) Interrupt Status Register -------- */ +#define ICM_ISR_RHC_Pos 0 +#define ICM_ISR_RHC_Msk (0xfu << ICM_ISR_RHC_Pos) /**< \brief (ICM_ISR) Region Hash Completed */ +#define ICM_ISR_RDM_Pos 4 +#define ICM_ISR_RDM_Msk (0xfu << ICM_ISR_RDM_Pos) /**< \brief (ICM_ISR) Region Digest Mismatch */ +#define ICM_ISR_RBE_Pos 8 +#define ICM_ISR_RBE_Msk (0xfu << ICM_ISR_RBE_Pos) /**< \brief (ICM_ISR) Region Bus Error */ +#define ICM_ISR_RWC_Pos 12 +#define ICM_ISR_RWC_Msk (0xfu << ICM_ISR_RWC_Pos) /**< \brief (ICM_ISR) Region Wrap Condition Detected */ +#define ICM_ISR_REC_Pos 16 +#define ICM_ISR_REC_Msk (0xfu << ICM_ISR_REC_Pos) /**< \brief (ICM_ISR) Region End bit Condition Detected */ +#define ICM_ISR_RSU_Pos 20 +#define ICM_ISR_RSU_Msk (0xfu << ICM_ISR_RSU_Pos) /**< \brief (ICM_ISR) Region Status Updated Detected */ +#define ICM_ISR_URAD (0x1u << 24) /**< \brief (ICM_ISR) Undefined Register Access Detection Status */ +/* -------- ICM_UASR : (ICM Offset: 0x20) Undefined Access Status Register -------- */ +#define ICM_UASR_URAT_Pos 0 +#define ICM_UASR_URAT_Msk (0x7u << ICM_UASR_URAT_Pos) /**< \brief (ICM_UASR) Undefined Register Access Trace */ +#define ICM_UASR_URAT_UNSPEC_STRUCT_MEMBER (0x0u << 0) /**< \brief (ICM_UASR) Unspecified structure member set to one detected when the descriptor is loaded. */ +#define ICM_UASR_URAT_ICM_CFG_MODIFIED (0x1u << 0) /**< \brief (ICM_UASR) ICM_CFG modified during active monitoring. */ +#define ICM_UASR_URAT_ICM_DSCR_MODIFIED (0x2u << 0) /**< \brief (ICM_UASR) ICM_DSCR modified during active monitoring. */ +#define ICM_UASR_URAT_ICM_HASH_MODIFIED (0x3u << 0) /**< \brief (ICM_UASR) ICM_HASH modified during active monitoring */ +#define ICM_UASR_URAT_READ_ACCESS (0x4u << 0) /**< \brief (ICM_UASR) Write-only register read access */ +/* -------- ICM_DSCR : (ICM Offset: 0x30) Region Descriptor Area Start Address Register -------- */ +#define ICM_DSCR_DASA_Pos 6 +#define ICM_DSCR_DASA_Msk (0x3ffffffu << ICM_DSCR_DASA_Pos) /**< \brief (ICM_DSCR) Descriptor Area Start Address */ +#define ICM_DSCR_DASA(value) ((ICM_DSCR_DASA_Msk & ((value) << ICM_DSCR_DASA_Pos))) +/* -------- ICM_HASH : (ICM Offset: 0x34) Region Hash Area Start Address Register -------- */ +#define ICM_HASH_HASA_Pos 7 +#define ICM_HASH_HASA_Msk (0x1ffffffu << ICM_HASH_HASA_Pos) /**< \brief (ICM_HASH) Hash Area Start Address */ +#define ICM_HASH_HASA(value) ((ICM_HASH_HASA_Msk & ((value) << ICM_HASH_HASA_Pos))) +/* -------- ICM_UIHVAL[8] : (ICM Offset: 0x38) User Initial Hash Value 0 Register -------- */ +#define ICM_UIHVAL_VAL_Pos 0 +#define ICM_UIHVAL_VAL_Msk (0xffffffffu << ICM_UIHVAL_VAL_Pos) /**< \brief (ICM_UIHVAL[8]) Initial Hash Value */ +#define ICM_UIHVAL_VAL(value) ((ICM_UIHVAL_VAL_Msk & ((value) << ICM_UIHVAL_VAL_Pos))) +/* -------- ICM_ADDRSIZE : (ICM Offset: 0xEC) Address Size Register -------- */ +#define ICM_ADDRSIZE_ADDRSIZE_Pos 0 +#define ICM_ADDRSIZE_ADDRSIZE_Msk (0xffffu << ICM_ADDRSIZE_ADDRSIZE_Pos) /**< \brief (ICM_ADDRSIZE) Peripheral Bus Address Area Size */ +/* -------- ICM_IPNAME[2] : (ICM Offset: 0xF0) IP Name 1 Register -------- */ +#define ICM_IPNAME_IPNAME_Pos 0 +#define ICM_IPNAME_IPNAME_Msk (0xffffffffu << ICM_IPNAME_IPNAME_Pos) /**< \brief (ICM_IPNAME[2]) IP Name in ASCII Format */ +/* -------- ICM_FEATURES : (ICM Offset: 0xF8) Feature Register -------- */ +#define ICM_FEATURES_CFGALGO (0x1u << 0) /**< \brief (ICM_FEATURES) Configurable Algorithms */ +#define ICM_FEATURES_RFU (0x1u << 1) /**< \brief (ICM_FEATURES) Reserved for Future Use */ +#define ICM_FEATURES_CFGPP (0x1u << 2) /**< \brief (ICM_FEATURES) Configurable Processing Period */ +#define ICM_FEATURES_HDPP (0x1u << 3) /**< \brief (ICM_FEATURES) Hardcoded Processing Period */ +#define ICM_FEATURES_PDC (0x1u << 4) /**< \brief (ICM_FEATURES) Peripheral DMA Logic */ +#define ICM_FEATURES_NAIS (0x1u << 5) /**< \brief (ICM_FEATURES) No Access to Intermediate State */ +#define ICM_FEATURES_EF (0x1u << 6) /**< \brief (ICM_FEATURES) Embedded LFSR */ +#define ICM_FEATURES_SI (0x1u << 7) /**< \brief (ICM_FEATURES) Scan Intrusion */ +#define ICM_FEATURES_BTYP (0x1u << 8) /**< \brief (ICM_FEATURES) Bridge Type */ +#define ICM_FEATURES_PDCOFF0C (0x1u << 9) /**< \brief (ICM_FEATURES) PDC Offset is 0x0C */ +#define ICM_FEATURES_HSHA1 (0x1u << 16) /**< \brief (ICM_FEATURES) SHA1 Hardcoded Mode */ +#define ICM_FEATURES_HSHA224 (0x1u << 17) /**< \brief (ICM_FEATURES) SHA224 Hardcoded Mode */ +#define ICM_FEATURES_HSHA256 (0x1u << 18) /**< \brief (ICM_FEATURES) SHA256 Hardcoded Mode */ +#define ICM_FEATURES_HSHA384 (0x1u << 19) /**< \brief (ICM_FEATURES) SHA384 Hardcoded Mode */ +#define ICM_FEATURES_HSHA512 (0x1u << 20) /**< \brief (ICM_FEATURES) SHA512 Hardcoded Mode */ +/* -------- ICM_VERSION : (ICM Offset: 0xFC) Version Register -------- */ +#define ICM_VERSION_VERSION_Pos 0 +#define ICM_VERSION_VERSION_Msk (0xfffu << ICM_VERSION_VERSION_Pos) /**< \brief (ICM_VERSION) Version of the Hardware Module */ +#define ICM_VERSION_MFN_Pos 16 +#define ICM_VERSION_MFN_Msk (0x7u << ICM_VERSION_MFN_Pos) /**< \brief (ICM_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_ICM_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h new file mode 100644 index 00000000..c4467413 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h @@ -0,0 +1,293 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_ISI_COMPONENT_ +#define _SAME70_ISI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Image Sensor Interface */ +/* ============================================================================= */ +/** \addtogroup SAME70_ISI Image Sensor Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Isi hardware registers */ +typedef struct { + __IO uint32_t ISI_CFG1; /**< \brief (Isi Offset: 0x00) ISI Configuration 1 Register */ + __IO uint32_t ISI_CFG2; /**< \brief (Isi Offset: 0x04) ISI Configuration 2 Register */ + __IO uint32_t ISI_PSIZE; /**< \brief (Isi Offset: 0x08) ISI Preview Size Register */ + __IO uint32_t ISI_PDECF; /**< \brief (Isi Offset: 0x0C) ISI Preview Decimation Factor Register */ + __IO uint32_t ISI_Y2R_SET0; /**< \brief (Isi Offset: 0x10) ISI Color Space Conversion YCrCb To RGB Set 0 Register */ + __IO uint32_t ISI_Y2R_SET1; /**< \brief (Isi Offset: 0x14) ISI Color Space Conversion YCrCb To RGB Set 1 Register */ + __IO uint32_t ISI_R2Y_SET0; /**< \brief (Isi Offset: 0x18) ISI Color Space Conversion RGB To YCrCb Set 0 Register */ + __IO uint32_t ISI_R2Y_SET1; /**< \brief (Isi Offset: 0x1C) ISI Color Space Conversion RGB To YCrCb Set 1 Register */ + __IO uint32_t ISI_R2Y_SET2; /**< \brief (Isi Offset: 0x20) ISI Color Space Conversion RGB To YCrCb Set 2 Register */ + __O uint32_t ISI_CR; /**< \brief (Isi Offset: 0x24) ISI Control Register */ + __I uint32_t ISI_SR; /**< \brief (Isi Offset: 0x28) ISI Status Register */ + __O uint32_t ISI_IER; /**< \brief (Isi Offset: 0x2C) ISI Interrupt Enable Register */ + __O uint32_t ISI_IDR; /**< \brief (Isi Offset: 0x30) ISI Interrupt Disable Register */ + __I uint32_t ISI_IMR; /**< \brief (Isi Offset: 0x34) ISI Interrupt Mask Register */ + __O uint32_t ISI_DMA_CHER; /**< \brief (Isi Offset: 0x38) DMA Channel Enable Register */ + __O uint32_t ISI_DMA_CHDR; /**< \brief (Isi Offset: 0x3C) DMA Channel Disable Register */ + __I uint32_t ISI_DMA_CHSR; /**< \brief (Isi Offset: 0x40) DMA Channel Status Register */ + __IO uint32_t ISI_DMA_P_ADDR; /**< \brief (Isi Offset: 0x44) DMA Preview Base Address Register */ + __IO uint32_t ISI_DMA_P_CTRL; /**< \brief (Isi Offset: 0x48) DMA Preview Control Register */ + __IO uint32_t ISI_DMA_P_DSCR; /**< \brief (Isi Offset: 0x4C) DMA Preview Descriptor Address Register */ + __IO uint32_t ISI_DMA_C_ADDR; /**< \brief (Isi Offset: 0x50) DMA Codec Base Address Register */ + __IO uint32_t ISI_DMA_C_CTRL; /**< \brief (Isi Offset: 0x54) DMA Codec Control Register */ + __IO uint32_t ISI_DMA_C_DSCR; /**< \brief (Isi Offset: 0x58) DMA Codec Descriptor Address Register */ + __I uint32_t Reserved1[34]; + __IO uint32_t ISI_WPMR; /**< \brief (Isi Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t ISI_WPSR; /**< \brief (Isi Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved2[4]; + __I uint32_t ISI_VERSION; /**< \brief (Isi Offset: 0xFC) Version Register */ +} Isi; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- ISI_CFG1 : (ISI Offset: 0x00) ISI Configuration 1 Register -------- */ +#define ISI_CFG1_HSYNC_POL (0x1u << 2) /**< \brief (ISI_CFG1) Horizontal Synchronization Polarity */ +#define ISI_CFG1_VSYNC_POL (0x1u << 3) /**< \brief (ISI_CFG1) Vertical Synchronization Polarity */ +#define ISI_CFG1_PIXCLK_POL (0x1u << 4) /**< \brief (ISI_CFG1) Pixel Clock Polarity */ +#define ISI_CFG1_GRAYLE (0x1u << 5) /**< \brief (ISI_CFG1) Grayscale Little Endian */ +#define ISI_CFG1_EMB_SYNC (0x1u << 6) /**< \brief (ISI_CFG1) Embedded Synchronization */ +#define ISI_CFG1_CRC_SYNC (0x1u << 7) /**< \brief (ISI_CFG1) Embedded Synchronization Correction */ +#define ISI_CFG1_FRATE_Pos 8 +#define ISI_CFG1_FRATE_Msk (0x7u << ISI_CFG1_FRATE_Pos) /**< \brief (ISI_CFG1) Frame Rate [0..7] */ +#define ISI_CFG1_FRATE(value) ((ISI_CFG1_FRATE_Msk & ((value) << ISI_CFG1_FRATE_Pos))) +#define ISI_CFG1_DISCR (0x1u << 11) /**< \brief (ISI_CFG1) Disable Codec Request */ +#define ISI_CFG1_FULL (0x1u << 12) /**< \brief (ISI_CFG1) Full Mode is Allowed */ +#define ISI_CFG1_THMASK_Pos 13 +#define ISI_CFG1_THMASK_Msk (0x3u << ISI_CFG1_THMASK_Pos) /**< \brief (ISI_CFG1) Threshold Mask */ +#define ISI_CFG1_THMASK(value) ((ISI_CFG1_THMASK_Msk & ((value) << ISI_CFG1_THMASK_Pos))) +#define ISI_CFG1_THMASK_BEATS_4 (0x0u << 13) /**< \brief (ISI_CFG1) Only 4 beats AHB burst allowed */ +#define ISI_CFG1_THMASK_BEATS_8 (0x1u << 13) /**< \brief (ISI_CFG1) Only 4 and 8 beats AHB burst allowed */ +#define ISI_CFG1_THMASK_BEATS_16 (0x2u << 13) /**< \brief (ISI_CFG1) 4, 8 and 16 beats AHB burst allowed */ +#define ISI_CFG1_SLD_Pos 16 +#define ISI_CFG1_SLD_Msk (0xffu << ISI_CFG1_SLD_Pos) /**< \brief (ISI_CFG1) Start of Line Delay */ +#define ISI_CFG1_SLD(value) ((ISI_CFG1_SLD_Msk & ((value) << ISI_CFG1_SLD_Pos))) +#define ISI_CFG1_SFD_Pos 24 +#define ISI_CFG1_SFD_Msk (0xffu << ISI_CFG1_SFD_Pos) /**< \brief (ISI_CFG1) Start of Frame Delay */ +#define ISI_CFG1_SFD(value) ((ISI_CFG1_SFD_Msk & ((value) << ISI_CFG1_SFD_Pos))) +/* -------- ISI_CFG2 : (ISI Offset: 0x04) ISI Configuration 2 Register -------- */ +#define ISI_CFG2_IM_VSIZE_Pos 0 +#define ISI_CFG2_IM_VSIZE_Msk (0x7ffu << ISI_CFG2_IM_VSIZE_Pos) /**< \brief (ISI_CFG2) Vertical Size of the Image Sensor [0..2047] */ +#define ISI_CFG2_IM_VSIZE(value) ((ISI_CFG2_IM_VSIZE_Msk & ((value) << ISI_CFG2_IM_VSIZE_Pos))) +#define ISI_CFG2_GS_MODE (0x1u << 11) /**< \brief (ISI_CFG2) Grayscale Pixel Format Mode */ +#define ISI_CFG2_RGB_MODE (0x1u << 12) /**< \brief (ISI_CFG2) RGB Input Mode */ +#define ISI_CFG2_GRAYSCALE (0x1u << 13) /**< \brief (ISI_CFG2) Grayscale Mode Format Enable */ +#define ISI_CFG2_RGB_SWAP (0x1u << 14) /**< \brief (ISI_CFG2) RGB Format Swap Mode */ +#define ISI_CFG2_COL_SPACE (0x1u << 15) /**< \brief (ISI_CFG2) Color Space for the Image Data */ +#define ISI_CFG2_IM_HSIZE_Pos 16 +#define ISI_CFG2_IM_HSIZE_Msk (0x7ffu << ISI_CFG2_IM_HSIZE_Pos) /**< \brief (ISI_CFG2) Horizontal Size of the Image Sensor [0..2047] */ +#define ISI_CFG2_IM_HSIZE(value) ((ISI_CFG2_IM_HSIZE_Msk & ((value) << ISI_CFG2_IM_HSIZE_Pos))) +#define ISI_CFG2_YCC_SWAP_Pos 28 +#define ISI_CFG2_YCC_SWAP_Msk (0x3u << ISI_CFG2_YCC_SWAP_Pos) /**< \brief (ISI_CFG2) YCrCb Format Swap Mode */ +#define ISI_CFG2_YCC_SWAP(value) ((ISI_CFG2_YCC_SWAP_Msk & ((value) << ISI_CFG2_YCC_SWAP_Pos))) +#define ISI_CFG2_YCC_SWAP_DEFAULT (0x0u << 28) /**< \brief (ISI_CFG2) Byte 0 Cb(i)Byte 1 Y(i)Byte 2 Cr(i)Byte 3 Y(i+1) */ +#define ISI_CFG2_YCC_SWAP_MODE1 (0x1u << 28) /**< \brief (ISI_CFG2) Byte 0 Cr(i)Byte 1 Y(i)Byte 2 Cb(i)Byte 3 Y(i+1) */ +#define ISI_CFG2_YCC_SWAP_MODE2 (0x2u << 28) /**< \brief (ISI_CFG2) Byte 0 Y(i)Byte 1 Cb(i)Byte 2 Y(i+1)Byte 3 Cr(i) */ +#define ISI_CFG2_YCC_SWAP_MODE3 (0x3u << 28) /**< \brief (ISI_CFG2) Byte 0 Y(i)Byte 1 Cr(i)Byte 2 Y(i+1)Byte 3 Cb(i) */ +#define ISI_CFG2_RGB_CFG_Pos 30 +#define ISI_CFG2_RGB_CFG_Msk (0x3u << ISI_CFG2_RGB_CFG_Pos) /**< \brief (ISI_CFG2) RGB Pixel Mapping Configuration */ +#define ISI_CFG2_RGB_CFG(value) ((ISI_CFG2_RGB_CFG_Msk & ((value) << ISI_CFG2_RGB_CFG_Pos))) +#define ISI_CFG2_RGB_CFG_DEFAULT (0x0u << 30) /**< \brief (ISI_CFG2) Byte 0 R/G(MSB)Byte 1 G(LSB)/BByte 2 R/G(MSB)Byte 3 G(LSB)/B */ +#define ISI_CFG2_RGB_CFG_MODE1 (0x1u << 30) /**< \brief (ISI_CFG2) Byte 0 B/G(MSB)Byte 1 G(LSB)/RByte 2 B/G(MSB)Byte 3 G(LSB)/R */ +#define ISI_CFG2_RGB_CFG_MODE2 (0x2u << 30) /**< \brief (ISI_CFG2) Byte 0 G(LSB)/RByte 1 B/G(MSB)Byte 2 G(LSB)/RByte 3 B/G(MSB) */ +#define ISI_CFG2_RGB_CFG_MODE3 (0x3u << 30) /**< \brief (ISI_CFG2) Byte 0 G(LSB)/BByte 1 R/G(MSB)Byte 2 G(LSB)/BByte 3 R/G(MSB) */ +/* -------- ISI_PSIZE : (ISI Offset: 0x08) ISI Preview Size Register -------- */ +#define ISI_PSIZE_PREV_VSIZE_Pos 0 +#define ISI_PSIZE_PREV_VSIZE_Msk (0x3ffu << ISI_PSIZE_PREV_VSIZE_Pos) /**< \brief (ISI_PSIZE) Vertical Size for the Preview Path */ +#define ISI_PSIZE_PREV_VSIZE(value) ((ISI_PSIZE_PREV_VSIZE_Msk & ((value) << ISI_PSIZE_PREV_VSIZE_Pos))) +#define ISI_PSIZE_PREV_HSIZE_Pos 16 +#define ISI_PSIZE_PREV_HSIZE_Msk (0x3ffu << ISI_PSIZE_PREV_HSIZE_Pos) /**< \brief (ISI_PSIZE) Horizontal Size for the Preview Path */ +#define ISI_PSIZE_PREV_HSIZE(value) ((ISI_PSIZE_PREV_HSIZE_Msk & ((value) << ISI_PSIZE_PREV_HSIZE_Pos))) +/* -------- ISI_PDECF : (ISI Offset: 0x0C) ISI Preview Decimation Factor Register -------- */ +#define ISI_PDECF_DEC_FACTOR_Pos 0 +#define ISI_PDECF_DEC_FACTOR_Msk (0xffu << ISI_PDECF_DEC_FACTOR_Pos) /**< \brief (ISI_PDECF) Decimation Factor */ +#define ISI_PDECF_DEC_FACTOR(value) ((ISI_PDECF_DEC_FACTOR_Msk & ((value) << ISI_PDECF_DEC_FACTOR_Pos))) +/* -------- ISI_Y2R_SET0 : (ISI Offset: 0x10) ISI Color Space Conversion YCrCb To RGB Set 0 Register -------- */ +#define ISI_Y2R_SET0_C0_Pos 0 +#define ISI_Y2R_SET0_C0_Msk (0xffu << ISI_Y2R_SET0_C0_Pos) /**< \brief (ISI_Y2R_SET0) Color Space Conversion Matrix Coefficient C0 */ +#define ISI_Y2R_SET0_C0(value) ((ISI_Y2R_SET0_C0_Msk & ((value) << ISI_Y2R_SET0_C0_Pos))) +#define ISI_Y2R_SET0_C1_Pos 8 +#define ISI_Y2R_SET0_C1_Msk (0xffu << ISI_Y2R_SET0_C1_Pos) /**< \brief (ISI_Y2R_SET0) Color Space Conversion Matrix Coefficient C1 */ +#define ISI_Y2R_SET0_C1(value) ((ISI_Y2R_SET0_C1_Msk & ((value) << ISI_Y2R_SET0_C1_Pos))) +#define ISI_Y2R_SET0_C2_Pos 16 +#define ISI_Y2R_SET0_C2_Msk (0xffu << ISI_Y2R_SET0_C2_Pos) /**< \brief (ISI_Y2R_SET0) Color Space Conversion Matrix Coefficient C2 */ +#define ISI_Y2R_SET0_C2(value) ((ISI_Y2R_SET0_C2_Msk & ((value) << ISI_Y2R_SET0_C2_Pos))) +#define ISI_Y2R_SET0_C3_Pos 24 +#define ISI_Y2R_SET0_C3_Msk (0xffu << ISI_Y2R_SET0_C3_Pos) /**< \brief (ISI_Y2R_SET0) Color Space Conversion Matrix Coefficient C3 */ +#define ISI_Y2R_SET0_C3(value) ((ISI_Y2R_SET0_C3_Msk & ((value) << ISI_Y2R_SET0_C3_Pos))) +/* -------- ISI_Y2R_SET1 : (ISI Offset: 0x14) ISI Color Space Conversion YCrCb To RGB Set 1 Register -------- */ +#define ISI_Y2R_SET1_C4_Pos 0 +#define ISI_Y2R_SET1_C4_Msk (0x1ffu << ISI_Y2R_SET1_C4_Pos) /**< \brief (ISI_Y2R_SET1) Color Space Conversion Matrix Coefficient C4 */ +#define ISI_Y2R_SET1_C4(value) ((ISI_Y2R_SET1_C4_Msk & ((value) << ISI_Y2R_SET1_C4_Pos))) +#define ISI_Y2R_SET1_Yoff (0x1u << 12) /**< \brief (ISI_Y2R_SET1) Color Space Conversion Luminance Default Offset */ +#define ISI_Y2R_SET1_Croff (0x1u << 13) /**< \brief (ISI_Y2R_SET1) Color Space Conversion Red Chrominance Default Offset */ +#define ISI_Y2R_SET1_Cboff (0x1u << 14) /**< \brief (ISI_Y2R_SET1) Color Space Conversion Blue Chrominance Default Offset */ +/* -------- ISI_R2Y_SET0 : (ISI Offset: 0x18) ISI Color Space Conversion RGB To YCrCb Set 0 Register -------- */ +#define ISI_R2Y_SET0_C0_Pos 0 +#define ISI_R2Y_SET0_C0_Msk (0x7fu << ISI_R2Y_SET0_C0_Pos) /**< \brief (ISI_R2Y_SET0) Color Space Conversion Matrix Coefficient C0 */ +#define ISI_R2Y_SET0_C0(value) ((ISI_R2Y_SET0_C0_Msk & ((value) << ISI_R2Y_SET0_C0_Pos))) +#define ISI_R2Y_SET0_C1_Pos 8 +#define ISI_R2Y_SET0_C1_Msk (0x7fu << ISI_R2Y_SET0_C1_Pos) /**< \brief (ISI_R2Y_SET0) Color Space Conversion Matrix Coefficient C1 */ +#define ISI_R2Y_SET0_C1(value) ((ISI_R2Y_SET0_C1_Msk & ((value) << ISI_R2Y_SET0_C1_Pos))) +#define ISI_R2Y_SET0_C2_Pos 16 +#define ISI_R2Y_SET0_C2_Msk (0x7fu << ISI_R2Y_SET0_C2_Pos) /**< \brief (ISI_R2Y_SET0) Color Space Conversion Matrix Coefficient C2 */ +#define ISI_R2Y_SET0_C2(value) ((ISI_R2Y_SET0_C2_Msk & ((value) << ISI_R2Y_SET0_C2_Pos))) +#define ISI_R2Y_SET0_Roff (0x1u << 24) /**< \brief (ISI_R2Y_SET0) Color Space Conversion Red Component Offset */ +/* -------- ISI_R2Y_SET1 : (ISI Offset: 0x1C) ISI Color Space Conversion RGB To YCrCb Set 1 Register -------- */ +#define ISI_R2Y_SET1_C3_Pos 0 +#define ISI_R2Y_SET1_C3_Msk (0x7fu << ISI_R2Y_SET1_C3_Pos) /**< \brief (ISI_R2Y_SET1) Color Space Conversion Matrix Coefficient C3 */ +#define ISI_R2Y_SET1_C3(value) ((ISI_R2Y_SET1_C3_Msk & ((value) << ISI_R2Y_SET1_C3_Pos))) +#define ISI_R2Y_SET1_C4_Pos 8 +#define ISI_R2Y_SET1_C4_Msk (0x7fu << ISI_R2Y_SET1_C4_Pos) /**< \brief (ISI_R2Y_SET1) Color Space Conversion Matrix Coefficient C4 */ +#define ISI_R2Y_SET1_C4(value) ((ISI_R2Y_SET1_C4_Msk & ((value) << ISI_R2Y_SET1_C4_Pos))) +#define ISI_R2Y_SET1_C5_Pos 16 +#define ISI_R2Y_SET1_C5_Msk (0x7fu << ISI_R2Y_SET1_C5_Pos) /**< \brief (ISI_R2Y_SET1) Color Space Conversion Matrix Coefficient C5 */ +#define ISI_R2Y_SET1_C5(value) ((ISI_R2Y_SET1_C5_Msk & ((value) << ISI_R2Y_SET1_C5_Pos))) +#define ISI_R2Y_SET1_Goff (0x1u << 24) /**< \brief (ISI_R2Y_SET1) Color Space Conversion Green Component Offset */ +/* -------- ISI_R2Y_SET2 : (ISI Offset: 0x20) ISI Color Space Conversion RGB To YCrCb Set 2 Register -------- */ +#define ISI_R2Y_SET2_C6_Pos 0 +#define ISI_R2Y_SET2_C6_Msk (0x7fu << ISI_R2Y_SET2_C6_Pos) /**< \brief (ISI_R2Y_SET2) Color Space Conversion Matrix Coefficient C6 */ +#define ISI_R2Y_SET2_C6(value) ((ISI_R2Y_SET2_C6_Msk & ((value) << ISI_R2Y_SET2_C6_Pos))) +#define ISI_R2Y_SET2_C7_Pos 8 +#define ISI_R2Y_SET2_C7_Msk (0x7fu << ISI_R2Y_SET2_C7_Pos) /**< \brief (ISI_R2Y_SET2) Color Space Conversion Matrix Coefficient C7 */ +#define ISI_R2Y_SET2_C7(value) ((ISI_R2Y_SET2_C7_Msk & ((value) << ISI_R2Y_SET2_C7_Pos))) +#define ISI_R2Y_SET2_C8_Pos 16 +#define ISI_R2Y_SET2_C8_Msk (0x7fu << ISI_R2Y_SET2_C8_Pos) /**< \brief (ISI_R2Y_SET2) Color Space Conversion Matrix Coefficient C8 */ +#define ISI_R2Y_SET2_C8(value) ((ISI_R2Y_SET2_C8_Msk & ((value) << ISI_R2Y_SET2_C8_Pos))) +#define ISI_R2Y_SET2_Boff (0x1u << 24) /**< \brief (ISI_R2Y_SET2) Color Space Conversion Blue Component Offset */ +/* -------- ISI_CR : (ISI Offset: 0x24) ISI Control Register -------- */ +#define ISI_CR_ISI_EN (0x1u << 0) /**< \brief (ISI_CR) ISI Module Enable Request */ +#define ISI_CR_ISI_DIS (0x1u << 1) /**< \brief (ISI_CR) ISI Module Disable Request */ +#define ISI_CR_ISI_SRST (0x1u << 2) /**< \brief (ISI_CR) ISI Software Reset Request */ +#define ISI_CR_ISI_CDC (0x1u << 8) /**< \brief (ISI_CR) ISI Codec Request */ +/* -------- ISI_SR : (ISI Offset: 0x28) ISI Status Register -------- */ +#define ISI_SR_ENABLE (0x1u << 0) /**< \brief (ISI_SR) Module Enable */ +#define ISI_SR_DIS_DONE (0x1u << 1) /**< \brief (ISI_SR) Module Disable Request has Terminated (cleared on read) */ +#define ISI_SR_SRST (0x1u << 2) /**< \brief (ISI_SR) Module Software Reset Request has Terminated (cleared on read) */ +#define ISI_SR_CDC_PND (0x1u << 8) /**< \brief (ISI_SR) Pending Codec Request */ +#define ISI_SR_VSYNC (0x1u << 10) /**< \brief (ISI_SR) Vertical Synchronization (cleared on read) */ +#define ISI_SR_PXFR_DONE (0x1u << 16) /**< \brief (ISI_SR) Preview DMA Transfer has Terminated (cleared on read) */ +#define ISI_SR_CXFR_DONE (0x1u << 17) /**< \brief (ISI_SR) Codec DMA Transfer has Terminated (cleared on read) */ +#define ISI_SR_SIP (0x1u << 19) /**< \brief (ISI_SR) Synchronization in Progress */ +#define ISI_SR_P_OVR (0x1u << 24) /**< \brief (ISI_SR) Preview Datapath Overflow (cleared on read) */ +#define ISI_SR_C_OVR (0x1u << 25) /**< \brief (ISI_SR) Codec Datapath Overflow (cleared on read) */ +#define ISI_SR_CRC_ERR (0x1u << 26) /**< \brief (ISI_SR) CRC Synchronization Error (cleared on read) */ +#define ISI_SR_FR_OVR (0x1u << 27) /**< \brief (ISI_SR) Frame Rate Overrun (cleared on read) */ +/* -------- ISI_IER : (ISI Offset: 0x2C) ISI Interrupt Enable Register -------- */ +#define ISI_IER_DIS_DONE (0x1u << 1) /**< \brief (ISI_IER) Disable Done Interrupt Enable */ +#define ISI_IER_SRST (0x1u << 2) /**< \brief (ISI_IER) Software Reset Interrupt Enable */ +#define ISI_IER_VSYNC (0x1u << 10) /**< \brief (ISI_IER) Vertical Synchronization Interrupt Enable */ +#define ISI_IER_PXFR_DONE (0x1u << 16) /**< \brief (ISI_IER) Preview DMA Transfer Done Interrupt Enable */ +#define ISI_IER_CXFR_DONE (0x1u << 17) /**< \brief (ISI_IER) Codec DMA Transfer Done Interrupt Enable */ +#define ISI_IER_P_OVR (0x1u << 24) /**< \brief (ISI_IER) Preview Datapath Overflow Interrupt Enable */ +#define ISI_IER_C_OVR (0x1u << 25) /**< \brief (ISI_IER) Codec Datapath Overflow Interrupt Enable */ +#define ISI_IER_CRC_ERR (0x1u << 26) /**< \brief (ISI_IER) Embedded Synchronization CRC Error Interrupt Enable */ +#define ISI_IER_FR_OVR (0x1u << 27) /**< \brief (ISI_IER) Frame Rate Overflow Interrupt Enable */ +/* -------- ISI_IDR : (ISI Offset: 0x30) ISI Interrupt Disable Register -------- */ +#define ISI_IDR_DIS_DONE (0x1u << 1) /**< \brief (ISI_IDR) Disable Done Interrupt Disable */ +#define ISI_IDR_SRST (0x1u << 2) /**< \brief (ISI_IDR) Software Reset Interrupt Disable */ +#define ISI_IDR_VSYNC (0x1u << 10) /**< \brief (ISI_IDR) Vertical Synchronization Interrupt Disable */ +#define ISI_IDR_PXFR_DONE (0x1u << 16) /**< \brief (ISI_IDR) Preview DMA Transfer Done Interrupt Disable */ +#define ISI_IDR_CXFR_DONE (0x1u << 17) /**< \brief (ISI_IDR) Codec DMA Transfer Done Interrupt Disable */ +#define ISI_IDR_P_OVR (0x1u << 24) /**< \brief (ISI_IDR) Preview Datapath Overflow Interrupt Disable */ +#define ISI_IDR_C_OVR (0x1u << 25) /**< \brief (ISI_IDR) Codec Datapath Overflow Interrupt Disable */ +#define ISI_IDR_CRC_ERR (0x1u << 26) /**< \brief (ISI_IDR) Embedded Synchronization CRC Error Interrupt Disable */ +#define ISI_IDR_FR_OVR (0x1u << 27) /**< \brief (ISI_IDR) Frame Rate Overflow Interrupt Disable */ +/* -------- ISI_IMR : (ISI Offset: 0x34) ISI Interrupt Mask Register -------- */ +#define ISI_IMR_DIS_DONE (0x1u << 1) /**< \brief (ISI_IMR) Module Disable Operation Completed */ +#define ISI_IMR_SRST (0x1u << 2) /**< \brief (ISI_IMR) Software Reset Completed */ +#define ISI_IMR_VSYNC (0x1u << 10) /**< \brief (ISI_IMR) Vertical Synchronization */ +#define ISI_IMR_PXFR_DONE (0x1u << 16) /**< \brief (ISI_IMR) Preview DMA Transfer Completed */ +#define ISI_IMR_CXFR_DONE (0x1u << 17) /**< \brief (ISI_IMR) Codec DMA Transfer Completed */ +#define ISI_IMR_P_OVR (0x1u << 24) /**< \brief (ISI_IMR) Preview FIFO Overflow */ +#define ISI_IMR_C_OVR (0x1u << 25) /**< \brief (ISI_IMR) Codec FIFO Overflow */ +#define ISI_IMR_CRC_ERR (0x1u << 26) /**< \brief (ISI_IMR) CRC Synchronization Error */ +#define ISI_IMR_FR_OVR (0x1u << 27) /**< \brief (ISI_IMR) Frame Rate Overrun */ +/* -------- ISI_DMA_CHER : (ISI Offset: 0x38) DMA Channel Enable Register -------- */ +#define ISI_DMA_CHER_P_CH_EN (0x1u << 0) /**< \brief (ISI_DMA_CHER) Preview Channel Enable */ +#define ISI_DMA_CHER_C_CH_EN (0x1u << 1) /**< \brief (ISI_DMA_CHER) Codec Channel Enable */ +/* -------- ISI_DMA_CHDR : (ISI Offset: 0x3C) DMA Channel Disable Register -------- */ +#define ISI_DMA_CHDR_P_CH_DIS (0x1u << 0) /**< \brief (ISI_DMA_CHDR) Preview Channel Disable Request */ +#define ISI_DMA_CHDR_C_CH_DIS (0x1u << 1) /**< \brief (ISI_DMA_CHDR) Codec Channel Disable Request */ +/* -------- ISI_DMA_CHSR : (ISI Offset: 0x40) DMA Channel Status Register -------- */ +#define ISI_DMA_CHSR_P_CH_S (0x1u << 0) /**< \brief (ISI_DMA_CHSR) Preview DMA Channel Status */ +#define ISI_DMA_CHSR_C_CH_S (0x1u << 1) /**< \brief (ISI_DMA_CHSR) Code DMA Channel Status */ +/* -------- ISI_DMA_P_ADDR : (ISI Offset: 0x44) DMA Preview Base Address Register -------- */ +#define ISI_DMA_P_ADDR_P_ADDR_Pos 2 +#define ISI_DMA_P_ADDR_P_ADDR_Msk (0x3fffffffu << ISI_DMA_P_ADDR_P_ADDR_Pos) /**< \brief (ISI_DMA_P_ADDR) Preview Image Base Address */ +#define ISI_DMA_P_ADDR_P_ADDR(value) ((ISI_DMA_P_ADDR_P_ADDR_Msk & ((value) << ISI_DMA_P_ADDR_P_ADDR_Pos))) +/* -------- ISI_DMA_P_CTRL : (ISI Offset: 0x48) DMA Preview Control Register -------- */ +#define ISI_DMA_P_CTRL_P_FETCH (0x1u << 0) /**< \brief (ISI_DMA_P_CTRL) Descriptor Fetch Control Bit */ +#define ISI_DMA_P_CTRL_P_WB (0x1u << 1) /**< \brief (ISI_DMA_P_CTRL) Descriptor Writeback Control Bit */ +#define ISI_DMA_P_CTRL_P_IEN (0x1u << 2) /**< \brief (ISI_DMA_P_CTRL) Transfer Done Flag Control */ +#define ISI_DMA_P_CTRL_P_DONE (0x1u << 3) /**< \brief (ISI_DMA_P_CTRL) Preview Transfer Done */ +/* -------- ISI_DMA_P_DSCR : (ISI Offset: 0x4C) DMA Preview Descriptor Address Register -------- */ +#define ISI_DMA_P_DSCR_P_DSCR_Pos 2 +#define ISI_DMA_P_DSCR_P_DSCR_Msk (0x3fffffffu << ISI_DMA_P_DSCR_P_DSCR_Pos) /**< \brief (ISI_DMA_P_DSCR) Preview Descriptor Base Address */ +#define ISI_DMA_P_DSCR_P_DSCR(value) ((ISI_DMA_P_DSCR_P_DSCR_Msk & ((value) << ISI_DMA_P_DSCR_P_DSCR_Pos))) +/* -------- ISI_DMA_C_ADDR : (ISI Offset: 0x50) DMA Codec Base Address Register -------- */ +#define ISI_DMA_C_ADDR_C_ADDR_Pos 2 +#define ISI_DMA_C_ADDR_C_ADDR_Msk (0x3fffffffu << ISI_DMA_C_ADDR_C_ADDR_Pos) /**< \brief (ISI_DMA_C_ADDR) Codec Image Base Address */ +#define ISI_DMA_C_ADDR_C_ADDR(value) ((ISI_DMA_C_ADDR_C_ADDR_Msk & ((value) << ISI_DMA_C_ADDR_C_ADDR_Pos))) +/* -------- ISI_DMA_C_CTRL : (ISI Offset: 0x54) DMA Codec Control Register -------- */ +#define ISI_DMA_C_CTRL_C_FETCH (0x1u << 0) /**< \brief (ISI_DMA_C_CTRL) Descriptor Fetch Control Bit */ +#define ISI_DMA_C_CTRL_C_WB (0x1u << 1) /**< \brief (ISI_DMA_C_CTRL) Descriptor Writeback Control Bit */ +#define ISI_DMA_C_CTRL_C_IEN (0x1u << 2) /**< \brief (ISI_DMA_C_CTRL) Transfer Done Flag Control */ +#define ISI_DMA_C_CTRL_C_DONE (0x1u << 3) /**< \brief (ISI_DMA_C_CTRL) Codec Transfer Done */ +/* -------- ISI_DMA_C_DSCR : (ISI Offset: 0x58) DMA Codec Descriptor Address Register -------- */ +#define ISI_DMA_C_DSCR_C_DSCR_Pos 2 +#define ISI_DMA_C_DSCR_C_DSCR_Msk (0x3fffffffu << ISI_DMA_C_DSCR_C_DSCR_Pos) /**< \brief (ISI_DMA_C_DSCR) Codec Descriptor Base Address */ +#define ISI_DMA_C_DSCR_C_DSCR(value) ((ISI_DMA_C_DSCR_C_DSCR_Msk & ((value) << ISI_DMA_C_DSCR_C_DSCR_Pos))) +/* -------- ISI_WPMR : (ISI Offset: 0xE4) Write Protection Mode Register -------- */ +#define ISI_WPMR_WPEN (0x1u << 0) /**< \brief (ISI_WPMR) Write Protection Enable */ +#define ISI_WPMR_WPKEY_Pos 8 +#define ISI_WPMR_WPKEY_Msk (0xffffffu << ISI_WPMR_WPKEY_Pos) /**< \brief (ISI_WPMR) Write Protection Key Password */ +#define ISI_WPMR_WPKEY(value) ((ISI_WPMR_WPKEY_Msk & ((value) << ISI_WPMR_WPKEY_Pos))) +#define ISI_WPMR_WPKEY_PASSWD (0x495349u << 8) /**< \brief (ISI_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- ISI_WPSR : (ISI Offset: 0xE8) Write Protection Status Register -------- */ +#define ISI_WPSR_WPVS (0x1u << 0) /**< \brief (ISI_WPSR) Write Protection Violation Status */ +#define ISI_WPSR_WPVSRC_Pos 8 +#define ISI_WPSR_WPVSRC_Msk (0xffffu << ISI_WPSR_WPVSRC_Pos) /**< \brief (ISI_WPSR) Write Protection Violation Source */ +/* -------- ISI_VERSION : (ISI Offset: 0xFC) Version Register -------- */ +#define ISI_VERSION_VERSION_Pos 0 +#define ISI_VERSION_VERSION_Msk (0xfffu << ISI_VERSION_VERSION_Pos) /**< \brief (ISI_VERSION) Version of the Hardware Module */ +#define ISI_VERSION_MFN_Pos 16 +#define ISI_VERSION_MFN_Msk (0x7u << ISI_VERSION_MFN_Pos) /**< \brief (ISI_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_ISI_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h new file mode 100644 index 00000000..40d858f6 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h @@ -0,0 +1,328 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_MATRIX_COMPONENT_ +#define _SAME70_MATRIX_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR AHB Bus Matrix */ +/* ============================================================================= */ +/** \addtogroup SAME70_MATRIX AHB Bus Matrix */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief MatrixPr hardware registers */ +typedef struct { + __IO uint32_t MATRIX_PRAS; /**< \brief (MatrixPr Offset: 0x0) Priority Register A for Slave 0 */ + __IO uint32_t MATRIX_PRBS; /**< \brief (MatrixPr Offset: 0x4) Priority Register B for Slave 0 */ +} MatrixPr; +/** \brief Matrix hardware registers */ +#define MATRIXPR_NUMBER 9 +typedef struct { + __IO uint32_t MATRIX_MCFG0; /**< \brief (Matrix Offset: 0x0000) Master Configuration Register 0 */ + __IO uint32_t MATRIX_MCFG1; /**< \brief (Matrix Offset: 0x0004) Master Configuration Register 1 */ + __IO uint32_t MATRIX_MCFG2; /**< \brief (Matrix Offset: 0x0008) Master Configuration Register 2 */ + __IO uint32_t MATRIX_MCFG3; /**< \brief (Matrix Offset: 0x000C) Master Configuration Register 3 */ + __IO uint32_t MATRIX_MCFG4; /**< \brief (Matrix Offset: 0x0010) Master Configuration Register 4 */ + __IO uint32_t MATRIX_MCFG5; /**< \brief (Matrix Offset: 0x0014) Master Configuration Register 5 */ + __IO uint32_t MATRIX_MCFG6; /**< \brief (Matrix Offset: 0x0018) Master Configuration Register 6 */ + __I uint32_t Reserved1[1]; + __IO uint32_t MATRIX_MCFG8; /**< \brief (Matrix Offset: 0x0020) Master Configuration Register 8 */ + __IO uint32_t MATRIX_MCFG9; /**< \brief (Matrix Offset: 0x0024) Master Configuration Register 9 */ + __IO uint32_t MATRIX_MCFG10; /**< \brief (Matrix Offset: 0x0028) Master Configuration Register 10 */ + __IO uint32_t MATRIX_MCFG11; /**< \brief (Matrix Offset: 0x002C) Master Configuration Register 11 */ + __IO uint32_t MATRIX_MCFG12; /**< \brief (Matrix Offset: 0x0030) Master Configuration Register 12 */ + __I uint32_t Reserved2[3]; + __IO uint32_t MATRIX_SCFG[9]; /**< \brief (Matrix Offset: 0x0040) Slave Configuration Register */ + __I uint32_t Reserved3[7]; + MatrixPr MATRIX_PR[MATRIXPR_NUMBER]; /**< \brief (Matrix Offset: 0x0080) 0 .. 8 */ + __I uint32_t Reserved4[14]; + __IO uint32_t MATRIX_MRCR; /**< \brief (Matrix Offset: 0x0100) Master Remap Control Register */ + __I uint32_t Reserved5[3]; + __IO uint32_t CCFG_CAN0; /**< \brief (Matrix Offset: 0x0110) CAN0 Configuration Register */ + __IO uint32_t CCFG_SYSIO; /**< \brief (Matrix Offset: 0x0114) System I/O and CAN1 Configuration Register */ + __IO uint32_t CCFG_PCCR; /**< \brief (Matrix Offset: 0x0118) Peripheral Clock Configuration Register */ + __IO uint32_t CCFG_DYNCFG; /**< \brief (Matrix Offset: 0x011C) Dynamic Clock Gating Register */ + __I uint32_t Reserved6[1]; + __IO uint32_t CCFG_SMCNFCS; /**< \brief (Matrix Offset: 0x0124) SMC NAND Flash Chip Select Configuration Register */ + __I uint32_t Reserved7[47]; + __IO uint32_t MATRIX_WPMR; /**< \brief (Matrix Offset: 0x01E4) Write Protection Mode Register */ + __I uint32_t MATRIX_WPSR; /**< \brief (Matrix Offset: 0x01E8) Write Protection Status Register */ + __I uint32_t Reserved8[4]; + __I uint32_t MATRIX_VERSION; /**< \brief (Matrix Offset: 0x01FC) Version Register */ +} Matrix; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- MATRIX_MCFG0 : (MATRIX Offset: 0x0000) Master Configuration Register 0 -------- */ +#define MATRIX_MCFG0_ULBT_Pos 0 +#define MATRIX_MCFG0_ULBT_Msk (0x7u << MATRIX_MCFG0_ULBT_Pos) /**< \brief (MATRIX_MCFG0) Undefined Length Burst Type */ +#define MATRIX_MCFG0_ULBT(value) ((MATRIX_MCFG0_ULBT_Msk & ((value) << MATRIX_MCFG0_ULBT_Pos))) +#define MATRIX_MCFG0_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG0) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG0_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG0) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG0_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG0) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG0_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG0) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG0_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG0) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG0_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG0) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG0_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG0) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG0_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG0) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG1 : (MATRIX Offset: 0x0004) Master Configuration Register 1 -------- */ +#define MATRIX_MCFG1_ULBT_Pos 0 +#define MATRIX_MCFG1_ULBT_Msk (0x7u << MATRIX_MCFG1_ULBT_Pos) /**< \brief (MATRIX_MCFG1) Undefined Length Burst Type */ +#define MATRIX_MCFG1_ULBT(value) ((MATRIX_MCFG1_ULBT_Msk & ((value) << MATRIX_MCFG1_ULBT_Pos))) +#define MATRIX_MCFG1_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG1) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG1_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG1) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG1_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG1) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG1_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG1) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG1_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG1) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG1_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG1) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG1_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG1) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG1_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG1) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG2 : (MATRIX Offset: 0x0008) Master Configuration Register 2 -------- */ +#define MATRIX_MCFG2_ULBT_Pos 0 +#define MATRIX_MCFG2_ULBT_Msk (0x7u << MATRIX_MCFG2_ULBT_Pos) /**< \brief (MATRIX_MCFG2) Undefined Length Burst Type */ +#define MATRIX_MCFG2_ULBT(value) ((MATRIX_MCFG2_ULBT_Msk & ((value) << MATRIX_MCFG2_ULBT_Pos))) +#define MATRIX_MCFG2_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG2) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG2_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG2) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG2_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG2) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG2_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG2) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG2_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG2) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG2_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG2) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG2_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG2) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG2_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG2) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG3 : (MATRIX Offset: 0x000C) Master Configuration Register 3 -------- */ +#define MATRIX_MCFG3_ULBT_Pos 0 +#define MATRIX_MCFG3_ULBT_Msk (0x7u << MATRIX_MCFG3_ULBT_Pos) /**< \brief (MATRIX_MCFG3) Undefined Length Burst Type */ +#define MATRIX_MCFG3_ULBT(value) ((MATRIX_MCFG3_ULBT_Msk & ((value) << MATRIX_MCFG3_ULBT_Pos))) +#define MATRIX_MCFG3_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG3) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG3_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG3) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG3_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG3) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG3_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG3) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG3_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG3) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG3_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG3) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG3_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG3) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG3_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG3) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG4 : (MATRIX Offset: 0x0010) Master Configuration Register 4 -------- */ +#define MATRIX_MCFG4_ULBT_Pos 0 +#define MATRIX_MCFG4_ULBT_Msk (0x7u << MATRIX_MCFG4_ULBT_Pos) /**< \brief (MATRIX_MCFG4) Undefined Length Burst Type */ +#define MATRIX_MCFG4_ULBT(value) ((MATRIX_MCFG4_ULBT_Msk & ((value) << MATRIX_MCFG4_ULBT_Pos))) +#define MATRIX_MCFG4_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG4) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG4_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG4) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG4_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG4) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG4_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG4) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG4_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG4) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG4_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG4) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG4_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG4) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG4_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG4) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG5 : (MATRIX Offset: 0x0014) Master Configuration Register 5 -------- */ +#define MATRIX_MCFG5_ULBT_Pos 0 +#define MATRIX_MCFG5_ULBT_Msk (0x7u << MATRIX_MCFG5_ULBT_Pos) /**< \brief (MATRIX_MCFG5) Undefined Length Burst Type */ +#define MATRIX_MCFG5_ULBT(value) ((MATRIX_MCFG5_ULBT_Msk & ((value) << MATRIX_MCFG5_ULBT_Pos))) +#define MATRIX_MCFG5_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG5) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG5_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG5) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG5_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG5) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG5_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG5) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG5_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG5) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG5_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG5) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG5_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG5) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG5_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG5) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG6 : (MATRIX Offset: 0x0018) Master Configuration Register 6 -------- */ +#define MATRIX_MCFG6_ULBT_Pos 0 +#define MATRIX_MCFG6_ULBT_Msk (0x7u << MATRIX_MCFG6_ULBT_Pos) /**< \brief (MATRIX_MCFG6) Undefined Length Burst Type */ +#define MATRIX_MCFG6_ULBT(value) ((MATRIX_MCFG6_ULBT_Msk & ((value) << MATRIX_MCFG6_ULBT_Pos))) +#define MATRIX_MCFG6_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG6) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG6_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG6) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG6_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG6) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG6_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG6) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG6_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG6) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG6_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG6) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG6_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG6) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG6_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG6) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG8 : (MATRIX Offset: 0x0020) Master Configuration Register 8 -------- */ +#define MATRIX_MCFG8_ULBT_Pos 0 +#define MATRIX_MCFG8_ULBT_Msk (0x7u << MATRIX_MCFG8_ULBT_Pos) /**< \brief (MATRIX_MCFG8) Undefined Length Burst Type */ +#define MATRIX_MCFG8_ULBT(value) ((MATRIX_MCFG8_ULBT_Msk & ((value) << MATRIX_MCFG8_ULBT_Pos))) +#define MATRIX_MCFG8_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG8) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG8_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG8) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG8_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG8) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG8_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG8) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG8_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG8) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG8_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG8) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG8_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG8) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG8_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG8) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG9 : (MATRIX Offset: 0x0024) Master Configuration Register 9 -------- */ +#define MATRIX_MCFG9_ULBT_Pos 0 +#define MATRIX_MCFG9_ULBT_Msk (0x7u << MATRIX_MCFG9_ULBT_Pos) /**< \brief (MATRIX_MCFG9) Undefined Length Burst Type */ +#define MATRIX_MCFG9_ULBT(value) ((MATRIX_MCFG9_ULBT_Msk & ((value) << MATRIX_MCFG9_ULBT_Pos))) +#define MATRIX_MCFG9_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG9) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG9_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG9) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG9_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG9) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG9_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG9) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG9_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG9) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG9_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG9) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG9_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG9) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG9_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG9) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG10 : (MATRIX Offset: 0x0028) Master Configuration Register 10 -------- */ +#define MATRIX_MCFG10_ULBT_Pos 0 +#define MATRIX_MCFG10_ULBT_Msk (0x7u << MATRIX_MCFG10_ULBT_Pos) /**< \brief (MATRIX_MCFG10) Undefined Length Burst Type */ +#define MATRIX_MCFG10_ULBT(value) ((MATRIX_MCFG10_ULBT_Msk & ((value) << MATRIX_MCFG10_ULBT_Pos))) +#define MATRIX_MCFG10_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG10) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG10_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG10) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG10_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG10) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG10_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG10) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG10_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG10) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG10_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG10) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG10_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG10) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG10_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG10) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_MCFG11 : (MATRIX Offset: 0x002C) Master Configuration Register 11 -------- */ +#define MATRIX_MCFG11_ULBT_Pos 0 +#define MATRIX_MCFG11_ULBT_Msk (0x7u << MATRIX_MCFG11_ULBT_Pos) /**< \brief (MATRIX_MCFG11) Undefined Length Burst Type */ +#define MATRIX_MCFG11_ULBT(value) ((MATRIX_MCFG11_ULBT_Msk & ((value) << MATRIX_MCFG11_ULBT_Pos))) +#define MATRIX_MCFG11_ULBT_UNLTD_LENGTH (0x0u << 0) /**< \brief (MATRIX_MCFG11) Unlimited Length Burst-No predicted end of burst is generated, therefore INCR bursts coming from this master can only be broken if the Slave Slot Cycle Limit is reached. If the Slot Cycle Limit is not reached, the burst is normally completed by the master, at the latest, on the next AHB 1-Kbyte address boundary, allowing up to 256-beat word bursts or 128-beat double-word bursts.This value should not be used in the very particular case of a master capable of performing back-to-back undefined length bursts on a single slave, since this could indefinitely freeze the slave arbitration and thus prevent another master from accessing this slave. */ +#define MATRIX_MCFG11_ULBT_SINGLE_ACCESS (0x1u << 0) /**< \brief (MATRIX_MCFG11) Single Access-The undefined length burst is treated as a succession of single accesses, allowing re-arbitration at each beat of the INCR burst or bursts sequence. */ +#define MATRIX_MCFG11_ULBT_4BEAT_BURST (0x2u << 0) /**< \brief (MATRIX_MCFG11) 4-beat Burst-The undefined length burst or bursts sequence is split into 4-beat bursts or less, allowing re-arbitration every 4 beats. */ +#define MATRIX_MCFG11_ULBT_8BEAT_BURST (0x3u << 0) /**< \brief (MATRIX_MCFG11) 8-beat Burst-The undefined length burst or bursts sequence is split into 8-beat bursts or less, allowing re-arbitration every 8 beats. */ +#define MATRIX_MCFG11_ULBT_16BEAT_BURST (0x4u << 0) /**< \brief (MATRIX_MCFG11) 16-beat Burst-The undefined length burst or bursts sequence is split into 16-beat bursts or less, allowing re-arbitration every 16 beats. */ +#define MATRIX_MCFG11_ULBT_32BEAT_BURST (0x5u << 0) /**< \brief (MATRIX_MCFG11) 32-beat Burst -The undefined length burst or bursts sequence is split into 32-beat bursts or less, allowing re-arbitration every 32 beats. */ +#define MATRIX_MCFG11_ULBT_64BEAT_BURST (0x6u << 0) /**< \brief (MATRIX_MCFG11) 64-beat Burst-The undefined length burst or bursts sequence is split into 64-beat bursts or less, allowing re-arbitration every 64 beats. */ +#define MATRIX_MCFG11_ULBT_128BEAT_BURST (0x7u << 0) /**< \brief (MATRIX_MCFG11) 128-beat Burst-The undefined length burst or bursts sequence is split into 128-beat bursts or less, allowing re-arbitration every 128 beats. */ +/* -------- MATRIX_SCFG[9] : (MATRIX Offset: 0x0040) Slave Configuration Register -------- */ +#define MATRIX_SCFG_SLOT_CYCLE_Pos 0 +#define MATRIX_SCFG_SLOT_CYCLE_Msk (0x1ffu << MATRIX_SCFG_SLOT_CYCLE_Pos) /**< \brief (MATRIX_SCFG[9]) Maximum Bus Grant Duration for Masters */ +#define MATRIX_SCFG_SLOT_CYCLE(value) ((MATRIX_SCFG_SLOT_CYCLE_Msk & ((value) << MATRIX_SCFG_SLOT_CYCLE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_Pos 16 +#define MATRIX_SCFG_DEFMSTR_TYPE_Msk (0x3u << MATRIX_SCFG_DEFMSTR_TYPE_Pos) /**< \brief (MATRIX_SCFG[9]) Default Master Type */ +#define MATRIX_SCFG_DEFMSTR_TYPE(value) ((MATRIX_SCFG_DEFMSTR_TYPE_Msk & ((value) << MATRIX_SCFG_DEFMSTR_TYPE_Pos))) +#define MATRIX_SCFG_DEFMSTR_TYPE_NONE (0x0u << 16) /**< \brief (MATRIX_SCFG[9]) No Default Master-At the end of the current slave access, if no other master request is pending, the slave is disconnected from all masters.This results in a one clock cycle latency for the first access of a burst transfer or for a single access. */ +#define MATRIX_SCFG_DEFMSTR_TYPE_LAST (0x1u << 16) /**< \brief (MATRIX_SCFG[9]) Last Default Master-At the end of the current slave access, if no other master request is pending, the slave stays connected to the last master having accessed it.This results in not having one clock cycle latency when the last master tries to access the slave again. */ +#define MATRIX_SCFG_DEFMSTR_TYPE_FIXED (0x2u << 16) /**< \brief (MATRIX_SCFG[9]) Fixed Default Master-At the end of the current slave access, if no other master request is pending, the slave connects to the fixed master the number that has been written in the FIXED_DEFMSTR field.This results in not having one clock cycle latency when the fixed master tries to access the slave again. */ +#define MATRIX_SCFG_FIXED_DEFMSTR_Pos 18 +#define MATRIX_SCFG_FIXED_DEFMSTR_Msk (0xfu << MATRIX_SCFG_FIXED_DEFMSTR_Pos) /**< \brief (MATRIX_SCFG[9]) Fixed Default Master */ +#define MATRIX_SCFG_FIXED_DEFMSTR(value) ((MATRIX_SCFG_FIXED_DEFMSTR_Msk & ((value) << MATRIX_SCFG_FIXED_DEFMSTR_Pos))) +/* -------- MATRIX_PRAS : (MATRIX Offset: N/A) Priority Register A for Slave 0 -------- */ +#define MATRIX_PRAS_M0PR_Pos 0 +#define MATRIX_PRAS_M0PR_Msk (0x3u << MATRIX_PRAS_M0PR_Pos) /**< \brief (MATRIX_PRAS) Master 0 Priority */ +#define MATRIX_PRAS_M0PR(value) ((MATRIX_PRAS_M0PR_Msk & ((value) << MATRIX_PRAS_M0PR_Pos))) +#define MATRIX_PRAS_M1PR_Pos 4 +#define MATRIX_PRAS_M1PR_Msk (0x3u << MATRIX_PRAS_M1PR_Pos) /**< \brief (MATRIX_PRAS) Master 1 Priority */ +#define MATRIX_PRAS_M1PR(value) ((MATRIX_PRAS_M1PR_Msk & ((value) << MATRIX_PRAS_M1PR_Pos))) +#define MATRIX_PRAS_M2PR_Pos 8 +#define MATRIX_PRAS_M2PR_Msk (0x3u << MATRIX_PRAS_M2PR_Pos) /**< \brief (MATRIX_PRAS) Master 2 Priority */ +#define MATRIX_PRAS_M2PR(value) ((MATRIX_PRAS_M2PR_Msk & ((value) << MATRIX_PRAS_M2PR_Pos))) +#define MATRIX_PRAS_M3PR_Pos 12 +#define MATRIX_PRAS_M3PR_Msk (0x3u << MATRIX_PRAS_M3PR_Pos) /**< \brief (MATRIX_PRAS) Master 3 Priority */ +#define MATRIX_PRAS_M3PR(value) ((MATRIX_PRAS_M3PR_Msk & ((value) << MATRIX_PRAS_M3PR_Pos))) +#define MATRIX_PRAS_M4PR_Pos 16 +#define MATRIX_PRAS_M4PR_Msk (0x3u << MATRIX_PRAS_M4PR_Pos) /**< \brief (MATRIX_PRAS) Master 4 Priority */ +#define MATRIX_PRAS_M4PR(value) ((MATRIX_PRAS_M4PR_Msk & ((value) << MATRIX_PRAS_M4PR_Pos))) +#define MATRIX_PRAS_M5PR_Pos 20 +#define MATRIX_PRAS_M5PR_Msk (0x3u << MATRIX_PRAS_M5PR_Pos) /**< \brief (MATRIX_PRAS) Master 5 Priority */ +#define MATRIX_PRAS_M5PR(value) ((MATRIX_PRAS_M5PR_Msk & ((value) << MATRIX_PRAS_M5PR_Pos))) +#define MATRIX_PRAS_M6PR_Pos 24 +#define MATRIX_PRAS_M6PR_Msk (0x3u << MATRIX_PRAS_M6PR_Pos) /**< \brief (MATRIX_PRAS) Master 6 Priority */ +#define MATRIX_PRAS_M6PR(value) ((MATRIX_PRAS_M6PR_Msk & ((value) << MATRIX_PRAS_M6PR_Pos))) +/* -------- MATRIX_PRBS : (MATRIX Offset: N/A) Priority Register B for Slave 0 -------- */ +#define MATRIX_PRBS_M8PR_Pos 0 +#define MATRIX_PRBS_M8PR_Msk (0x3u << MATRIX_PRBS_M8PR_Pos) /**< \brief (MATRIX_PRBS) Master 8 Priority */ +#define MATRIX_PRBS_M8PR(value) ((MATRIX_PRBS_M8PR_Msk & ((value) << MATRIX_PRBS_M8PR_Pos))) +#define MATRIX_PRBS_M9PR_Pos 4 +#define MATRIX_PRBS_M9PR_Msk (0x3u << MATRIX_PRBS_M9PR_Pos) /**< \brief (MATRIX_PRBS) Master 9 Priority */ +#define MATRIX_PRBS_M9PR(value) ((MATRIX_PRBS_M9PR_Msk & ((value) << MATRIX_PRBS_M9PR_Pos))) +#define MATRIX_PRBS_M10PR_Pos 8 +#define MATRIX_PRBS_M10PR_Msk (0x3u << MATRIX_PRBS_M10PR_Pos) /**< \brief (MATRIX_PRBS) Master 10 Priority */ +#define MATRIX_PRBS_M10PR(value) ((MATRIX_PRBS_M10PR_Msk & ((value) << MATRIX_PRBS_M10PR_Pos))) +#define MATRIX_PRBS_M11PR_Pos 12 +#define MATRIX_PRBS_M11PR_Msk (0x3u << MATRIX_PRBS_M11PR_Pos) /**< \brief (MATRIX_PRBS) Master 11 Priority */ +#define MATRIX_PRBS_M11PR(value) ((MATRIX_PRBS_M11PR_Msk & ((value) << MATRIX_PRBS_M11PR_Pos))) +#define MATRIX_PRBS_M12PR_Pos 16 +#define MATRIX_PRBS_M12PR_Msk (0x3u << MATRIX_PRBS_M12PR_Pos) /**< \brief (MATRIX_PRBS) Master 12 Priority */ +#define MATRIX_PRBS_M12PR(value) ((MATRIX_PRBS_M12PR_Msk & ((value) << MATRIX_PRBS_M12PR_Pos))) +/* -------- MATRIX_MRCR : (MATRIX Offset: 0x0100) Master Remap Control Register -------- */ +#define MATRIX_MRCR_RCB0 (0x1u << 0) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 0 */ +#define MATRIX_MRCR_RCB1 (0x1u << 1) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 1 */ +#define MATRIX_MRCR_RCB2 (0x1u << 2) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 2 */ +#define MATRIX_MRCR_RCB3 (0x1u << 3) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 3 */ +#define MATRIX_MRCR_RCB4 (0x1u << 4) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 4 */ +#define MATRIX_MRCR_RCB5 (0x1u << 5) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 5 */ +#define MATRIX_MRCR_RCB6 (0x1u << 6) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 6 */ +#define MATRIX_MRCR_RCB8 (0x1u << 8) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 8 */ +#define MATRIX_MRCR_RCB9 (0x1u << 9) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 9 */ +#define MATRIX_MRCR_RCB10 (0x1u << 10) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 10 */ +#define MATRIX_MRCR_RCB11 (0x1u << 11) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 11 */ +#define MATRIX_MRCR_RCB12 (0x1u << 12) /**< \brief (MATRIX_MRCR) Remap Command Bit for Master 12 */ +/* -------- CCFG_CAN0 : (MATRIX Offset: 0x0110) CAN0 Configuration Register -------- */ +#define CCFG_CAN0_CAN0DMABA_Pos 16 +#define CCFG_CAN0_CAN0DMABA_Msk (0xffffu << CCFG_CAN0_CAN0DMABA_Pos) /**< \brief (CCFG_CAN0) CAN0 DMA Base Address */ +#define CCFG_CAN0_CAN0DMABA(value) ((CCFG_CAN0_CAN0DMABA_Msk & ((value) << CCFG_CAN0_CAN0DMABA_Pos))) +/* -------- CCFG_SYSIO : (MATRIX Offset: 0x0114) System I/O and CAN1 Configuration Register -------- */ +#define CCFG_SYSIO_SYSIO4 (0x1u << 4) /**< \brief (CCFG_SYSIO) PB4 or TDI Assignment */ +#define CCFG_SYSIO_SYSIO5 (0x1u << 5) /**< \brief (CCFG_SYSIO) PB5 or TDO/TRACESWO Assignment */ +#define CCFG_SYSIO_SYSIO6 (0x1u << 6) /**< \brief (CCFG_SYSIO) PB6 or TMS/SWDIO Assignment */ +#define CCFG_SYSIO_SYSIO7 (0x1u << 7) /**< \brief (CCFG_SYSIO) PB7 or TCK/SWCLK Assignment */ +#define CCFG_SYSIO_SYSIO12 (0x1u << 12) /**< \brief (CCFG_SYSIO) PB12 or ERASE Assignment */ +#define CCFG_SYSIO_CAN1DMABA_Pos 16 +#define CCFG_SYSIO_CAN1DMABA_Msk (0xffffu << CCFG_SYSIO_CAN1DMABA_Pos) /**< \brief (CCFG_SYSIO) CAN1 DMA Base Address */ +#define CCFG_SYSIO_CAN1DMABA(value) ((CCFG_SYSIO_CAN1DMABA_Msk & ((value) << CCFG_SYSIO_CAN1DMABA_Pos))) +/* -------- CCFG_PCCR : (MATRIX Offset: 0x0118) Peripheral Clock Configuration Register -------- */ +#define CCFG_PCCR_TC0CC (0x1u << 20) /**< \brief (CCFG_PCCR) TC0 Clock Configuration */ +#define CCFG_PCCR_I2SC0CC (0x1u << 21) /**< \brief (CCFG_PCCR) I2SC0 Clock Configuration */ +#define CCFG_PCCR_I2SC1CC (0x1u << 22) /**< \brief (CCFG_PCCR) I2SC1 Clock Configuration */ +/* -------- CCFG_DYNCKG : (MATRIX Offset: 0x11c) (R/W 32) Dynamic Clock Gating Register -------- */ +#define CCFG_DYNCKG_MATCKG (0x1u << 0) /**< \brief (CCFG_DYNCKG) MATRIX Dynamic Clock Gating */ +#define CCFG_DYNCKG_BRIDCKG (0x1u << 1) /**< \brief (CCFG_DYNCKG) Bridge Dynamic Clock Gating Enable */ +#define CCFG_DYNCKG_EFCCKG (0x1u << 2) /**< \brief (CCFG_DYNCKG) EFC Dynamic Clock Gating Enable */ +/* -------- CCFG_SMCNFCS : (MATRIX Offset: 0x0124) SMC NAND Flash Chip Select Configuration Register -------- */ +#define CCFG_SMCNFCS_SMC_NFCS0 (0x1u << 0) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 0 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS1 (0x1u << 1) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 1 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS2 (0x1u << 2) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 2 Assignment */ +#define CCFG_SMCNFCS_SMC_NFCS3 (0x1u << 3) /**< \brief (CCFG_SMCNFCS) SMC NAND Flash Chip Select 3 Assignment */ +#define CCFG_SMCNFCS_SDRAMEN (0x1u << 4) /**< \brief (CCFG_SMCNFCS) SDRAM Enable */ +/* -------- MATRIX_WPMR : (MATRIX Offset: 0x01E4) Write Protection Mode Register -------- */ +#define MATRIX_WPMR_WPEN (0x1u << 0) /**< \brief (MATRIX_WPMR) Write Protection Enable */ +#define MATRIX_WPMR_WPKEY_Pos 8 +#define MATRIX_WPMR_WPKEY_Msk (0xffffffu << MATRIX_WPMR_WPKEY_Pos) /**< \brief (MATRIX_WPMR) Write Protection Key */ +#define MATRIX_WPMR_WPKEY(value) ((MATRIX_WPMR_WPKEY_Msk & ((value) << MATRIX_WPMR_WPKEY_Pos))) +#define MATRIX_WPMR_WPKEY_PASSWD (0x4D4154u << 8) /**< \brief (MATRIX_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- MATRIX_WPSR : (MATRIX Offset: 0x01E8) Write Protection Status Register -------- */ +#define MATRIX_WPSR_WPVS (0x1u << 0) /**< \brief (MATRIX_WPSR) Write Protection Violation Status */ +#define MATRIX_WPSR_WPVSRC_Pos 8 +#define MATRIX_WPSR_WPVSRC_Msk (0xffffu << MATRIX_WPSR_WPVSRC_Pos) /**< \brief (MATRIX_WPSR) Write Protection Violation Source */ +/* -------- MATRIX_VERSION : (MATRIX Offset: 0x01FC) Version Register -------- */ +#define MATRIX_VERSION_VERSION_Pos 0 +#define MATRIX_VERSION_VERSION_Msk (0xfffu << MATRIX_VERSION_VERSION_Pos) /**< \brief (MATRIX_VERSION) Version of the Hardware Module */ +#define MATRIX_VERSION_MFN_Pos 16 +#define MATRIX_VERSION_MFN_Msk (0x7u << MATRIX_VERSION_MFN_Pos) /**< \brief (MATRIX_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_MATRIX_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h new file mode 100644 index 00000000..490dc5c3 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h @@ -0,0 +1,940 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_MCAN_COMPONENT_ +#define _SAME70_MCAN_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Controller Area Network */ +/* ============================================================================= */ +/** \addtogroup SAME70_MCAN Controller Area Network */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Mcan hardware registers */ +typedef struct { + __I uint32_t MCAN_CREL; /**< \brief (Mcan Offset: 0x00) Core Release Register */ + __I uint32_t MCAN_ENDN; /**< \brief (Mcan Offset: 0x04) Endian Register */ + __IO uint32_t MCAN_CUST; /**< \brief (Mcan Offset: 0x08) Customer Register */ +#if (__SAM_M7_REVB == 1) + __IO uint32_t MCAN_DBTP; /**< \brief (Mcan Offset: 0x0C) Data Bit Timing and Prescaler Register */ +#else + __IO uint32_t MCAN_FBTP; /**< \brief (Mcan Offset: 0x0C) Fast Bit Timing and Prescaler Register */ +#endif + __IO uint32_t MCAN_TEST; /**< \brief (Mcan Offset: 0x10) Test Register */ + __IO uint32_t MCAN_RWD; /**< \brief (Mcan Offset: 0x14) RAM Watchdog Register */ + __IO uint32_t MCAN_CCCR; /**< \brief (Mcan Offset: 0x18) CC Control Register */ +#if (__SAM_M7_REVB == 1) + __IO uint32_t MCAN_NBTP; /**< \brief (Mcan Offset: 0x1C) Nominal Bit Timing and Prescaler Register */ +#else + __IO uint32_t MCAN_BTP; /**< \brief (Mcan Offset: 0x1C) Bit Timing and Prescaler Register */ +#endif + __IO uint32_t MCAN_TSCC; /**< \brief (Mcan Offset: 0x20) Timestamp Counter Configuration Register */ + __IO uint32_t MCAN_TSCV; /**< \brief (Mcan Offset: 0x24) Timestamp Counter Value Register */ + __IO uint32_t MCAN_TOCC; /**< \brief (Mcan Offset: 0x28) Timeout Counter Configuration Register */ + __IO uint32_t MCAN_TOCV; /**< \brief (Mcan Offset: 0x2C) Timeout Counter Value Register */ + __I uint32_t Reserved1[4]; + __I uint32_t MCAN_ECR; /**< \brief (Mcan Offset: 0x40) Error Counter Register */ + __I uint32_t MCAN_PSR; /**< \brief (Mcan Offset: 0x44) Protocol Status Register */ +#if (__SAM_M7_REVB == 1) + __IO uint32_t MCAN_TDCR; /**< \brief (Mcan Offset: 0x48) Transmit Delay Compensation Register */ + __I uint32_t Reserved2[1]; +#else + __I uint32_t Reserved2[2]; +#endif + __IO uint32_t MCAN_IR; /**< \brief (Mcan Offset: 0x50) Interrupt Register */ + __IO uint32_t MCAN_IE; /**< \brief (Mcan Offset: 0x54) Interrupt Enable Register */ + __IO uint32_t MCAN_ILS; /**< \brief (Mcan Offset: 0x58) Interrupt Line Select Register */ + __IO uint32_t MCAN_ILE; /**< \brief (Mcan Offset: 0x5C) Interrupt Line Enable Register */ + __I uint32_t Reserved3[8]; + __IO uint32_t MCAN_GFC; /**< \brief (Mcan Offset: 0x80) Global Filter Configuration Register */ + __IO uint32_t MCAN_SIDFC; /**< \brief (Mcan Offset: 0x84) Standard ID Filter Configuration Register */ + __IO uint32_t MCAN_XIDFC; /**< \brief (Mcan Offset: 0x88) Extended ID Filter Configuration Register */ + __I uint32_t Reserved4[1]; + __IO uint32_t MCAN_XIDAM; /**< \brief (Mcan Offset: 0x90) Extended ID AND Mask Register */ + __I uint32_t MCAN_HPMS; /**< \brief (Mcan Offset: 0x94) High Priority Message Status Register */ + __IO uint32_t MCAN_NDAT1; /**< \brief (Mcan Offset: 0x98) New Data 1 Register */ + __IO uint32_t MCAN_NDAT2; /**< \brief (Mcan Offset: 0x9C) New Data 2 Register */ + __IO uint32_t MCAN_RXF0C; /**< \brief (Mcan Offset: 0xA0) Receive FIFO 0 Configuration Register */ + __I uint32_t MCAN_RXF0S; /**< \brief (Mcan Offset: 0xA4) Receive FIFO 0 Status Register */ + __IO uint32_t MCAN_RXF0A; /**< \brief (Mcan Offset: 0xA8) Receive FIFO 0 Acknowledge Register */ + __IO uint32_t MCAN_RXBC; /**< \brief (Mcan Offset: 0xAC) Receive Rx Buffer Configuration Register */ + __IO uint32_t MCAN_RXF1C; /**< \brief (Mcan Offset: 0xB0) Receive FIFO 1 Configuration Register */ + __I uint32_t MCAN_RXF1S; /**< \brief (Mcan Offset: 0xB4) Receive FIFO 1 Status Register */ + __IO uint32_t MCAN_RXF1A; /**< \brief (Mcan Offset: 0xB8) Receive FIFO 1 Acknowledge Register */ + __IO uint32_t MCAN_RXESC; /**< \brief (Mcan Offset: 0xBC) Receive Buffer / FIFO Element Size Configuration Register */ + __IO uint32_t MCAN_TXBC; /**< \brief (Mcan Offset: 0xC0) Transmit Buffer Configuration Register */ + __I uint32_t MCAN_TXFQS; /**< \brief (Mcan Offset: 0xC4) Transmit FIFO/Queue Status Register */ + __IO uint32_t MCAN_TXESC; /**< \brief (Mcan Offset: 0xC8) Transmit Buffer Element Size Configuration Register */ + __I uint32_t MCAN_TXBRP; /**< \brief (Mcan Offset: 0xCC) Transmit Buffer Request Pending Register */ + __IO uint32_t MCAN_TXBAR; /**< \brief (Mcan Offset: 0xD0) Transmit Buffer Add Request Register */ + __IO uint32_t MCAN_TXBCR; /**< \brief (Mcan Offset: 0xD4) Transmit Buffer Cancellation Request Register */ + __I uint32_t MCAN_TXBTO; /**< \brief (Mcan Offset: 0xD8) Transmit Buffer Transmission Occurred Register */ + __I uint32_t MCAN_TXBCF; /**< \brief (Mcan Offset: 0xDC) Transmit Buffer Cancellation Finished Register */ + __IO uint32_t MCAN_TXBTIE; /**< \brief (Mcan Offset: 0xE0) Transmit Buffer Transmission Interrupt Enable Register */ + __IO uint32_t MCAN_TXBCIE; /**< \brief (Mcan Offset: 0xE4) Transmit Buffer Cancellation Finished Interrupt Enable Register */ + __I uint32_t Reserved5[2]; + __IO uint32_t MCAN_TXEFC; /**< \brief (Mcan Offset: 0xF0) Transmit Event FIFO Configuration Register */ + __I uint32_t MCAN_TXEFS; /**< \brief (Mcan Offset: 0xF4) Transmit Event FIFO Status Register */ + __IO uint32_t MCAN_TXEFA; /**< \brief (Mcan Offset: 0xF8) Transmit Event FIFO Acknowledge Register */ +} Mcan; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- MCAN_CREL : (MCAN Offset: 0x00) Core Release Register -------- */ +#define MCAN_CREL_DAY_Pos 0 +#define MCAN_CREL_DAY_Msk (0xffu << MCAN_CREL_DAY_Pos) /**< \brief (MCAN_CREL) Timestamp Day */ +#define MCAN_CREL_MON_Pos 8 +#define MCAN_CREL_MON_Msk (0xffu << MCAN_CREL_MON_Pos) /**< \brief (MCAN_CREL) Timestamp Month */ +#define MCAN_CREL_YEAR_Pos 16 +#define MCAN_CREL_YEAR_Msk (0xfu << MCAN_CREL_YEAR_Pos) /**< \brief (MCAN_CREL) Timestamp Year */ +#define MCAN_CREL_SUBSTEP_Pos 20 +#define MCAN_CREL_SUBSTEP_Msk (0xfu << MCAN_CREL_SUBSTEP_Pos) /**< \brief (MCAN_CREL) Sub-step of Core Release */ +#define MCAN_CREL_STEP_Pos 24 +#define MCAN_CREL_STEP_Msk (0xfu << MCAN_CREL_STEP_Pos) /**< \brief (MCAN_CREL) Step of Core Release */ +#define MCAN_CREL_REL_Pos 28 +#define MCAN_CREL_REL_Msk (0xfu << MCAN_CREL_REL_Pos) /**< \brief (MCAN_CREL) Core Release */ +/* -------- MCAN_ENDN : (MCAN Offset: 0x04) Endian Register -------- */ +#define MCAN_ENDN_ETV_Pos 0 +#define MCAN_ENDN_ETV_Msk (0xffffffffu << MCAN_ENDN_ETV_Pos) /**< \brief (MCAN_ENDN) Endianness Test Value */ +/* -------- MCAN_CUST : (MCAN Offset: 0x08) Customer Register -------- */ +#define MCAN_CUST_CSV_Pos 0 +#define MCAN_CUST_CSV_Msk (0xffffffffu << MCAN_CUST_CSV_Pos) /**< \brief (MCAN_CUST) Customer-specific Value */ +#define MCAN_CUST_CSV(value) ((MCAN_CUST_CSV_Msk & ((value) << MCAN_CUST_CSV_Pos))) +/* -------- MCAN_FBTP : (MCAN Offset: 0x0C) Fast Bit Timing and Prescaler Register -------- */ +#define MCAN_FBTP_FSJW_Pos 0 +#define MCAN_FBTP_FSJW_Msk (0x3u << MCAN_FBTP_FSJW_Pos) /**< \brief (MCAN_FBTP) Fast (Re) Synchronization Jump Width */ +#define MCAN_FBTP_FSJW(value) ((MCAN_FBTP_FSJW_Msk & ((value) << MCAN_FBTP_FSJW_Pos))) +#define MCAN_FBTP_FTSEG2_Pos 4 +#define MCAN_FBTP_FTSEG2_Msk (0x7u << MCAN_FBTP_FTSEG2_Pos) /**< \brief (MCAN_FBTP) Fast Time Segment After Sample Point */ +#define MCAN_FBTP_FTSEG2(value) ((MCAN_FBTP_FTSEG2_Msk & ((value) << MCAN_FBTP_FTSEG2_Pos))) +#define MCAN_FBTP_FTSEG1_Pos 8 +#define MCAN_FBTP_FTSEG1_Msk (0xfu << MCAN_FBTP_FTSEG1_Pos) /**< \brief (MCAN_FBTP) Fast Time Segment Before Sample Point */ +#define MCAN_FBTP_FTSEG1(value) ((MCAN_FBTP_FTSEG1_Msk & ((value) << MCAN_FBTP_FTSEG1_Pos))) +#define MCAN_FBTP_FBRP_Pos 16 +#define MCAN_FBTP_FBRP_Msk (0x1fu << MCAN_FBTP_FBRP_Pos) /**< \brief (MCAN_FBTP) Fast Baud Rate Prescaler */ +#define MCAN_FBTP_FBRP(value) ((MCAN_FBTP_FBRP_Msk & ((value) << MCAN_FBTP_FBRP_Pos))) +#define MCAN_FBTP_TDC (0x1u << 23) /**< \brief (MCAN_FBTP) Transceiver Delay Compensation */ +#define MCAN_FBTP_TDC_DISABLED (0x0u << 23) /**< \brief (MCAN_FBTP) Transceiver Delay Compensation disabled. */ +#define MCAN_FBTP_TDC_ENABLED (0x1u << 23) /**< \brief (MCAN_FBTP) Transceiver Delay Compensation enabled. */ +#define MCAN_FBTP_TDCO_Pos 24 +#define MCAN_FBTP_TDCO_Msk (0x1fu << MCAN_FBTP_TDCO_Pos) /**< \brief (MCAN_FBTP) Transce iver Delay Compensation Offset */ +#define MCAN_FBTP_TDCO(value) ((MCAN_FBTP_TDCO_Msk & ((value) << MCAN_FBTP_TDCO_Pos))) +/* -------- MCAN_DBTP : (MCAN Offset: 0x0C) Data Bit Timing and Prescaler Register -------- */ +#define MCAN_DBTP_DSJW_Pos 0 +#define MCAN_DBTP_DSJW_Msk (0x7u << MCAN_DBTP_DSJW_Pos) /**< \brief (MCAN_DBTP) Data (Re) Synchronization Jump Width */ +#define MCAN_DBTP_DSJW(value) ((MCAN_DBTP_DSJW_Msk & ((value) << MCAN_DBTP_DSJW_Pos))) +#define MCAN_DBTP_DTSEG2_Pos 4 +#define MCAN_DBTP_DTSEG2_Msk (0xfu << MCAN_DBTP_DTSEG2_Pos) /**< \brief (MCAN_DBTP) Data Time Segment After Sample Point */ +#define MCAN_DBTP_DTSEG2(value) ((MCAN_DBTP_DTSEG2_Msk & ((value) << MCAN_DBTP_DTSEG2_Pos))) +#define MCAN_DBTP_DTSEG1_Pos 8 +#define MCAN_DBTP_DTSEG1_Msk (0x1fu << MCAN_DBTP_DTSEG1_Pos) /**< \brief (MCAN_DBTP) Data Time Segment Before Sample Point */ +#define MCAN_DBTP_DTSEG1(value) ((MCAN_DBTP_DTSEG1_Msk & ((value) << MCAN_DBTP_DTSEG1_Pos))) +#define MCAN_DBTP_DBRP_Pos 16 +#define MCAN_DBTP_DBRP_Msk (0x1fu << MCAN_DBTP_DBRP_Pos) /**< \brief (MCAN_DBTP) Data Bit Rate Prescaler */ +#define MCAN_DBTP_DBRP(value) ((MCAN_DBTP_DBRP_Msk & ((value) << MCAN_DBTP_DBRP_Pos))) +#define MCAN_DBTP_TDC (0x1u << 23) /**< \brief (MCAN_DBTP) Transmitter Delay Compensation */ +#define MCAN_DBTP_TDC_DISABLED (0x0u << 23) /**< \brief (MCAN_DBTP) Transmitter Delay Compensation disabled. */ +#define MCAN_DBTP_TDC_ENABLED (0x1u << 23) /**< \brief (MCAN_DBTP) Transmitter Delay Compensation enabled. */ +/* -------- MCAN_TEST : (MCAN Offset: 0x10) Test Register -------- */ +#define MCAN_TEST_LBCK (0x1u << 4) /**< \brief (MCAN_TEST) Loop Back Mode (read/write) */ +#define MCAN_TEST_LBCK_DISABLED (0x0u << 4) /**< \brief (MCAN_TEST) Reset value. Loop Back mode is disabled. */ +#define MCAN_TEST_LBCK_ENABLED (0x1u << 4) /**< \brief (MCAN_TEST) Loop Back mode is enabled (see Section 6.1.9). */ +#define MCAN_TEST_TX_Pos 5 +#define MCAN_TEST_TX_Msk (0x3u << MCAN_TEST_TX_Pos) /**< \brief (MCAN_TEST) Control of Transmit Pin (read/write) */ +#define MCAN_TEST_TX(value) ((MCAN_TEST_TX_Msk & ((value) << MCAN_TEST_TX_Pos))) +#define MCAN_TEST_TX_RESET (0x0u << 5) /**< \brief (MCAN_TEST) Reset value, CANTX controlled by the CAN Core, updated at the end of the CAN bit time. */ +#define MCAN_TEST_TX_SAMPLE_POINT_MONITORING (0x1u << 5) /**< \brief (MCAN_TEST) Sample Point can be monitored at pin CANTX. */ +#define MCAN_TEST_TX_DOMINANT (0x2u << 5) /**< \brief (MCAN_TEST) Dominant ('0') level at pin CANTX. */ +#define MCAN_TEST_TX_RECESSIVE (0x3u << 5) /**< \brief (MCAN_TEST) Recessive ('1') at pin CANTX. */ +#define MCAN_TEST_RX (0x1u << 7) /**< \brief (MCAN_TEST) Receive Pin (read-only) */ +#define MCAN_TEST_TDCV_Pos 8 +#define MCAN_TEST_TDCV_Msk (0x3fu << MCAN_TEST_TDCV_Pos) /**< \brief (MCAN_TEST) Transceiver Delay Compensation Value (read-only) */ +#define MCAN_TEST_TDCV(value) ((MCAN_TEST_TDCV_Msk & ((value) << MCAN_TEST_TDCV_Pos))) +/* -------- MCAN_RWD : (MCAN Offset: 0x14) RAM Watchdog Register -------- */ +#define MCAN_RWD_WDC_Pos 0 +#define MCAN_RWD_WDC_Msk (0xffu << MCAN_RWD_WDC_Pos) /**< \brief (MCAN_RWD) Watchdog Configuration (read/write) */ +#define MCAN_RWD_WDC(value) ((MCAN_RWD_WDC_Msk & ((value) << MCAN_RWD_WDC_Pos))) +#define MCAN_RWD_WDV_Pos 8 +#define MCAN_RWD_WDV_Msk (0xffu << MCAN_RWD_WDV_Pos) /**< \brief (MCAN_RWD) Watchdog Value (read-only) */ +#define MCAN_RWD_WDV(value) ((MCAN_RWD_WDV_Msk & ((value) << MCAN_RWD_WDV_Pos))) +/* -------- MCAN_CCCR : (MCAN Offset: 0x18) CC Control Register -------- */ +#define MCAN_CCCR_INIT (0x1u << 0) /**< \brief (MCAN_CCCR) Initialization (read/write) */ +#define MCAN_CCCR_INIT_DISABLED (0x0u << 0) /**< \brief (MCAN_CCCR) Normal operation. */ +#define MCAN_CCCR_INIT_ENABLED (0x1u << 0) /**< \brief (MCAN_CCCR) Initialization is started. */ +#define MCAN_CCCR_CCE (0x1u << 1) /**< \brief (MCAN_CCCR) Configuration Change Enable (read/write, write protection) */ +#define MCAN_CCCR_CCE_PROTECTED (0x0u << 1) /**< \brief (MCAN_CCCR) The processor has no write access to the protected configuration registers. */ +#define MCAN_CCCR_CCE_CONFIGURABLE (0x1u << 1) /**< \brief (MCAN_CCCR) The processor has write access to the protected configuration registers (while MCAN_CCCR.INIT = '1'). */ +#define MCAN_CCCR_ASM (0x1u << 2) /**< \brief (MCAN_CCCR) Restricted Operation Mode (read/write, write protection against '1') */ +#define MCAN_CCCR_ASM_NORMAL (0x0u << 2) /**< \brief (MCAN_CCCR) Normal CAN operation. */ +#define MCAN_CCCR_ASM_RESTRICTED (0x1u << 2) /**< \brief (MCAN_CCCR) Restricted operation mode active. */ +#define MCAN_CCCR_CSA (0x1u << 3) /**< \brief (MCAN_CCCR) Clock Stop Acknowledge (read-only) */ +#define MCAN_CCCR_CSR (0x1u << 4) /**< \brief (MCAN_CCCR) Clock Stop Request (read/write) */ +#define MCAN_CCCR_CSR_NO_CLOCK_STOP (0x0u << 4) /**< \brief (MCAN_CCCR) No clock stop is requested. */ +#define MCAN_CCCR_CSR_CLOCK_STOP (0x1u << 4) /**< \brief (MCAN_CCCR) Clock stop requested. When clock stop is requested, first INIT and then CSA will be set after all pend-ing transfer requests have been completed and the CAN bus reached idle. */ +#define MCAN_CCCR_MON (0x1u << 5) /**< \brief (MCAN_CCCR) Bus Monitoring Mode (read/write, write protection against '1') */ +#define MCAN_CCCR_MON_DISABLED (0x0u << 5) /**< \brief (MCAN_CCCR) Bus Monitoring mode is disabled. */ +#define MCAN_CCCR_MON_ENABLED (0x1u << 5) /**< \brief (MCAN_CCCR) Bus Monitoring mode is enabled. */ +#define MCAN_CCCR_DAR (0x1u << 6) /**< \brief (MCAN_CCCR) Disable Automatic Retransmission (read/write, write protection) */ +#define MCAN_CCCR_DAR_AUTO_RETX (0x0u << 6) /**< \brief (MCAN_CCCR) Automatic retransmission of messages not transmitted successfully enabled. */ +#define MCAN_CCCR_DAR_NO_AUTO_RETX (0x1u << 6) /**< \brief (MCAN_CCCR) Automatic retransmission disabled. */ +#define MCAN_CCCR_TEST (0x1u << 7) /**< \brief (MCAN_CCCR) Test Mode Enable (read/write, write protection against '1') */ +#define MCAN_CCCR_TEST_DISABLED (0x0u << 7) /**< \brief (MCAN_CCCR) Normal operation, MCAN_TEST register holds reset values. */ +#define MCAN_CCCR_TEST_ENABLED (0x1u << 7) /**< \brief (MCAN_CCCR) Test mode, write access to MCAN_TEST register enabled. */ +#define MCAN_CCCR_CME_Pos 8 +#define MCAN_CCCR_CME_Msk (0x3u << MCAN_CCCR_CME_Pos) /**< \brief (MCAN_CCCR) CAN Mode Enable (read/write, write protection) */ +#define MCAN_CCCR_CME(value) ((MCAN_CCCR_CME_Msk & ((value) << MCAN_CCCR_CME_Pos))) +#define MCAN_CCCR_CME_ISO11898_1 (0x0u << 8) /**< \brief (MCAN_CCCR) CAN operation according to ISO11898-1 enabled */ +#define MCAN_CCCR_CME_FD (0x1u << 8) /**< \brief (MCAN_CCCR) CAN FD operation enabled */ +#define MCAN_CCCR_CMR_Pos 10 +#define MCAN_CCCR_CMR_Msk (0x3u << MCAN_CCCR_CMR_Pos) /**< \brief (MCAN_CCCR) CAN Mode Request (read/write) */ +#define MCAN_CCCR_CMR(value) ((MCAN_CCCR_CMR_Msk & ((value) << MCAN_CCCR_CMR_Pos))) +#define MCAN_CCCR_CMR_NO_CHANGE (0x0u << 10) /**< \brief (MCAN_CCCR) No mode change */ +#define MCAN_CCCR_CMR_FD (0x1u << 10) /**< \brief (MCAN_CCCR) Request CAN FD operation */ +#define MCAN_CCCR_CMR_FD_BITRATE_SWITCH (0x2u << 10) /**< \brief (MCAN_CCCR) Request CAN FD operation with bit rate switching */ +#define MCAN_CCCR_CMR_ISO11898_1 (0x3u << 10) /**< \brief (MCAN_CCCR) Request CAN operation according ISO11898-1 */ +#define MCAN_CCCR_FDO (0x1u << 12) /**< \brief (MCAN_CCCR) CAN FD Operation (read-only) */ +#define MCAN_CCCR_FDBS (0x1u << 13) /**< \brief (MCAN_CCCR) CAN FD Bit Rate Switching (read-only) */ +#define MCAN_CCCR_FDOE (0x1u << 8) /**< \brief (MCAN_CCCR) CAN FD Operation Enable (read/write, write protection) */ +#define MCAN_CCCR_FDOE_DISABLED (0x0u << 8) /**< \brief (MCAN_CCCR) FD operation disabled. */ +#define MCAN_CCCR_FDOE_ENABLED (0x1u << 8) /**< \brief (MCAN_CCCR) FD operation enabled. */ +#define MCAN_CCCR_BRSE (0x1u << 9) /**< \brief (MCAN_CCCR) Bit Rate Switching Enable (read/write, write protection) */ +#define MCAN_CCCR_BRSE_DISABLED (0x0u << 9) /**< \brief (MCAN_CCCR) Bit rate switching for transmissions disabled. */ +#define MCAN_CCCR_BRSE_ENABLED (0x1u << 9) /**< \brief (MCAN_CCCR) Bit rate switching for transmissions enabled. */ +#define MCAN_CCCR_PXHD (0x1u << 12) /**< \brief (MCAN_CCCR) Protocol Exception Event Handling (read/write, write protection) */ +#define MCAN_CCCR_EFBI (0x1u << 13) /**< \brief (MCAN_CCCR) Edge Filtering during Bus Integration (read/write, write protection) */ +#define MCAN_CCCR_TXP (0x1u << 14) /**< \brief (MCAN_CCCR) Transmit Pause (read/write, write protection) */ +#define MCAN_CCCR_NISO (0x1u << 15) /**< \brief (MCAN_CCCR) Non-ISO Operation */ +/* -------- MCAN_BTP : (MCAN Offset: 0x1C) Bit Timing and Prescaler Register -------- */ +#define MCAN_BTP_SJW_Pos 0 +#define MCAN_BTP_SJW_Msk (0xfu << MCAN_BTP_SJW_Pos) /**< \brief (MCAN_BTP) (Re) Synchronization Jump Width */ +#define MCAN_BTP_SJW(value) ((MCAN_BTP_SJW_Msk & ((value) << MCAN_BTP_SJW_Pos))) +#define MCAN_BTP_TSEG2_Pos 4 +#define MCAN_BTP_TSEG2_Msk (0xfu << MCAN_BTP_TSEG2_Pos) /**< \brief (MCAN_BTP) Time Segment After Sample Point */ +#define MCAN_BTP_TSEG2(value) ((MCAN_BTP_TSEG2_Msk & ((value) << MCAN_BTP_TSEG2_Pos))) +#define MCAN_BTP_TSEG1_Pos 8 +#define MCAN_BTP_TSEG1_Msk (0x3fu << MCAN_BTP_TSEG1_Pos) /**< \brief (MCAN_BTP) Time Segment Before Sample Point */ +#define MCAN_BTP_TSEG1(value) ((MCAN_BTP_TSEG1_Msk & ((value) << MCAN_BTP_TSEG1_Pos))) +#define MCAN_BTP_BRP_Pos 16 +#define MCAN_BTP_BRP_Msk (0x3ffu << MCAN_BTP_BRP_Pos) /**< \brief (MCAN_BTP) Baud Rate Prescaler */ +#define MCAN_BTP_BRP(value) ((MCAN_BTP_BRP_Msk & ((value) << MCAN_BTP_BRP_Pos))) +/* -------- MCAN_NBTP : (MCAN Offset: 0x1C) Nominal Bit Timing and Prescaler Register -------- */ +#define MCAN_NBTP_NTSEG2_Pos 0 +#define MCAN_NBTP_NTSEG2_Msk (0x7fu << MCAN_NBTP_NTSEG2_Pos) /**< \brief (MCAN_NBTP) Nominal Time Segment After Sample Point */ +#define MCAN_NBTP_NTSEG2(value) ((MCAN_NBTP_NTSEG2_Msk & ((value) << MCAN_NBTP_NTSEG2_Pos))) +#define MCAN_NBTP_NTSEG1_Pos 8 +#define MCAN_NBTP_NTSEG1_Msk (0xffu << MCAN_NBTP_NTSEG1_Pos) /**< \brief (MCAN_NBTP) Nominal Time Segment Before Sample Point */ +#define MCAN_NBTP_NTSEG1(value) ((MCAN_NBTP_NTSEG1_Msk & ((value) << MCAN_NBTP_NTSEG1_Pos))) +#define MCAN_NBTP_NBRP_Pos 16 +#define MCAN_NBTP_NBRP_Msk (0x1ffu << MCAN_NBTP_NBRP_Pos) /**< \brief (MCAN_NBTP) Nominal Bit Rate Prescaler */ +#define MCAN_NBTP_NBRP(value) ((MCAN_NBTP_NBRP_Msk & ((value) << MCAN_NBTP_NBRP_Pos))) +#define MCAN_NBTP_NSJW_Pos 25 +#define MCAN_NBTP_NSJW_Msk (0x7fu << MCAN_NBTP_NSJW_Pos) /**< \brief (MCAN_NBTP) Nominal (Re) Synchronization Jump Width */ +#define MCAN_NBTP_NSJW(value) ((MCAN_NBTP_NSJW_Msk & ((value) << MCAN_NBTP_NSJW_Pos))) +/* -------- MCAN_TSCC : (MCAN Offset: 0x20) Timestamp Counter Configuration Register -------- */ +#define MCAN_TSCC_TSS_Pos 0 +#define MCAN_TSCC_TSS_Msk (0x3u << MCAN_TSCC_TSS_Pos) /**< \brief (MCAN_TSCC) Timestamp Select */ +#define MCAN_TSCC_TSS(value) ((MCAN_TSCC_TSS_Msk & ((value) << MCAN_TSCC_TSS_Pos))) +#define MCAN_TSCC_TSS_ALWAYS_0 (0x0u << 0) /**< \brief (MCAN_TSCC) Timestamp counter value always 0x0000 */ +#define MCAN_TSCC_TSS_TCP_INC (0x1u << 0) /**< \brief (MCAN_TSCC) Timestamp counter value incremented according to TCP */ +#define MCAN_TSCC_TSS_EXT_TIMESTAMP (0x2u << 0) /**< \brief (MCAN_TSCC) External timestamp counter value used */ +#define MCAN_TSCC_TCP_Pos 16 +#define MCAN_TSCC_TCP_Msk (0xfu << MCAN_TSCC_TCP_Pos) /**< \brief (MCAN_TSCC) Timestamp Counter Prescaler */ +#define MCAN_TSCC_TCP(value) ((MCAN_TSCC_TCP_Msk & ((value) << MCAN_TSCC_TCP_Pos))) +/* -------- MCAN_TSCV : (MCAN Offset: 0x24) Timestamp Counter Value Register -------- */ +#define MCAN_TSCV_TSC_Pos 0 +#define MCAN_TSCV_TSC_Msk (0xffffu << MCAN_TSCV_TSC_Pos) /**< \brief (MCAN_TSCV) Timestamp Counter (cleared on write) */ +#define MCAN_TSCV_TSC(value) ((MCAN_TSCV_TSC_Msk & ((value) << MCAN_TSCV_TSC_Pos))) +/* -------- MCAN_TOCC : (MCAN Offset: 0x28) Timeout Counter Configuration Register -------- */ +#define MCAN_TOCC_ETOC (0x1u << 0) /**< \brief (MCAN_TOCC) Enable Timeout Counter */ +#define MCAN_TOCC_ETOC_NO_TIMEOUT (0x0u << 0) /**< \brief (MCAN_TOCC) Timeout Counter disabled. */ +#define MCAN_TOCC_ETOC_TOS_CONTROLLED (0x1u << 0) /**< \brief (MCAN_TOCC) Timeout Counter enabled. */ +#define MCAN_TOCC_TOS_Pos 1 +#define MCAN_TOCC_TOS_Msk (0x3u << MCAN_TOCC_TOS_Pos) /**< \brief (MCAN_TOCC) Timeout Select */ +#define MCAN_TOCC_TOS(value) ((MCAN_TOCC_TOS_Msk & ((value) << MCAN_TOCC_TOS_Pos))) +#define MCAN_TOCC_TOS_CONTINUOUS (0x0u << 1) /**< \brief (MCAN_TOCC) Continuous operation */ +#define MCAN_TOCC_TOS_TX_EV_TIMEOUT (0x1u << 1) /**< \brief (MCAN_TOCC) Timeout controlled by Tx Event FIFO */ +#define MCAN_TOCC_TOS_RX0_EV_TIMEOUT (0x2u << 1) /**< \brief (MCAN_TOCC) Timeout controlled by Receive FIFO 0 */ +#define MCAN_TOCC_TOS_RX1_EV_TIMEOUT (0x3u << 1) /**< \brief (MCAN_TOCC) Timeout controlled by Receive FIFO 1 */ +#define MCAN_TOCC_TOP_Pos 16 +#define MCAN_TOCC_TOP_Msk (0xffffu << MCAN_TOCC_TOP_Pos) /**< \brief (MCAN_TOCC) Timeout Period */ +#define MCAN_TOCC_TOP(value) ((MCAN_TOCC_TOP_Msk & ((value) << MCAN_TOCC_TOP_Pos))) +/* -------- MCAN_TOCV : (MCAN Offset: 0x2C) Timeout Counter Value Register -------- */ +#define MCAN_TOCV_TOC_Pos 0 +#define MCAN_TOCV_TOC_Msk (0xffffu << MCAN_TOCV_TOC_Pos) /**< \brief (MCAN_TOCV) Timeout Counter (cleared on write) */ +#define MCAN_TOCV_TOC(value) ((MCAN_TOCV_TOC_Msk & ((value) << MCAN_TOCV_TOC_Pos))) +/* -------- MCAN_ECR : (MCAN Offset: 0x40) Error Counter Register -------- */ +#define MCAN_ECR_TEC_Pos 0 +#define MCAN_ECR_TEC_Msk (0xffu << MCAN_ECR_TEC_Pos) /**< \brief (MCAN_ECR) Transmit Error Counter */ +#define MCAN_ECR_REC_Pos 8 +#define MCAN_ECR_REC_Msk (0x7fu << MCAN_ECR_REC_Pos) /**< \brief (MCAN_ECR) Receive Error Counter */ +#define MCAN_ECR_RP (0x1u << 15) /**< \brief (MCAN_ECR) Receive Error Passive */ +#define MCAN_ECR_CEL_Pos 16 +#define MCAN_ECR_CEL_Msk (0xffu << MCAN_ECR_CEL_Pos) /**< \brief (MCAN_ECR) CAN Error Logging (cleared on read) */ +/* -------- MCAN_PSR : (MCAN Offset: 0x44) Protocol Status Register -------- */ +#define MCAN_PSR_LEC_Pos 0 +#define MCAN_PSR_LEC_Msk (0x7u << MCAN_PSR_LEC_Pos) /**< \brief (MCAN_PSR) Last Error Code (set to 111 on read) */ +#define MCAN_PSR_LEC_NO_ERROR (0x0u << 0) /**< \brief (MCAN_PSR) No error occurred since LEC has been reset by successful reception or transmission. */ +#define MCAN_PSR_LEC_STUFF_ERROR (0x1u << 0) /**< \brief (MCAN_PSR) More than 5 equal bits in a sequence have occurred in a part of a received meSsage where this is not allowed. */ +#define MCAN_PSR_LEC_FORM_ERROR (0x2u << 0) /**< \brief (MCAN_PSR) A fixed format part of a received frame has the wrong format. */ +#define MCAN_PSR_LEC_ACK_ERROR (0x3u << 0) /**< \brief (MCAN_PSR) The message transmitted by the MCAN was not acknowledged by another node. */ +#define MCAN_PSR_LEC_BIT1_ERROR (0x4u << 0) /**< \brief (MCAN_PSR) During the transmission of a message (with the exception of the arbitration field), the device wanted to send a recessive level (bit of logical value '1'), but the monitored bus value was dominant. */ +#define MCAN_PSR_LEC_BIT0_ERROR (0x5u << 0) /**< \brief (MCAN_PSR) During the transmission of a message (or acknowledge bit, or active error flag, or overload flag), the device wanted to send a dominant level (data or identifier bit logical value '0'), but the monitored bus value was recessive. During Bus_Off recovery this status is set each time a sequence of 11 recessive bits has been monitored. This enables the processor to monitor the proceeding of the Bus_Off recovery sequence (indicating the bus is not stuck at dominant or continuously disturbed). */ +#define MCAN_PSR_LEC_CRC_ERROR (0x6u << 0) /**< \brief (MCAN_PSR) The CRC check sum of a received message was incorrect. The CRC of an incoming message does not match with the CRC calculated from the received data. */ +#define MCAN_PSR_LEC_NO_CHANGE (0x7u << 0) /**< \brief (MCAN_PSR) Any read access to the Protocol Status Register re-initializes the LEC to '7'. When the LEC shows the value '7', no CAN bus event was detected since the last processor read access to the Protocol Status Register. */ +#define MCAN_PSR_ACT_Pos 3 +#define MCAN_PSR_ACT_Msk (0x3u << MCAN_PSR_ACT_Pos) /**< \brief (MCAN_PSR) Activity */ +#define MCAN_PSR_ACT_SYNCHRONIZING (0x0u << 3) /**< \brief (MCAN_PSR) Node is synchronizing on CAN communication */ +#define MCAN_PSR_ACT_IDLE (0x1u << 3) /**< \brief (MCAN_PSR) Node is neither receiver nor transmitter */ +#define MCAN_PSR_ACT_RECEIVER (0x2u << 3) /**< \brief (MCAN_PSR) Node is operating as receiver */ +#define MCAN_PSR_ACT_TRANSMITTER (0x3u << 3) /**< \brief (MCAN_PSR) Node is operating as transmitter */ +#define MCAN_PSR_EP (0x1u << 5) /**< \brief (MCAN_PSR) Error Passive */ +#define MCAN_PSR_EW (0x1u << 6) /**< \brief (MCAN_PSR) Warning Status */ +#define MCAN_PSR_BO (0x1u << 7) /**< \brief (MCAN_PSR) Bus_Off Status */ +#define MCAN_PSR_FLEC_Pos 8 +#define MCAN_PSR_FLEC_Msk (0x7u << MCAN_PSR_FLEC_Pos) /**< \brief (MCAN_PSR) Fast Last Error Code (set to 111 on read) */ +#define MCAN_PSR_DLEC_Pos 8 +#define MCAN_PSR_DLEC_Msk (0x7u << MCAN_PSR_DLEC_Pos) /**< \brief (MCAN_PSR) Data Phase Last Error Code (set to 111 on read) */ +#define MCAN_PSR_RESI (0x1u << 11) /**< \brief (MCAN_PSR) ESI Flag of Last Received CAN FD Message (cleared on read) */ +#define MCAN_PSR_RBRS (0x1u << 12) /**< \brief (MCAN_PSR) BRS Flag of Last Received CAN FD Message (cleared on read) */ +#define MCAN_PSR_REDL (0x1u << 13) /**< \brief (MCAN_PSR) Received a CAN FD Message (cleared on read) */ +#define MCAN_PSR_RFDF (0x1u << 13) /**< \brief (MCAN_PSR) Received a CAN FD Message (cleared on read) */ +#define MCAN_PSR_PXE (0x1u << 14) /**< \brief (MCAN_PSR) Protocol Exception Event (cleared on read) */ +#define MCAN_PSR_TDCV_Pos 16 +#define MCAN_PSR_TDCV_Msk (0x7fu << MCAN_PSR_TDCV_Pos) /**< \brief (MCAN_PSR) Transmitter Delay Compensation Value */ +/* -------- MCAN_TDCR : (MCAN Offset: 0x48) Transmit Delay Compensation Register -------- */ +#define MCAN_TDCR_TDCF_Pos 0 +#define MCAN_TDCR_TDCF_Msk (0x7fu << MCAN_TDCR_TDCF_Pos) /**< \brief (MCAN_TDCR) Transmitter Delay Compensation Filter */ +#define MCAN_TDCR_TDCF(value) ((MCAN_TDCR_TDCF_Msk & ((value) << MCAN_TDCR_TDCF_Pos))) +#define MCAN_TDCR_TDCO_Pos 8 +#define MCAN_TDCR_TDCO_Msk (0x7fu << MCAN_TDCR_TDCO_Pos) /**< \brief (MCAN_TDCR) Transmitter Delay Compensation Offset */ +#define MCAN_TDCR_TDCO(value) ((MCAN_TDCR_TDCO_Msk & ((value) << MCAN_TDCR_TDCO_Pos))) +/* -------- MCAN_IR : (MCAN Offset: 0x50) Interrupt Register -------- */ +#define MCAN_IR_RF0N (0x1u << 0) /**< \brief (MCAN_IR) Receive FIFO 0 New Message */ +#define MCAN_IR_RF0W (0x1u << 1) /**< \brief (MCAN_IR) Receive FIFO 0 Watermark Reached */ +#define MCAN_IR_RF0F (0x1u << 2) /**< \brief (MCAN_IR) Receive FIFO 0 Full */ +#define MCAN_IR_RF0L (0x1u << 3) /**< \brief (MCAN_IR) Receive FIFO 0 Message Lost */ +#define MCAN_IR_RF1N (0x1u << 4) /**< \brief (MCAN_IR) Receive FIFO 1 New Message */ +#define MCAN_IR_RF1W (0x1u << 5) /**< \brief (MCAN_IR) Receive FIFO 1 Watermark Reached */ +#define MCAN_IR_RF1F (0x1u << 6) /**< \brief (MCAN_IR) Receive FIFO 1 Full */ +#define MCAN_IR_RF1L (0x1u << 7) /**< \brief (MCAN_IR) Receive FIFO 1 Message Lost */ +#define MCAN_IR_HPM (0x1u << 8) /**< \brief (MCAN_IR) High Priority Message */ +#define MCAN_IR_TC (0x1u << 9) /**< \brief (MCAN_IR) Transmission Completed */ +#define MCAN_IR_TCF (0x1u << 10) /**< \brief (MCAN_IR) Transmission Cancellation Finished */ +#define MCAN_IR_TFE (0x1u << 11) /**< \brief (MCAN_IR) Tx FIFO Empty */ +#define MCAN_IR_TEFN (0x1u << 12) /**< \brief (MCAN_IR) Tx Event FIFO New Entry */ +#define MCAN_IR_TEFW (0x1u << 13) /**< \brief (MCAN_IR) Tx Event FIFO Watermark Reached */ +#define MCAN_IR_TEFF (0x1u << 14) /**< \brief (MCAN_IR) Tx Event FIFO Full */ +#define MCAN_IR_TEFL (0x1u << 15) /**< \brief (MCAN_IR) Tx Event FIFO Element Lost */ +#define MCAN_IR_TSW (0x1u << 16) /**< \brief (MCAN_IR) Timestamp Wraparound */ +#define MCAN_IR_MRAF (0x1u << 17) /**< \brief (MCAN_IR) Message RAM Access Failure */ +#define MCAN_IR_TOO (0x1u << 18) /**< \brief (MCAN_IR) Timeout Occurred */ +#define MCAN_IR_DRX (0x1u << 19) /**< \brief (MCAN_IR) Message stored to Dedicated Receive Buffer */ +#define MCAN_IR_ELO (0x1u << 22) /**< \brief (MCAN_IR) Error Logging Overflow */ +#define MCAN_IR_EP (0x1u << 23) /**< \brief (MCAN_IR) Error Passive */ +#define MCAN_IR_EW (0x1u << 24) /**< \brief (MCAN_IR) Warning Status */ +#define MCAN_IR_BO (0x1u << 25) /**< \brief (MCAN_IR) Bus_Off Status */ +#define MCAN_IR_WDI (0x1u << 26) /**< \brief (MCAN_IR) Watchdog Interrupt */ +#define MCAN_IR_CRCE (0x1u << 27) /**< \brief (MCAN_IR) CRC Error */ +#define MCAN_IR_BE (0x1u << 28) /**< \brief (MCAN_IR) Bit Error */ +#define MCAN_IR_ACKE (0x1u << 29) /**< \brief (MCAN_IR) Acknowledge Error */ +#define MCAN_IR_FOE (0x1u << 30) /**< \brief (MCAN_IR) Format Error */ +#define MCAN_IR_STE (0x1u << 31) /**< \brief (MCAN_IR) Stuff Error */ +#define MCAN_IR_PEA (0x1u << 27) /**< \brief (MCAN_IR) Protocol Error in Arbitration Phase */ +#define MCAN_IR_PED (0x1u << 28) /**< \brief (MCAN_IR) Protocol Error in Data Phase */ +#define MCAN_IR_ARA (0x1u << 29) /**< \brief (MCAN_IR) Access to Reserved Address */ +/* -------- MCAN_IE : (MCAN Offset: 0x54) Interrupt Enable Register -------- */ +#define MCAN_IE_RF0NE (0x1u << 0) /**< \brief (MCAN_IE) Receive FIFO 0 New Message Interrupt Enable */ +#define MCAN_IE_RF0WE (0x1u << 1) /**< \brief (MCAN_IE) Receive FIFO 0 Watermark Reached Interrupt Enable */ +#define MCAN_IE_RF0FE (0x1u << 2) /**< \brief (MCAN_IE) Receive FIFO 0 Full Interrupt Enable */ +#define MCAN_IE_RF0LE (0x1u << 3) /**< \brief (MCAN_IE) Receive FIFO 0 Message Lost Interrupt Enable */ +#define MCAN_IE_RF1NE (0x1u << 4) /**< \brief (MCAN_IE) Receive FIFO 1 New Message Interrupt Enable */ +#define MCAN_IE_RF1WE (0x1u << 5) /**< \brief (MCAN_IE) Receive FIFO 1 Watermark Reached Interrupt Enable */ +#define MCAN_IE_RF1FE (0x1u << 6) /**< \brief (MCAN_IE) Receive FIFO 1 Full Interrupt Enable */ +#define MCAN_IE_RF1LE (0x1u << 7) /**< \brief (MCAN_IE) Receive FIFO 1 Message Lost Interrupt Enable */ +#define MCAN_IE_HPME (0x1u << 8) /**< \brief (MCAN_IE) High Priority Message Interrupt Enable */ +#define MCAN_IE_TCE (0x1u << 9) /**< \brief (MCAN_IE) Transmission Completed Interrupt Enable */ +#define MCAN_IE_TCFE (0x1u << 10) /**< \brief (MCAN_IE) Transmission Cancellation Finished Interrupt Enable */ +#define MCAN_IE_TFEE (0x1u << 11) /**< \brief (MCAN_IE) Tx FIFO Empty Interrupt Enable */ +#define MCAN_IE_TEFNE (0x1u << 12) /**< \brief (MCAN_IE) Tx Event FIFO New Entry Interrupt Enable */ +#define MCAN_IE_TEFWE (0x1u << 13) /**< \brief (MCAN_IE) Tx Event FIFO Watermark Reached Interrupt Enable */ +#define MCAN_IE_TEFFE (0x1u << 14) /**< \brief (MCAN_IE) Tx Event FIFO Full Interrupt Enable */ +#define MCAN_IE_TEFLE (0x1u << 15) /**< \brief (MCAN_IE) Tx Event FIFO Event Lost Interrupt Enable */ +#define MCAN_IE_TSWE (0x1u << 16) /**< \brief (MCAN_IE) Timestamp Wraparound Interrupt Enable */ +#define MCAN_IE_MRAFE (0x1u << 17) /**< \brief (MCAN_IE) Message RAM Access Failure Interrupt Enable */ +#define MCAN_IE_TOOE (0x1u << 18) /**< \brief (MCAN_IE) Timeout Occurred Interrupt Enable */ +#define MCAN_IE_DRXE (0x1u << 19) /**< \brief (MCAN_IE) Message stored to Dedicated Receive Buffer Interrupt Enable */ +#define MCAN_IE_ELOE (0x1u << 22) /**< \brief (MCAN_IE) Error Logging Overflow Interrupt Enable */ +#define MCAN_IE_EPE (0x1u << 23) /**< \brief (MCAN_IE) Error Passive Interrupt Enable */ +#define MCAN_IE_EWE (0x1u << 24) /**< \brief (MCAN_IE) Warning Status Interrupt Enable */ +#define MCAN_IE_BOE (0x1u << 25) /**< \brief (MCAN_IE) Bus_Off Status Interrupt Enable */ +#define MCAN_IE_WDIE (0x1u << 26) /**< \brief (MCAN_IE) Watchdog Interrupt Enable */ +#define MCAN_IE_CRCEE (0x1u << 27) /**< \brief (MCAN_IE) CRC Error Interrupt Enable */ +#define MCAN_IE_BEE (0x1u << 28) /**< \brief (MCAN_IE) Bit Error Interrupt Enable */ +#define MCAN_IE_ACKEE (0x1u << 29) /**< \brief (MCAN_IE) Acknowledge Error Interrupt Enable */ +#define MCAN_IE_FOEE (0x1u << 30) /**< \brief (MCAN_IE) Format Error Interrupt Enable */ +#define MCAN_IE_STEE (0x1u << 31) /**< \brief (MCAN_IE) Stuff Error Interrupt Enable */ +#define MCAN_IE_PEAE (0x1u << 27) /**< \brief (MCAN_IE) Protocol Error in Arbitration Phase Enable */ +#define MCAN_IE_PEDE (0x1u << 28) /**< \brief (MCAN_IE) Protocol Error in Data Phase Enable */ +#define MCAN_IE_ARAE (0x1u << 29) /**< \brief (MCAN_IE) Access to Reserved Address Enable */ +/* -------- MCAN_ILS : (MCAN Offset: 0x58) Interrupt Line Select Register -------- */ +#define MCAN_ILS_RF0NL (0x1u << 0) /**< \brief (MCAN_ILS) Receive FIFO 0 New Message Interrupt Line */ +#define MCAN_ILS_RF0WL (0x1u << 1) /**< \brief (MCAN_ILS) Receive FIFO 0 Watermark Reached Interrupt Line */ +#define MCAN_ILS_RF0FL (0x1u << 2) /**< \brief (MCAN_ILS) Receive FIFO 0 Full Interrupt Line */ +#define MCAN_ILS_RF0LL (0x1u << 3) /**< \brief (MCAN_ILS) Receive FIFO 0 Message Lost Interrupt Line */ +#define MCAN_ILS_RF1NL (0x1u << 4) /**< \brief (MCAN_ILS) Receive FIFO 1 New Message Interrupt Line */ +#define MCAN_ILS_RF1WL (0x1u << 5) /**< \brief (MCAN_ILS) Receive FIFO 1 Watermark Reached Interrupt Line */ +#define MCAN_ILS_RF1FL (0x1u << 6) /**< \brief (MCAN_ILS) Receive FIFO 1 Full Interrupt Line */ +#define MCAN_ILS_RF1LL (0x1u << 7) /**< \brief (MCAN_ILS) Receive FIFO 1 Message Lost Interrupt Line */ +#define MCAN_ILS_HPML (0x1u << 8) /**< \brief (MCAN_ILS) High Priority Message Interrupt Line */ +#define MCAN_ILS_TCL (0x1u << 9) /**< \brief (MCAN_ILS) Transmission Completed Interrupt Line */ +#define MCAN_ILS_TCFL (0x1u << 10) /**< \brief (MCAN_ILS) Transmission Cancellation Finished Interrupt Line */ +#define MCAN_ILS_TFEL (0x1u << 11) /**< \brief (MCAN_ILS) Tx FIFO Empty Interrupt Line */ +#define MCAN_ILS_TEFNL (0x1u << 12) /**< \brief (MCAN_ILS) Tx Event FIFO New Entry Interrupt Line */ +#define MCAN_ILS_TEFWL (0x1u << 13) /**< \brief (MCAN_ILS) Tx Event FIFO Watermark Reached Interrupt Line */ +#define MCAN_ILS_TEFFL (0x1u << 14) /**< \brief (MCAN_ILS) Tx Event FIFO Full Interrupt Line */ +#define MCAN_ILS_TEFLL (0x1u << 15) /**< \brief (MCAN_ILS) Tx Event FIFO Event Lost Interrupt Line */ +#define MCAN_ILS_TSWL (0x1u << 16) /**< \brief (MCAN_ILS) Timestamp Wraparound Interrupt Line */ +#define MCAN_ILS_MRAFL (0x1u << 17) /**< \brief (MCAN_ILS) Message RAM Access Failure Interrupt Line */ +#define MCAN_ILS_TOOL (0x1u << 18) /**< \brief (MCAN_ILS) Timeout Occurred Interrupt Line */ +#define MCAN_ILS_DRXL (0x1u << 19) /**< \brief (MCAN_ILS) Message stored to Dedicated Receive Buffer Interrupt Line */ +#define MCAN_ILS_ELOL (0x1u << 22) /**< \brief (MCAN_ILS) Error Logging Overflow Interrupt Line */ +#define MCAN_ILS_EPL (0x1u << 23) /**< \brief (MCAN_ILS) Error Passive Interrupt Line */ +#define MCAN_ILS_EWL (0x1u << 24) /**< \brief (MCAN_ILS) Warning Status Interrupt Line */ +#define MCAN_ILS_BOL (0x1u << 25) /**< \brief (MCAN_ILS) Bus_Off Status Interrupt Line */ +#define MCAN_ILS_WDIL (0x1u << 26) /**< \brief (MCAN_ILS) Watchdog Interrupt Line */ +#define MCAN_ILS_CRCEL (0x1u << 27) /**< \brief (MCAN_ILS) CRC Error Interrupt Line */ +#define MCAN_ILS_BEL (0x1u << 28) /**< \brief (MCAN_ILS) Bit Error Interrupt Line */ +#define MCAN_ILS_ACKEL (0x1u << 29) /**< \brief (MCAN_ILS) Acknowledge Error Interrupt Line */ +#define MCAN_ILS_FOEL (0x1u << 30) /**< \brief (MCAN_ILS) Format Error Interrupt Line */ +#define MCAN_ILS_STEL (0x1u << 31) /**< \brief (MCAN_ILS) Stuff Error Interrupt Line */ +#define MCAN_ILS_PEAL (0x1u << 27) /**< \brief (MCAN_ILS) Protocol Error in Arbitration Phase Line */ +#define MCAN_ILS_PEDL (0x1u << 28) /**< \brief (MCAN_ILS) Protocol Error in Data Phase Line */ +#define MCAN_ILS_ARAL (0x1u << 29) /**< \brief (MCAN_ILS) Access to Reserved Address Line */ +/* -------- MCAN_ILE : (MCAN Offset: 0x5C) Interrupt Line Enable Register -------- */ +#define MCAN_ILE_EINT0 (0x1u << 0) /**< \brief (MCAN_ILE) Enable Interrupt Line 0 */ +#define MCAN_ILE_EINT1 (0x1u << 1) /**< \brief (MCAN_ILE) Enable Interrupt Line 1 */ +/* -------- MCAN_GFC : (MCAN Offset: 0x80) Global Filter Configuration Register -------- */ +#define MCAN_GFC_RRFE (0x1u << 0) /**< \brief (MCAN_GFC) Reject Remote Frames Extended */ +#define MCAN_GFC_RRFE_FILTER (0x0u << 0) /**< \brief (MCAN_GFC) Filter remote frames with 29-bit extended IDs. */ +#define MCAN_GFC_RRFE_REJECT (0x1u << 0) /**< \brief (MCAN_GFC) Reject all remote frames with 29-bit extended IDs. */ +#define MCAN_GFC_RRFS (0x1u << 1) /**< \brief (MCAN_GFC) Reject Remote Frames Standard */ +#define MCAN_GFC_RRFS_FILTER (0x0u << 1) /**< \brief (MCAN_GFC) Filter remote frames with 11-bit standard IDs. */ +#define MCAN_GFC_RRFS_REJECT (0x1u << 1) /**< \brief (MCAN_GFC) Reject all remote frames with 11-bit standard IDs. */ +#define MCAN_GFC_ANFE_Pos 2 +#define MCAN_GFC_ANFE_Msk (0x3u << MCAN_GFC_ANFE_Pos) /**< \brief (MCAN_GFC) Accept Non-matching Frames Extended */ +#define MCAN_GFC_ANFE(value) ((MCAN_GFC_ANFE_Msk & ((value) << MCAN_GFC_ANFE_Pos))) +#define MCAN_GFC_ANFE_RX_FIFO_0 (0x0u << 2) /**< \brief (MCAN_GFC) Message stored in Receive FIFO 0 */ +#define MCAN_GFC_ANFE_RX_FIFO_1 (0x1u << 2) /**< \brief (MCAN_GFC) Message stored in Receive FIFO 1 */ +#define MCAN_GFC_ANFS_Pos 4 +#define MCAN_GFC_ANFS_Msk (0x3u << MCAN_GFC_ANFS_Pos) /**< \brief (MCAN_GFC) Accept Non-matching Frames Standard */ +#define MCAN_GFC_ANFS(value) ((MCAN_GFC_ANFS_Msk & ((value) << MCAN_GFC_ANFS_Pos))) +#define MCAN_GFC_ANFS_RX_FIFO_0 (0x0u << 4) /**< \brief (MCAN_GFC) Message stored in Receive FIFO 0 */ +#define MCAN_GFC_ANFS_RX_FIFO_1 (0x1u << 4) /**< \brief (MCAN_GFC) Message stored in Receive FIFO 1 */ +/* -------- MCAN_SIDFC : (MCAN Offset: 0x84) Standard ID Filter Configuration Register -------- */ +#define MCAN_SIDFC_FLSSA_Pos 2 +#define MCAN_SIDFC_FLSSA_Msk (0x3fffu << MCAN_SIDFC_FLSSA_Pos) /**< \brief (MCAN_SIDFC) Filter List Standard Start Address */ +#define MCAN_SIDFC_FLSSA(value) ((MCAN_SIDFC_FLSSA_Msk & ((value) << MCAN_SIDFC_FLSSA_Pos))) +#define MCAN_SIDFC_LSS_Pos 16 +#define MCAN_SIDFC_LSS_Msk (0xffu << MCAN_SIDFC_LSS_Pos) /**< \brief (MCAN_SIDFC) List Size Standard */ +#define MCAN_SIDFC_LSS(value) ((MCAN_SIDFC_LSS_Msk & ((value) << MCAN_SIDFC_LSS_Pos))) +/* -------- MCAN_XIDFC : (MCAN Offset: 0x88) Extended ID Filter Configuration Register -------- */ +#define MCAN_XIDFC_FLESA_Pos 2 +#define MCAN_XIDFC_FLESA_Msk (0x3fffu << MCAN_XIDFC_FLESA_Pos) /**< \brief (MCAN_XIDFC) Filter List Extended Start Address */ +#define MCAN_XIDFC_FLESA(value) ((MCAN_XIDFC_FLESA_Msk & ((value) << MCAN_XIDFC_FLESA_Pos))) +#define MCAN_XIDFC_LSE_Pos 16 +#define MCAN_XIDFC_LSE_Msk (0x7fu << MCAN_XIDFC_LSE_Pos) /**< \brief (MCAN_XIDFC) List Size Extended */ +#define MCAN_XIDFC_LSE(value) ((MCAN_XIDFC_LSE_Msk & ((value) << MCAN_XIDFC_LSE_Pos))) +/* -------- MCAN_XIDAM : (MCAN Offset: 0x90) Extended ID AND Mask Register -------- */ +#define MCAN_XIDAM_EIDM_Pos 0 +#define MCAN_XIDAM_EIDM_Msk (0x1fffffffu << MCAN_XIDAM_EIDM_Pos) /**< \brief (MCAN_XIDAM) Extended ID Mask */ +#define MCAN_XIDAM_EIDM(value) ((MCAN_XIDAM_EIDM_Msk & ((value) << MCAN_XIDAM_EIDM_Pos))) +/* -------- MCAN_HPMS : (MCAN Offset: 0x94) High Priority Message Status Register -------- */ +#define MCAN_HPMS_BIDX_Pos 0 +#define MCAN_HPMS_BIDX_Msk (0x3fu << MCAN_HPMS_BIDX_Pos) /**< \brief (MCAN_HPMS) Buffer Index */ +#define MCAN_HPMS_MSI_Pos 6 +#define MCAN_HPMS_MSI_Msk (0x3u << MCAN_HPMS_MSI_Pos) /**< \brief (MCAN_HPMS) Message Storage Indicator */ +#define MCAN_HPMS_MSI_NO_FIFO_SEL (0x0u << 6) /**< \brief (MCAN_HPMS) No FIFO selected. */ +#define MCAN_HPMS_MSI_LOST (0x1u << 6) /**< \brief (MCAN_HPMS) FIFO message lost. */ +#define MCAN_HPMS_MSI_FIFO_0 (0x2u << 6) /**< \brief (MCAN_HPMS) Message stored in FIFO 0. */ +#define MCAN_HPMS_MSI_FIFO_1 (0x3u << 6) /**< \brief (MCAN_HPMS) Message stored in FIFO 1. */ +#define MCAN_HPMS_FIDX_Pos 8 +#define MCAN_HPMS_FIDX_Msk (0x7fu << MCAN_HPMS_FIDX_Pos) /**< \brief (MCAN_HPMS) Filter Index */ +#define MCAN_HPMS_FLST (0x1u << 15) /**< \brief (MCAN_HPMS) Filter List */ +/* -------- MCAN_NDAT1 : (MCAN Offset: 0x98) New Data 1 Register -------- */ +#define MCAN_NDAT1_ND0 (0x1u << 0) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND1 (0x1u << 1) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND2 (0x1u << 2) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND3 (0x1u << 3) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND4 (0x1u << 4) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND5 (0x1u << 5) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND6 (0x1u << 6) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND7 (0x1u << 7) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND8 (0x1u << 8) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND9 (0x1u << 9) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND10 (0x1u << 10) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND11 (0x1u << 11) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND12 (0x1u << 12) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND13 (0x1u << 13) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND14 (0x1u << 14) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND15 (0x1u << 15) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND16 (0x1u << 16) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND17 (0x1u << 17) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND18 (0x1u << 18) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND19 (0x1u << 19) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND20 (0x1u << 20) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND21 (0x1u << 21) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND22 (0x1u << 22) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND23 (0x1u << 23) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND24 (0x1u << 24) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND25 (0x1u << 25) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND26 (0x1u << 26) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND27 (0x1u << 27) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND28 (0x1u << 28) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND29 (0x1u << 29) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND30 (0x1u << 30) /**< \brief (MCAN_NDAT1) New Data */ +#define MCAN_NDAT1_ND31 (0x1u << 31) /**< \brief (MCAN_NDAT1) New Data */ +/* -------- MCAN_NDAT2 : (MCAN Offset: 0x9C) New Data 2 Register -------- */ +#define MCAN_NDAT2_ND32 (0x1u << 0) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND33 (0x1u << 1) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND34 (0x1u << 2) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND35 (0x1u << 3) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND36 (0x1u << 4) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND37 (0x1u << 5) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND38 (0x1u << 6) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND39 (0x1u << 7) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND40 (0x1u << 8) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND41 (0x1u << 9) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND42 (0x1u << 10) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND43 (0x1u << 11) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND44 (0x1u << 12) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND45 (0x1u << 13) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND46 (0x1u << 14) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND47 (0x1u << 15) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND48 (0x1u << 16) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND49 (0x1u << 17) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND50 (0x1u << 18) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND51 (0x1u << 19) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND52 (0x1u << 20) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND53 (0x1u << 21) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND54 (0x1u << 22) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND55 (0x1u << 23) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND56 (0x1u << 24) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND57 (0x1u << 25) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND58 (0x1u << 26) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND59 (0x1u << 27) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND60 (0x1u << 28) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND61 (0x1u << 29) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND62 (0x1u << 30) /**< \brief (MCAN_NDAT2) New Data */ +#define MCAN_NDAT2_ND63 (0x1u << 31) /**< \brief (MCAN_NDAT2) New Data */ +/* -------- MCAN_RXF0C : (MCAN Offset: 0xA0) Receive FIFO 0 Configuration Register -------- */ +#define MCAN_RXF0C_F0SA_Pos 2 +#define MCAN_RXF0C_F0SA_Msk (0x3fffu << MCAN_RXF0C_F0SA_Pos) /**< \brief (MCAN_RXF0C) Receive FIFO 0 Start Address */ +#define MCAN_RXF0C_F0SA(value) ((MCAN_RXF0C_F0SA_Msk & ((value) << MCAN_RXF0C_F0SA_Pos))) +#define MCAN_RXF0C_F0S_Pos 16 +#define MCAN_RXF0C_F0S_Msk (0x7fu << MCAN_RXF0C_F0S_Pos) /**< \brief (MCAN_RXF0C) Receive FIFO 0 Start Address */ +#define MCAN_RXF0C_F0S(value) ((MCAN_RXF0C_F0S_Msk & ((value) << MCAN_RXF0C_F0S_Pos))) +#define MCAN_RXF0C_F0WM_Pos 24 +#define MCAN_RXF0C_F0WM_Msk (0x7fu << MCAN_RXF0C_F0WM_Pos) /**< \brief (MCAN_RXF0C) Receive FIFO 0 Watermark */ +#define MCAN_RXF0C_F0WM(value) ((MCAN_RXF0C_F0WM_Msk & ((value) << MCAN_RXF0C_F0WM_Pos))) +#define MCAN_RXF0C_F0OM (0x1u << 31) /**< \brief (MCAN_RXF0C) FIFO 0 Operation Mode */ +/* -------- MCAN_RXF0S : (MCAN Offset: 0xA4) Receive FIFO 0 Status Register -------- */ +#define MCAN_RXF0S_F0FL_Pos 0 +#define MCAN_RXF0S_F0FL_Msk (0x7fu << MCAN_RXF0S_F0FL_Pos) /**< \brief (MCAN_RXF0S) Receive FIFO 0 Fill Level */ +#define MCAN_RXF0S_F0GI_Pos 8 +#define MCAN_RXF0S_F0GI_Msk (0x3fu << MCAN_RXF0S_F0GI_Pos) /**< \brief (MCAN_RXF0S) Receive FIFO 0 Get Index */ +#define MCAN_RXF0S_F0PI_Pos 16 +#define MCAN_RXF0S_F0PI_Msk (0x3fu << MCAN_RXF0S_F0PI_Pos) /**< \brief (MCAN_RXF0S) Receive FIFO 0 Put Index */ +#define MCAN_RXF0S_F0F (0x1u << 24) /**< \brief (MCAN_RXF0S) Receive FIFO 0 Fill Level */ +#define MCAN_RXF0S_RF0L (0x1u << 25) /**< \brief (MCAN_RXF0S) Receive FIFO 0 Message Lost */ +/* -------- MCAN_RXF0A : (MCAN Offset: 0xA8) Receive FIFO 0 Acknowledge Register -------- */ +#define MCAN_RXF0A_F0AI_Pos 0 +#define MCAN_RXF0A_F0AI_Msk (0x3fu << MCAN_RXF0A_F0AI_Pos) /**< \brief (MCAN_RXF0A) Receive FIFO 0 Acknowledge Index */ +#define MCAN_RXF0A_F0AI(value) ((MCAN_RXF0A_F0AI_Msk & ((value) << MCAN_RXF0A_F0AI_Pos))) +/* -------- MCAN_RXBC : (MCAN Offset: 0xAC) Receive Rx Buffer Configuration Register -------- */ +#define MCAN_RXBC_RBSA_Pos 2 +#define MCAN_RXBC_RBSA_Msk (0x3fffu << MCAN_RXBC_RBSA_Pos) /**< \brief (MCAN_RXBC) Receive Buffer Start Address */ +#define MCAN_RXBC_RBSA(value) ((MCAN_RXBC_RBSA_Msk & ((value) << MCAN_RXBC_RBSA_Pos))) +/* -------- MCAN_RXF1C : (MCAN Offset: 0xB0) Receive FIFO 1 Configuration Register -------- */ +#define MCAN_RXF1C_F1SA_Pos 2 +#define MCAN_RXF1C_F1SA_Msk (0x3fffu << MCAN_RXF1C_F1SA_Pos) /**< \brief (MCAN_RXF1C) Receive FIFO 1 Start Address */ +#define MCAN_RXF1C_F1SA(value) ((MCAN_RXF1C_F1SA_Msk & ((value) << MCAN_RXF1C_F1SA_Pos))) +#define MCAN_RXF1C_F1S_Pos 16 +#define MCAN_RXF1C_F1S_Msk (0x7fu << MCAN_RXF1C_F1S_Pos) /**< \brief (MCAN_RXF1C) Receive FIFO 1 Start Address */ +#define MCAN_RXF1C_F1S(value) ((MCAN_RXF1C_F1S_Msk & ((value) << MCAN_RXF1C_F1S_Pos))) +#define MCAN_RXF1C_F1WM_Pos 24 +#define MCAN_RXF1C_F1WM_Msk (0x7fu << MCAN_RXF1C_F1WM_Pos) /**< \brief (MCAN_RXF1C) Receive FIFO 1 Watermark */ +#define MCAN_RXF1C_F1WM(value) ((MCAN_RXF1C_F1WM_Msk & ((value) << MCAN_RXF1C_F1WM_Pos))) +#define MCAN_RXF1C_F1OM (0x1u << 31) /**< \brief (MCAN_RXF1C) FIFO 1 Operation Mode */ +/* -------- MCAN_RXF1S : (MCAN Offset: 0xB4) Receive FIFO 1 Status Register -------- */ +#define MCAN_RXF1S_F1FL_Pos 0 +#define MCAN_RXF1S_F1FL_Msk (0x7fu << MCAN_RXF1S_F1FL_Pos) /**< \brief (MCAN_RXF1S) Receive FIFO 1 Fill Level */ +#define MCAN_RXF1S_F1GI_Pos 8 +#define MCAN_RXF1S_F1GI_Msk (0x3fu << MCAN_RXF1S_F1GI_Pos) /**< \brief (MCAN_RXF1S) Receive FIFO 1 Get Index */ +#define MCAN_RXF1S_F1PI_Pos 16 +#define MCAN_RXF1S_F1PI_Msk (0x3fu << MCAN_RXF1S_F1PI_Pos) /**< \brief (MCAN_RXF1S) Receive FIFO 1 Put Index */ +#define MCAN_RXF1S_F1F (0x1u << 24) /**< \brief (MCAN_RXF1S) Receive FIFO 1 Fill Level */ +#define MCAN_RXF1S_RF1L (0x1u << 25) /**< \brief (MCAN_RXF1S) Receive FIFO 1 Message Lost */ +#define MCAN_RXF1S_DMS_Pos 30 +#define MCAN_RXF1S_DMS_Msk (0x3u << MCAN_RXF1S_DMS_Pos) /**< \brief (MCAN_RXF1S) Debug Message Status */ +#define MCAN_RXF1S_DMS_IDLE (0x0u << 30) /**< \brief (MCAN_RXF1S) Idle state, wait for reception of debug messages, DMA request is cleared. */ +#define MCAN_RXF1S_DMS_MSG_A (0x1u << 30) /**< \brief (MCAN_RXF1S) Debug message A received. */ +#define MCAN_RXF1S_DMS_MSG_AB (0x2u << 30) /**< \brief (MCAN_RXF1S) Debug messages A, B received. */ +#define MCAN_RXF1S_DMS_MSG_ABC (0x3u << 30) /**< \brief (MCAN_RXF1S) Debug messages A, B, C received, DMA request is set. */ +/* -------- MCAN_RXF1A : (MCAN Offset: 0xB8) Receive FIFO 1 Acknowledge Register -------- */ +#define MCAN_RXF1A_F1AI_Pos 0 +#define MCAN_RXF1A_F1AI_Msk (0x3fu << MCAN_RXF1A_F1AI_Pos) /**< \brief (MCAN_RXF1A) Receive FIFO 1 Acknowledge Index */ +#define MCAN_RXF1A_F1AI(value) ((MCAN_RXF1A_F1AI_Msk & ((value) << MCAN_RXF1A_F1AI_Pos))) +/* -------- MCAN_RXESC : (MCAN Offset: 0xBC) Receive Buffer / FIFO Element Size Configuration Register -------- */ +#define MCAN_RXESC_F0DS_Pos 0 +#define MCAN_RXESC_F0DS_Msk (0x7u << MCAN_RXESC_F0DS_Pos) /**< \brief (MCAN_RXESC) Receive FIFO 0 Data Field Size */ +#define MCAN_RXESC_F0DS(value) ((MCAN_RXESC_F0DS_Msk & ((value) << MCAN_RXESC_F0DS_Pos))) +#define MCAN_RXESC_F0DS_8_BYTE (0x0u << 0) /**< \brief (MCAN_RXESC) 8-byte data field */ +#define MCAN_RXESC_F0DS_12_BYTE (0x1u << 0) /**< \brief (MCAN_RXESC) 12-byte data field */ +#define MCAN_RXESC_F0DS_16_BYTE (0x2u << 0) /**< \brief (MCAN_RXESC) 16-byte data field */ +#define MCAN_RXESC_F0DS_20_BYTE (0x3u << 0) /**< \brief (MCAN_RXESC) 20-byte data field */ +#define MCAN_RXESC_F0DS_24_BYTE (0x4u << 0) /**< \brief (MCAN_RXESC) 24-byte data field */ +#define MCAN_RXESC_F0DS_32_BYTE (0x5u << 0) /**< \brief (MCAN_RXESC) 32-byte data field */ +#define MCAN_RXESC_F0DS_48_BYTE (0x6u << 0) /**< \brief (MCAN_RXESC) 48-byte data field */ +#define MCAN_RXESC_F0DS_64_BYTE (0x7u << 0) /**< \brief (MCAN_RXESC) 64-byte data field */ +#define MCAN_RXESC_F1DS_Pos 4 +#define MCAN_RXESC_F1DS_Msk (0x7u << MCAN_RXESC_F1DS_Pos) /**< \brief (MCAN_RXESC) Receive FIFO 1 Data Field Size */ +#define MCAN_RXESC_F1DS(value) ((MCAN_RXESC_F1DS_Msk & ((value) << MCAN_RXESC_F1DS_Pos))) +#define MCAN_RXESC_F1DS_8_BYTE (0x0u << 4) /**< \brief (MCAN_RXESC) 8-byte data field */ +#define MCAN_RXESC_F1DS_12_BYTE (0x1u << 4) /**< \brief (MCAN_RXESC) 12-byte data field */ +#define MCAN_RXESC_F1DS_16_BYTE (0x2u << 4) /**< \brief (MCAN_RXESC) 16-byte data field */ +#define MCAN_RXESC_F1DS_20_BYTE (0x3u << 4) /**< \brief (MCAN_RXESC) 20-byte data field */ +#define MCAN_RXESC_F1DS_24_BYTE (0x4u << 4) /**< \brief (MCAN_RXESC) 24-byte data field */ +#define MCAN_RXESC_F1DS_32_BYTE (0x5u << 4) /**< \brief (MCAN_RXESC) 32-byte data field */ +#define MCAN_RXESC_F1DS_48_BYTE (0x6u << 4) /**< \brief (MCAN_RXESC) 48-byte data field */ +#define MCAN_RXESC_F1DS_64_BYTE (0x7u << 4) /**< \brief (MCAN_RXESC) 64-byte data field */ +#define MCAN_RXESC_RBDS_Pos 8 +#define MCAN_RXESC_RBDS_Msk (0x7u << MCAN_RXESC_RBDS_Pos) /**< \brief (MCAN_RXESC) Receive Buffer Data Field Size */ +#define MCAN_RXESC_RBDS(value) ((MCAN_RXESC_RBDS_Msk & ((value) << MCAN_RXESC_RBDS_Pos))) +#define MCAN_RXESC_RBDS_8_BYTE (0x0u << 8) /**< \brief (MCAN_RXESC) 8-byte data field */ +#define MCAN_RXESC_RBDS_12_BYTE (0x1u << 8) /**< \brief (MCAN_RXESC) 12-byte data field */ +#define MCAN_RXESC_RBDS_16_BYTE (0x2u << 8) /**< \brief (MCAN_RXESC) 16-byte data field */ +#define MCAN_RXESC_RBDS_20_BYTE (0x3u << 8) /**< \brief (MCAN_RXESC) 20-byte data field */ +#define MCAN_RXESC_RBDS_24_BYTE (0x4u << 8) /**< \brief (MCAN_RXESC) 24-byte data field */ +#define MCAN_RXESC_RBDS_32_BYTE (0x5u << 8) /**< \brief (MCAN_RXESC) 32-byte data field */ +#define MCAN_RXESC_RBDS_48_BYTE (0x6u << 8) /**< \brief (MCAN_RXESC) 48-byte data field */ +#define MCAN_RXESC_RBDS_64_BYTE (0x7u << 8) /**< \brief (MCAN_RXESC) 64-byte data field */ +/* -------- MCAN_TXBC : (MCAN Offset: 0xC0) Transmit Buffer Configuration Register -------- */ +#define MCAN_TXBC_TBSA_Pos 2 +#define MCAN_TXBC_TBSA_Msk (0x3fffu << MCAN_TXBC_TBSA_Pos) /**< \brief (MCAN_TXBC) Tx Buffers Start Address */ +#define MCAN_TXBC_TBSA(value) ((MCAN_TXBC_TBSA_Msk & ((value) << MCAN_TXBC_TBSA_Pos))) +#define MCAN_TXBC_NDTB_Pos 16 +#define MCAN_TXBC_NDTB_Msk (0x3fu << MCAN_TXBC_NDTB_Pos) /**< \brief (MCAN_TXBC) Number of Dedicated Transmit Buffers */ +#define MCAN_TXBC_NDTB(value) ((MCAN_TXBC_NDTB_Msk & ((value) << MCAN_TXBC_NDTB_Pos))) +#define MCAN_TXBC_TFQS_Pos 24 +#define MCAN_TXBC_TFQS_Msk (0x3fu << MCAN_TXBC_TFQS_Pos) /**< \brief (MCAN_TXBC) Transmit FIFO/Queue Size */ +#define MCAN_TXBC_TFQS(value) ((MCAN_TXBC_TFQS_Msk & ((value) << MCAN_TXBC_TFQS_Pos))) +#define MCAN_TXBC_TFQM (0x1u << 30) /**< \brief (MCAN_TXBC) Tx FIFO/Queue Mode */ +/* -------- MCAN_TXFQS : (MCAN Offset: 0xC4) Transmit FIFO/Queue Status Register -------- */ +#define MCAN_TXFQS_TFFL_Pos 0 +#define MCAN_TXFQS_TFFL_Msk (0x3fu << MCAN_TXFQS_TFFL_Pos) /**< \brief (MCAN_TXFQS) Tx FIFO Free Level */ +#define MCAN_TXFQS_TFGI_Pos 8 +#define MCAN_TXFQS_TFGI_Msk (0x1fu << MCAN_TXFQS_TFGI_Pos) /**< \brief (MCAN_TXFQS) Tx FIFO Get Index */ +#define MCAN_TXFQS_TFQPI_Pos 16 +#define MCAN_TXFQS_TFQPI_Msk (0x1fu << MCAN_TXFQS_TFQPI_Pos) /**< \brief (MCAN_TXFQS) Tx FIFO/Queue Put Index */ +#define MCAN_TXFQS_TFQF (0x1u << 21) /**< \brief (MCAN_TXFQS) Tx FIFO/Queue Full */ +/* -------- MCAN_TXESC : (MCAN Offset: 0xC8) Transmit Buffer Element Size Configuration Register -------- */ +#define MCAN_TXESC_TBDS_Pos 0 +#define MCAN_TXESC_TBDS_Msk (0x7u << MCAN_TXESC_TBDS_Pos) /**< \brief (MCAN_TXESC) Tx Buffer Data Field Size */ +#define MCAN_TXESC_TBDS(value) ((MCAN_TXESC_TBDS_Msk & ((value) << MCAN_TXESC_TBDS_Pos))) +#define MCAN_TXESC_TBDS_8_BYTE (0x0u << 0) /**< \brief (MCAN_TXESC) 8-byte data field */ +#define MCAN_TXESC_TBDS_12_BYTE (0x1u << 0) /**< \brief (MCAN_TXESC) 12-byte data field */ +#define MCAN_TXESC_TBDS_16_BYTE (0x2u << 0) /**< \brief (MCAN_TXESC) 16-byte data field */ +#define MCAN_TXESC_TBDS_20_BYTE (0x3u << 0) /**< \brief (MCAN_TXESC) 20-byte data field */ +#define MCAN_TXESC_TBDS_24_BYTE (0x4u << 0) /**< \brief (MCAN_TXESC) 24-byte data field */ +#define MCAN_TXESC_TBDS_32_BYTE (0x5u << 0) /**< \brief (MCAN_TXESC) 32-byte data field */ +#define MCAN_TXESC_TBDS_48_BYTE (0x6u << 0) /**< \brief (MCAN_TXESC) 48- byte data field */ +#define MCAN_TXESC_TBDS_64_BYTE (0x7u << 0) /**< \brief (MCAN_TXESC) 64-byte data field */ +/* -------- MCAN_TXBRP : (MCAN Offset: 0xCC) Transmit Buffer Request Pending Register -------- */ +#define MCAN_TXBRP_TRP0 (0x1u << 0) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 0 */ +#define MCAN_TXBRP_TRP1 (0x1u << 1) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 1 */ +#define MCAN_TXBRP_TRP2 (0x1u << 2) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 2 */ +#define MCAN_TXBRP_TRP3 (0x1u << 3) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 3 */ +#define MCAN_TXBRP_TRP4 (0x1u << 4) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 4 */ +#define MCAN_TXBRP_TRP5 (0x1u << 5) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 5 */ +#define MCAN_TXBRP_TRP6 (0x1u << 6) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 6 */ +#define MCAN_TXBRP_TRP7 (0x1u << 7) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 7 */ +#define MCAN_TXBRP_TRP8 (0x1u << 8) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 8 */ +#define MCAN_TXBRP_TRP9 (0x1u << 9) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 9 */ +#define MCAN_TXBRP_TRP10 (0x1u << 10) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 10 */ +#define MCAN_TXBRP_TRP11 (0x1u << 11) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 11 */ +#define MCAN_TXBRP_TRP12 (0x1u << 12) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 12 */ +#define MCAN_TXBRP_TRP13 (0x1u << 13) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 13 */ +#define MCAN_TXBRP_TRP14 (0x1u << 14) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 14 */ +#define MCAN_TXBRP_TRP15 (0x1u << 15) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 15 */ +#define MCAN_TXBRP_TRP16 (0x1u << 16) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 16 */ +#define MCAN_TXBRP_TRP17 (0x1u << 17) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 17 */ +#define MCAN_TXBRP_TRP18 (0x1u << 18) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 18 */ +#define MCAN_TXBRP_TRP19 (0x1u << 19) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 19 */ +#define MCAN_TXBRP_TRP20 (0x1u << 20) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 20 */ +#define MCAN_TXBRP_TRP21 (0x1u << 21) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 21 */ +#define MCAN_TXBRP_TRP22 (0x1u << 22) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 22 */ +#define MCAN_TXBRP_TRP23 (0x1u << 23) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 23 */ +#define MCAN_TXBRP_TRP24 (0x1u << 24) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 24 */ +#define MCAN_TXBRP_TRP25 (0x1u << 25) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 25 */ +#define MCAN_TXBRP_TRP26 (0x1u << 26) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 26 */ +#define MCAN_TXBRP_TRP27 (0x1u << 27) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 27 */ +#define MCAN_TXBRP_TRP28 (0x1u << 28) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 28 */ +#define MCAN_TXBRP_TRP29 (0x1u << 29) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 29 */ +#define MCAN_TXBRP_TRP30 (0x1u << 30) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 30 */ +#define MCAN_TXBRP_TRP31 (0x1u << 31) /**< \brief (MCAN_TXBRP) Transmission Request Pending for Buffer 31 */ +/* -------- MCAN_TXBAR : (MCAN Offset: 0xD0) Transmit Buffer Add Request Register -------- */ +#define MCAN_TXBAR_AR0 (0x1u << 0) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 0 */ +#define MCAN_TXBAR_AR1 (0x1u << 1) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 1 */ +#define MCAN_TXBAR_AR2 (0x1u << 2) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 2 */ +#define MCAN_TXBAR_AR3 (0x1u << 3) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 3 */ +#define MCAN_TXBAR_AR4 (0x1u << 4) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 4 */ +#define MCAN_TXBAR_AR5 (0x1u << 5) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 5 */ +#define MCAN_TXBAR_AR6 (0x1u << 6) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 6 */ +#define MCAN_TXBAR_AR7 (0x1u << 7) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 7 */ +#define MCAN_TXBAR_AR8 (0x1u << 8) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 8 */ +#define MCAN_TXBAR_AR9 (0x1u << 9) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 9 */ +#define MCAN_TXBAR_AR10 (0x1u << 10) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 10 */ +#define MCAN_TXBAR_AR11 (0x1u << 11) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 11 */ +#define MCAN_TXBAR_AR12 (0x1u << 12) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 12 */ +#define MCAN_TXBAR_AR13 (0x1u << 13) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 13 */ +#define MCAN_TXBAR_AR14 (0x1u << 14) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 14 */ +#define MCAN_TXBAR_AR15 (0x1u << 15) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 15 */ +#define MCAN_TXBAR_AR16 (0x1u << 16) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 16 */ +#define MCAN_TXBAR_AR17 (0x1u << 17) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 17 */ +#define MCAN_TXBAR_AR18 (0x1u << 18) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 18 */ +#define MCAN_TXBAR_AR19 (0x1u << 19) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 19 */ +#define MCAN_TXBAR_AR20 (0x1u << 20) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 20 */ +#define MCAN_TXBAR_AR21 (0x1u << 21) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 21 */ +#define MCAN_TXBAR_AR22 (0x1u << 22) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 22 */ +#define MCAN_TXBAR_AR23 (0x1u << 23) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 23 */ +#define MCAN_TXBAR_AR24 (0x1u << 24) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 24 */ +#define MCAN_TXBAR_AR25 (0x1u << 25) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 25 */ +#define MCAN_TXBAR_AR26 (0x1u << 26) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 26 */ +#define MCAN_TXBAR_AR27 (0x1u << 27) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 27 */ +#define MCAN_TXBAR_AR28 (0x1u << 28) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 28 */ +#define MCAN_TXBAR_AR29 (0x1u << 29) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 29 */ +#define MCAN_TXBAR_AR30 (0x1u << 30) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 30 */ +#define MCAN_TXBAR_AR31 (0x1u << 31) /**< \brief (MCAN_TXBAR) Add Request for Transmit Buffer 31 */ +/* -------- MCAN_TXBCR : (MCAN Offset: 0xD4) Transmit Buffer Cancellation Request Register -------- */ +#define MCAN_TXBCR_CR0 (0x1u << 0) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 0 */ +#define MCAN_TXBCR_CR1 (0x1u << 1) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 1 */ +#define MCAN_TXBCR_CR2 (0x1u << 2) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 2 */ +#define MCAN_TXBCR_CR3 (0x1u << 3) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 3 */ +#define MCAN_TXBCR_CR4 (0x1u << 4) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 4 */ +#define MCAN_TXBCR_CR5 (0x1u << 5) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 5 */ +#define MCAN_TXBCR_CR6 (0x1u << 6) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 6 */ +#define MCAN_TXBCR_CR7 (0x1u << 7) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 7 */ +#define MCAN_TXBCR_CR8 (0x1u << 8) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 8 */ +#define MCAN_TXBCR_CR9 (0x1u << 9) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 9 */ +#define MCAN_TXBCR_CR10 (0x1u << 10) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 10 */ +#define MCAN_TXBCR_CR11 (0x1u << 11) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 11 */ +#define MCAN_TXBCR_CR12 (0x1u << 12) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 12 */ +#define MCAN_TXBCR_CR13 (0x1u << 13) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 13 */ +#define MCAN_TXBCR_CR14 (0x1u << 14) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 14 */ +#define MCAN_TXBCR_CR15 (0x1u << 15) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 15 */ +#define MCAN_TXBCR_CR16 (0x1u << 16) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 16 */ +#define MCAN_TXBCR_CR17 (0x1u << 17) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 17 */ +#define MCAN_TXBCR_CR18 (0x1u << 18) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 18 */ +#define MCAN_TXBCR_CR19 (0x1u << 19) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 19 */ +#define MCAN_TXBCR_CR20 (0x1u << 20) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 20 */ +#define MCAN_TXBCR_CR21 (0x1u << 21) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 21 */ +#define MCAN_TXBCR_CR22 (0x1u << 22) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 22 */ +#define MCAN_TXBCR_CR23 (0x1u << 23) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 23 */ +#define MCAN_TXBCR_CR24 (0x1u << 24) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 24 */ +#define MCAN_TXBCR_CR25 (0x1u << 25) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 25 */ +#define MCAN_TXBCR_CR26 (0x1u << 26) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 26 */ +#define MCAN_TXBCR_CR27 (0x1u << 27) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 27 */ +#define MCAN_TXBCR_CR28 (0x1u << 28) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 28 */ +#define MCAN_TXBCR_CR29 (0x1u << 29) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 29 */ +#define MCAN_TXBCR_CR30 (0x1u << 30) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 30 */ +#define MCAN_TXBCR_CR31 (0x1u << 31) /**< \brief (MCAN_TXBCR) Cancellation Request for Transmit Buffer 31 */ +/* -------- MCAN_TXBTO : (MCAN Offset: 0xD8) Transmit Buffer Transmission Occurred Register -------- */ +#define MCAN_TXBTO_TO0 (0x1u << 0) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 0 */ +#define MCAN_TXBTO_TO1 (0x1u << 1) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 1 */ +#define MCAN_TXBTO_TO2 (0x1u << 2) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 2 */ +#define MCAN_TXBTO_TO3 (0x1u << 3) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 3 */ +#define MCAN_TXBTO_TO4 (0x1u << 4) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 4 */ +#define MCAN_TXBTO_TO5 (0x1u << 5) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 5 */ +#define MCAN_TXBTO_TO6 (0x1u << 6) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 6 */ +#define MCAN_TXBTO_TO7 (0x1u << 7) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 7 */ +#define MCAN_TXBTO_TO8 (0x1u << 8) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 8 */ +#define MCAN_TXBTO_TO9 (0x1u << 9) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 9 */ +#define MCAN_TXBTO_TO10 (0x1u << 10) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 10 */ +#define MCAN_TXBTO_TO11 (0x1u << 11) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 11 */ +#define MCAN_TXBTO_TO12 (0x1u << 12) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 12 */ +#define MCAN_TXBTO_TO13 (0x1u << 13) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 13 */ +#define MCAN_TXBTO_TO14 (0x1u << 14) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 14 */ +#define MCAN_TXBTO_TO15 (0x1u << 15) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 15 */ +#define MCAN_TXBTO_TO16 (0x1u << 16) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 16 */ +#define MCAN_TXBTO_TO17 (0x1u << 17) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 17 */ +#define MCAN_TXBTO_TO18 (0x1u << 18) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 18 */ +#define MCAN_TXBTO_TO19 (0x1u << 19) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 19 */ +#define MCAN_TXBTO_TO20 (0x1u << 20) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 20 */ +#define MCAN_TXBTO_TO21 (0x1u << 21) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 21 */ +#define MCAN_TXBTO_TO22 (0x1u << 22) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 22 */ +#define MCAN_TXBTO_TO23 (0x1u << 23) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 23 */ +#define MCAN_TXBTO_TO24 (0x1u << 24) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 24 */ +#define MCAN_TXBTO_TO25 (0x1u << 25) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 25 */ +#define MCAN_TXBTO_TO26 (0x1u << 26) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 26 */ +#define MCAN_TXBTO_TO27 (0x1u << 27) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 27 */ +#define MCAN_TXBTO_TO28 (0x1u << 28) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 28 */ +#define MCAN_TXBTO_TO29 (0x1u << 29) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 29 */ +#define MCAN_TXBTO_TO30 (0x1u << 30) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 30 */ +#define MCAN_TXBTO_TO31 (0x1u << 31) /**< \brief (MCAN_TXBTO) Transmission Occurred for Buffer 31 */ +/* -------- MCAN_TXBCF : (MCAN Offset: 0xDC) Transmit Buffer Cancellation Finished Register -------- */ +#define MCAN_TXBCF_CF0 (0x1u << 0) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 0 */ +#define MCAN_TXBCF_CF1 (0x1u << 1) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 1 */ +#define MCAN_TXBCF_CF2 (0x1u << 2) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 2 */ +#define MCAN_TXBCF_CF3 (0x1u << 3) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 3 */ +#define MCAN_TXBCF_CF4 (0x1u << 4) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 4 */ +#define MCAN_TXBCF_CF5 (0x1u << 5) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 5 */ +#define MCAN_TXBCF_CF6 (0x1u << 6) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 6 */ +#define MCAN_TXBCF_CF7 (0x1u << 7) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 7 */ +#define MCAN_TXBCF_CF8 (0x1u << 8) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 8 */ +#define MCAN_TXBCF_CF9 (0x1u << 9) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 9 */ +#define MCAN_TXBCF_CF10 (0x1u << 10) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 10 */ +#define MCAN_TXBCF_CF11 (0x1u << 11) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 11 */ +#define MCAN_TXBCF_CF12 (0x1u << 12) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 12 */ +#define MCAN_TXBCF_CF13 (0x1u << 13) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 13 */ +#define MCAN_TXBCF_CF14 (0x1u << 14) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 14 */ +#define MCAN_TXBCF_CF15 (0x1u << 15) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 15 */ +#define MCAN_TXBCF_CF16 (0x1u << 16) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 16 */ +#define MCAN_TXBCF_CF17 (0x1u << 17) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 17 */ +#define MCAN_TXBCF_CF18 (0x1u << 18) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 18 */ +#define MCAN_TXBCF_CF19 (0x1u << 19) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 19 */ +#define MCAN_TXBCF_CF20 (0x1u << 20) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 20 */ +#define MCAN_TXBCF_CF21 (0x1u << 21) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 21 */ +#define MCAN_TXBCF_CF22 (0x1u << 22) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 22 */ +#define MCAN_TXBCF_CF23 (0x1u << 23) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 23 */ +#define MCAN_TXBCF_CF24 (0x1u << 24) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 24 */ +#define MCAN_TXBCF_CF25 (0x1u << 25) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 25 */ +#define MCAN_TXBCF_CF26 (0x1u << 26) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 26 */ +#define MCAN_TXBCF_CF27 (0x1u << 27) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 27 */ +#define MCAN_TXBCF_CF28 (0x1u << 28) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 28 */ +#define MCAN_TXBCF_CF29 (0x1u << 29) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 29 */ +#define MCAN_TXBCF_CF30 (0x1u << 30) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 30 */ +#define MCAN_TXBCF_CF31 (0x1u << 31) /**< \brief (MCAN_TXBCF) Cancellation Finished for Transmit Buffer 31 */ +/* -------- MCAN_TXBTIE : (MCAN Offset: 0xE0) Transmit Buffer Transmission Interrupt Enable Register -------- */ +#define MCAN_TXBTIE_TIE0 (0x1u << 0) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 0 */ +#define MCAN_TXBTIE_TIE1 (0x1u << 1) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 1 */ +#define MCAN_TXBTIE_TIE2 (0x1u << 2) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 2 */ +#define MCAN_TXBTIE_TIE3 (0x1u << 3) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 3 */ +#define MCAN_TXBTIE_TIE4 (0x1u << 4) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 4 */ +#define MCAN_TXBTIE_TIE5 (0x1u << 5) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 5 */ +#define MCAN_TXBTIE_TIE6 (0x1u << 6) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 6 */ +#define MCAN_TXBTIE_TIE7 (0x1u << 7) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 7 */ +#define MCAN_TXBTIE_TIE8 (0x1u << 8) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 8 */ +#define MCAN_TXBTIE_TIE9 (0x1u << 9) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 9 */ +#define MCAN_TXBTIE_TIE10 (0x1u << 10) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 10 */ +#define MCAN_TXBTIE_TIE11 (0x1u << 11) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 11 */ +#define MCAN_TXBTIE_TIE12 (0x1u << 12) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 12 */ +#define MCAN_TXBTIE_TIE13 (0x1u << 13) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 13 */ +#define MCAN_TXBTIE_TIE14 (0x1u << 14) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 14 */ +#define MCAN_TXBTIE_TIE15 (0x1u << 15) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 15 */ +#define MCAN_TXBTIE_TIE16 (0x1u << 16) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 16 */ +#define MCAN_TXBTIE_TIE17 (0x1u << 17) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 17 */ +#define MCAN_TXBTIE_TIE18 (0x1u << 18) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 18 */ +#define MCAN_TXBTIE_TIE19 (0x1u << 19) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 19 */ +#define MCAN_TXBTIE_TIE20 (0x1u << 20) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 20 */ +#define MCAN_TXBTIE_TIE21 (0x1u << 21) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 21 */ +#define MCAN_TXBTIE_TIE22 (0x1u << 22) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 22 */ +#define MCAN_TXBTIE_TIE23 (0x1u << 23) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 23 */ +#define MCAN_TXBTIE_TIE24 (0x1u << 24) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 24 */ +#define MCAN_TXBTIE_TIE25 (0x1u << 25) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 25 */ +#define MCAN_TXBTIE_TIE26 (0x1u << 26) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 26 */ +#define MCAN_TXBTIE_TIE27 (0x1u << 27) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 27 */ +#define MCAN_TXBTIE_TIE28 (0x1u << 28) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 28 */ +#define MCAN_TXBTIE_TIE29 (0x1u << 29) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 29 */ +#define MCAN_TXBTIE_TIE30 (0x1u << 30) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 30 */ +#define MCAN_TXBTIE_TIE31 (0x1u << 31) /**< \brief (MCAN_TXBTIE) Transmission Interrupt Enable for Buffer 31 */ +/* -------- MCAN_TXBCIE : (MCAN Offset: 0xE4) Transmit Buffer Cancellation Finished Interrupt Enable Register -------- */ +#define MCAN_TXBCIE_CFIE0 (0x1u << 0) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 0 */ +#define MCAN_TXBCIE_CFIE1 (0x1u << 1) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 1 */ +#define MCAN_TXBCIE_CFIE2 (0x1u << 2) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 2 */ +#define MCAN_TXBCIE_CFIE3 (0x1u << 3) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 3 */ +#define MCAN_TXBCIE_CFIE4 (0x1u << 4) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 4 */ +#define MCAN_TXBCIE_CFIE5 (0x1u << 5) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 5 */ +#define MCAN_TXBCIE_CFIE6 (0x1u << 6) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 6 */ +#define MCAN_TXBCIE_CFIE7 (0x1u << 7) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 7 */ +#define MCAN_TXBCIE_CFIE8 (0x1u << 8) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 8 */ +#define MCAN_TXBCIE_CFIE9 (0x1u << 9) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 9 */ +#define MCAN_TXBCIE_CFIE10 (0x1u << 10) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 10 */ +#define MCAN_TXBCIE_CFIE11 (0x1u << 11) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 11 */ +#define MCAN_TXBCIE_CFIE12 (0x1u << 12) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 12 */ +#define MCAN_TXBCIE_CFIE13 (0x1u << 13) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 13 */ +#define MCAN_TXBCIE_CFIE14 (0x1u << 14) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 14 */ +#define MCAN_TXBCIE_CFIE15 (0x1u << 15) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 15 */ +#define MCAN_TXBCIE_CFIE16 (0x1u << 16) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 16 */ +#define MCAN_TXBCIE_CFIE17 (0x1u << 17) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 17 */ +#define MCAN_TXBCIE_CFIE18 (0x1u << 18) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 18 */ +#define MCAN_TXBCIE_CFIE19 (0x1u << 19) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 19 */ +#define MCAN_TXBCIE_CFIE20 (0x1u << 20) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 20 */ +#define MCAN_TXBCIE_CFIE21 (0x1u << 21) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 21 */ +#define MCAN_TXBCIE_CFIE22 (0x1u << 22) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 22 */ +#define MCAN_TXBCIE_CFIE23 (0x1u << 23) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 23 */ +#define MCAN_TXBCIE_CFIE24 (0x1u << 24) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 24 */ +#define MCAN_TXBCIE_CFIE25 (0x1u << 25) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 25 */ +#define MCAN_TXBCIE_CFIE26 (0x1u << 26) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 26 */ +#define MCAN_TXBCIE_CFIE27 (0x1u << 27) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 27 */ +#define MCAN_TXBCIE_CFIE28 (0x1u << 28) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 28 */ +#define MCAN_TXBCIE_CFIE29 (0x1u << 29) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 29 */ +#define MCAN_TXBCIE_CFIE30 (0x1u << 30) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 30 */ +#define MCAN_TXBCIE_CFIE31 (0x1u << 31) /**< \brief (MCAN_TXBCIE) Cancellation Finished Interrupt Enable for Transmit Buffer 31 */ +/* -------- MCAN_TXEFC : (MCAN Offset: 0xF0) Transmit Event FIFO Configuration Register -------- */ +#define MCAN_TXEFC_EFSA_Pos 2 +#define MCAN_TXEFC_EFSA_Msk (0x3fffu << MCAN_TXEFC_EFSA_Pos) /**< \brief (MCAN_TXEFC) Event FIFO Start Address */ +#define MCAN_TXEFC_EFSA(value) ((MCAN_TXEFC_EFSA_Msk & ((value) << MCAN_TXEFC_EFSA_Pos))) +#define MCAN_TXEFC_EFS_Pos 16 +#define MCAN_TXEFC_EFS_Msk (0x3fu << MCAN_TXEFC_EFS_Pos) /**< \brief (MCAN_TXEFC) Event FIFO Size */ +#define MCAN_TXEFC_EFS(value) ((MCAN_TXEFC_EFS_Msk & ((value) << MCAN_TXEFC_EFS_Pos))) +#define MCAN_TXEFC_EFWM_Pos 24 +#define MCAN_TXEFC_EFWM_Msk (0x3fu << MCAN_TXEFC_EFWM_Pos) /**< \brief (MCAN_TXEFC) Event FIFO Watermark */ +#define MCAN_TXEFC_EFWM(value) ((MCAN_TXEFC_EFWM_Msk & ((value) << MCAN_TXEFC_EFWM_Pos))) +/* -------- MCAN_TXEFS : (MCAN Offset: 0xF4) Transmit Event FIFO Status Register -------- */ +#define MCAN_TXEFS_EFFL_Pos 0 +#define MCAN_TXEFS_EFFL_Msk (0x3fu << MCAN_TXEFS_EFFL_Pos) /**< \brief (MCAN_TXEFS) Event FIFO Fill Level */ +#define MCAN_TXEFS_EFGI_Pos 8 +#define MCAN_TXEFS_EFGI_Msk (0x1fu << MCAN_TXEFS_EFGI_Pos) /**< \brief (MCAN_TXEFS) Event FIFO Get Index */ +#define MCAN_TXEFS_EFPI_Pos 16 +#define MCAN_TXEFS_EFPI_Msk (0x1fu << MCAN_TXEFS_EFPI_Pos) /**< \brief (MCAN_TXEFS) Event FIFO Put Index */ +#define MCAN_TXEFS_EFF (0x1u << 24) /**< \brief (MCAN_TXEFS) Event FIFO Full */ +#define MCAN_TXEFS_TEFL (0x1u << 25) /**< \brief (MCAN_TXEFS) Tx Event FIFO Element Lost */ +/* -------- MCAN_TXEFA : (MCAN Offset: 0xF8) Transmit Event FIFO Acknowledge Register -------- */ +#define MCAN_TXEFA_EFAI_Pos 0 +#define MCAN_TXEFA_EFAI_Msk (0x1fu << MCAN_TXEFA_EFAI_Pos) /**< \brief (MCAN_TXEFA) Event FIFO Acknowledge Index */ +#define MCAN_TXEFA_EFAI(value) ((MCAN_TXEFA_EFAI_Msk & ((value) << MCAN_TXEFA_EFAI_Pos))) + +/*@}*/ + + +#endif /* _SAME70_MCAN_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h new file mode 100644 index 00000000..ac8663a6 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h @@ -0,0 +1,1722 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PIO_COMPONENT_ +#define _SAME70_PIO_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Parallel Input/Output Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_PIO Parallel Input/Output Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Pio hardware registers */ +typedef struct { + __O uint32_t PIO_PER; /**< \brief (Pio Offset: 0x0000) PIO Enable Register */ + __O uint32_t PIO_PDR; /**< \brief (Pio Offset: 0x0004) PIO Disable Register */ + __I uint32_t PIO_PSR; /**< \brief (Pio Offset: 0x0008) PIO Status Register */ + __I uint32_t Reserved1[1]; + __O uint32_t PIO_OER; /**< \brief (Pio Offset: 0x0010) Output Enable Register */ + __O uint32_t PIO_ODR; /**< \brief (Pio Offset: 0x0014) Output Disable Register */ + __I uint32_t PIO_OSR; /**< \brief (Pio Offset: 0x0018) Output Status Register */ + __I uint32_t Reserved2[1]; + __O uint32_t PIO_IFER; /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */ + __O uint32_t PIO_IFDR; /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */ + __I uint32_t PIO_IFSR; /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */ + __I uint32_t Reserved3[1]; + __O uint32_t PIO_SODR; /**< \brief (Pio Offset: 0x0030) Set Output Data Register */ + __O uint32_t PIO_CODR; /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */ + __IO uint32_t PIO_ODSR; /**< \brief (Pio Offset: 0x0038) Output Data Status Register */ + __I uint32_t PIO_PDSR; /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */ + __O uint32_t PIO_IER; /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */ + __O uint32_t PIO_IDR; /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */ + __I uint32_t PIO_IMR; /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */ + __I uint32_t PIO_ISR; /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */ + __O uint32_t PIO_MDER; /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */ + __O uint32_t PIO_MDDR; /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */ + __I uint32_t PIO_MDSR; /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */ + __I uint32_t Reserved4[1]; + __O uint32_t PIO_PUDR; /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */ + __O uint32_t PIO_PUER; /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */ + __I uint32_t PIO_PUSR; /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */ + __I uint32_t Reserved5[1]; + __IO uint32_t PIO_ABCDSR[2]; /**< \brief (Pio Offset: 0x0070) Peripheral Select Register */ + __I uint32_t Reserved6[2]; + __O uint32_t PIO_IFSCDR; /**< \brief (Pio Offset: 0x0080) Input Filter Slow Clock Disable Register */ + __O uint32_t PIO_IFSCER; /**< \brief (Pio Offset: 0x0084) Input Filter Slow Clock Enable Register */ + __I uint32_t PIO_IFSCSR; /**< \brief (Pio Offset: 0x0088) Input Filter Slow Clock Status Register */ + __IO uint32_t PIO_SCDR; /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */ + __O uint32_t PIO_PPDDR; /**< \brief (Pio Offset: 0x0090) Pad Pull-down Disable Register */ + __O uint32_t PIO_PPDER; /**< \brief (Pio Offset: 0x0094) Pad Pull-down Enable Register */ + __I uint32_t PIO_PPDSR; /**< \brief (Pio Offset: 0x0098) Pad Pull-down Status Register */ + __I uint32_t Reserved7[1]; + __O uint32_t PIO_OWER; /**< \brief (Pio Offset: 0x00A0) Output Write Enable */ + __O uint32_t PIO_OWDR; /**< \brief (Pio Offset: 0x00A4) Output Write Disable */ + __I uint32_t PIO_OWSR; /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */ + __I uint32_t Reserved8[1]; + __O uint32_t PIO_AIMER; /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */ + __O uint32_t PIO_AIMDR; /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disable Register */ + __I uint32_t PIO_AIMMR; /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */ + __I uint32_t Reserved9[1]; + __O uint32_t PIO_ESR; /**< \brief (Pio Offset: 0x00C0) Edge Select Register */ + __O uint32_t PIO_LSR; /**< \brief (Pio Offset: 0x00C4) Level Select Register */ + __I uint32_t PIO_ELSR; /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */ + __I uint32_t Reserved10[1]; + __O uint32_t PIO_FELLSR; /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low-Level Select Register */ + __O uint32_t PIO_REHLSR; /**< \brief (Pio Offset: 0x00D4) Rising Edge/High-Level Select Register */ + __I uint32_t PIO_FRLHSR; /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */ + __I uint32_t Reserved11[1]; + __I uint32_t PIO_LOCKSR; /**< \brief (Pio Offset: 0x00E0) Lock Status */ + __IO uint32_t PIO_WPMR; /**< \brief (Pio Offset: 0x00E4) Write Protection Mode Register */ + __I uint32_t PIO_WPSR; /**< \brief (Pio Offset: 0x00E8) Write Protection Status Register */ + __I uint32_t Reserved12[4]; + __I uint32_t PIO_VERSION; /**< \brief (Pio Offset: 0x00FC) Version Register */ + __IO uint32_t PIO_SCHMITT; /**< \brief (Pio Offset: 0x0100) Schmitt Trigger Register */ + __I uint32_t Reserved13[5]; + __IO uint32_t PIO_DRIVER; /**< \brief (Pio Offset: 0x0118) I/O Drive Register */ + __I uint32_t Reserved14[13]; + __IO uint32_t PIO_PCMR; /**< \brief (Pio Offset: 0x0150) Parallel Capture Mode Register */ + __O uint32_t PIO_PCIER; /**< \brief (Pio Offset: 0x0154) Parallel Capture Interrupt Enable Register */ + __O uint32_t PIO_PCIDR; /**< \brief (Pio Offset: 0x0158) Parallel Capture Interrupt Disable Register */ + __I uint32_t PIO_PCIMR; /**< \brief (Pio Offset: 0x015C) Parallel Capture Interrupt Mask Register */ + __I uint32_t PIO_PCISR; /**< \brief (Pio Offset: 0x0160) Parallel Capture Interrupt Status Register */ + __I uint32_t PIO_PCRHR; /**< \brief (Pio Offset: 0x0164) Parallel Capture Reception Holding Register */ +} Pio; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PIO_PER : (PIO Offset: 0x0000) PIO Enable Register -------- */ +#define PIO_PER_P0 (0x1u << 0) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P1 (0x1u << 1) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P2 (0x1u << 2) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P3 (0x1u << 3) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P4 (0x1u << 4) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P5 (0x1u << 5) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P6 (0x1u << 6) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P7 (0x1u << 7) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P8 (0x1u << 8) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P9 (0x1u << 9) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P10 (0x1u << 10) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P11 (0x1u << 11) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P12 (0x1u << 12) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P13 (0x1u << 13) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P14 (0x1u << 14) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P15 (0x1u << 15) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P16 (0x1u << 16) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P17 (0x1u << 17) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P18 (0x1u << 18) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P19 (0x1u << 19) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P20 (0x1u << 20) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P21 (0x1u << 21) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P22 (0x1u << 22) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P23 (0x1u << 23) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P24 (0x1u << 24) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P25 (0x1u << 25) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P26 (0x1u << 26) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P27 (0x1u << 27) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P28 (0x1u << 28) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P29 (0x1u << 29) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P30 (0x1u << 30) /**< \brief (PIO_PER) PIO Enable */ +#define PIO_PER_P31 (0x1u << 31) /**< \brief (PIO_PER) PIO Enable */ +/* -------- PIO_PDR : (PIO Offset: 0x0004) PIO Disable Register -------- */ +#define PIO_PDR_P0 (0x1u << 0) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P1 (0x1u << 1) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P2 (0x1u << 2) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P3 (0x1u << 3) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P4 (0x1u << 4) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P5 (0x1u << 5) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P6 (0x1u << 6) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P7 (0x1u << 7) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P8 (0x1u << 8) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P9 (0x1u << 9) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P10 (0x1u << 10) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P11 (0x1u << 11) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P12 (0x1u << 12) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P13 (0x1u << 13) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P14 (0x1u << 14) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P15 (0x1u << 15) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P16 (0x1u << 16) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P17 (0x1u << 17) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P18 (0x1u << 18) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P19 (0x1u << 19) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P20 (0x1u << 20) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P21 (0x1u << 21) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P22 (0x1u << 22) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P23 (0x1u << 23) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P24 (0x1u << 24) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P25 (0x1u << 25) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P26 (0x1u << 26) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P27 (0x1u << 27) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P28 (0x1u << 28) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P29 (0x1u << 29) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P30 (0x1u << 30) /**< \brief (PIO_PDR) PIO Disable */ +#define PIO_PDR_P31 (0x1u << 31) /**< \brief (PIO_PDR) PIO Disable */ +/* -------- PIO_PSR : (PIO Offset: 0x0008) PIO Status Register -------- */ +#define PIO_PSR_P0 (0x1u << 0) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P1 (0x1u << 1) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P2 (0x1u << 2) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P3 (0x1u << 3) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P4 (0x1u << 4) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P5 (0x1u << 5) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P6 (0x1u << 6) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P7 (0x1u << 7) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P8 (0x1u << 8) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P9 (0x1u << 9) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P10 (0x1u << 10) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P11 (0x1u << 11) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P12 (0x1u << 12) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P13 (0x1u << 13) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P14 (0x1u << 14) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P15 (0x1u << 15) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P16 (0x1u << 16) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P17 (0x1u << 17) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P18 (0x1u << 18) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P19 (0x1u << 19) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P20 (0x1u << 20) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P21 (0x1u << 21) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P22 (0x1u << 22) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P23 (0x1u << 23) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P24 (0x1u << 24) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P25 (0x1u << 25) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P26 (0x1u << 26) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P27 (0x1u << 27) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P28 (0x1u << 28) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P29 (0x1u << 29) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P30 (0x1u << 30) /**< \brief (PIO_PSR) PIO Status */ +#define PIO_PSR_P31 (0x1u << 31) /**< \brief (PIO_PSR) PIO Status */ +/* -------- PIO_OER : (PIO Offset: 0x0010) Output Enable Register -------- */ +#define PIO_OER_P0 (0x1u << 0) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P1 (0x1u << 1) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P2 (0x1u << 2) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P3 (0x1u << 3) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P4 (0x1u << 4) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P5 (0x1u << 5) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P6 (0x1u << 6) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P7 (0x1u << 7) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P8 (0x1u << 8) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P9 (0x1u << 9) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P10 (0x1u << 10) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P11 (0x1u << 11) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P12 (0x1u << 12) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P13 (0x1u << 13) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P14 (0x1u << 14) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P15 (0x1u << 15) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P16 (0x1u << 16) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P17 (0x1u << 17) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P18 (0x1u << 18) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P19 (0x1u << 19) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P20 (0x1u << 20) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P21 (0x1u << 21) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P22 (0x1u << 22) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P23 (0x1u << 23) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P24 (0x1u << 24) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P25 (0x1u << 25) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P26 (0x1u << 26) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P27 (0x1u << 27) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P28 (0x1u << 28) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P29 (0x1u << 29) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P30 (0x1u << 30) /**< \brief (PIO_OER) Output Enable */ +#define PIO_OER_P31 (0x1u << 31) /**< \brief (PIO_OER) Output Enable */ +/* -------- PIO_ODR : (PIO Offset: 0x0014) Output Disable Register -------- */ +#define PIO_ODR_P0 (0x1u << 0) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P1 (0x1u << 1) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P2 (0x1u << 2) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P3 (0x1u << 3) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P4 (0x1u << 4) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P5 (0x1u << 5) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P6 (0x1u << 6) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P7 (0x1u << 7) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P8 (0x1u << 8) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P9 (0x1u << 9) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P10 (0x1u << 10) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P11 (0x1u << 11) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P12 (0x1u << 12) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P13 (0x1u << 13) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P14 (0x1u << 14) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P15 (0x1u << 15) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P16 (0x1u << 16) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P17 (0x1u << 17) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P18 (0x1u << 18) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P19 (0x1u << 19) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P20 (0x1u << 20) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P21 (0x1u << 21) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P22 (0x1u << 22) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P23 (0x1u << 23) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P24 (0x1u << 24) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P25 (0x1u << 25) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P26 (0x1u << 26) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P27 (0x1u << 27) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P28 (0x1u << 28) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P29 (0x1u << 29) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P30 (0x1u << 30) /**< \brief (PIO_ODR) Output Disable */ +#define PIO_ODR_P31 (0x1u << 31) /**< \brief (PIO_ODR) Output Disable */ +/* -------- PIO_OSR : (PIO Offset: 0x0018) Output Status Register -------- */ +#define PIO_OSR_P0 (0x1u << 0) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P1 (0x1u << 1) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P2 (0x1u << 2) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P3 (0x1u << 3) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P4 (0x1u << 4) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P5 (0x1u << 5) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P6 (0x1u << 6) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P7 (0x1u << 7) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P8 (0x1u << 8) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P9 (0x1u << 9) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P10 (0x1u << 10) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P11 (0x1u << 11) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P12 (0x1u << 12) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P13 (0x1u << 13) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P14 (0x1u << 14) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P15 (0x1u << 15) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P16 (0x1u << 16) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P17 (0x1u << 17) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P18 (0x1u << 18) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P19 (0x1u << 19) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P20 (0x1u << 20) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P21 (0x1u << 21) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P22 (0x1u << 22) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P23 (0x1u << 23) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P24 (0x1u << 24) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P25 (0x1u << 25) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P26 (0x1u << 26) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P27 (0x1u << 27) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P28 (0x1u << 28) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P29 (0x1u << 29) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P30 (0x1u << 30) /**< \brief (PIO_OSR) Output Status */ +#define PIO_OSR_P31 (0x1u << 31) /**< \brief (PIO_OSR) Output Status */ +/* -------- PIO_IFER : (PIO Offset: 0x0020) Glitch Input Filter Enable Register -------- */ +#define PIO_IFER_P0 (0x1u << 0) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P1 (0x1u << 1) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P2 (0x1u << 2) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P3 (0x1u << 3) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P4 (0x1u << 4) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P5 (0x1u << 5) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P6 (0x1u << 6) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P7 (0x1u << 7) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P8 (0x1u << 8) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P9 (0x1u << 9) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P10 (0x1u << 10) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P11 (0x1u << 11) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P12 (0x1u << 12) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P13 (0x1u << 13) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P14 (0x1u << 14) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P15 (0x1u << 15) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P16 (0x1u << 16) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P17 (0x1u << 17) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P18 (0x1u << 18) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P19 (0x1u << 19) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P20 (0x1u << 20) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P21 (0x1u << 21) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P22 (0x1u << 22) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P23 (0x1u << 23) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P24 (0x1u << 24) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P25 (0x1u << 25) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P26 (0x1u << 26) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P27 (0x1u << 27) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P28 (0x1u << 28) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P29 (0x1u << 29) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P30 (0x1u << 30) /**< \brief (PIO_IFER) Input Filter Enable */ +#define PIO_IFER_P31 (0x1u << 31) /**< \brief (PIO_IFER) Input Filter Enable */ +/* -------- PIO_IFDR : (PIO Offset: 0x0024) Glitch Input Filter Disable Register -------- */ +#define PIO_IFDR_P0 (0x1u << 0) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P1 (0x1u << 1) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P2 (0x1u << 2) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P3 (0x1u << 3) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P4 (0x1u << 4) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P5 (0x1u << 5) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P6 (0x1u << 6) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P7 (0x1u << 7) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P8 (0x1u << 8) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P9 (0x1u << 9) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P10 (0x1u << 10) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P11 (0x1u << 11) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P12 (0x1u << 12) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P13 (0x1u << 13) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P14 (0x1u << 14) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P15 (0x1u << 15) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P16 (0x1u << 16) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P17 (0x1u << 17) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P18 (0x1u << 18) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P19 (0x1u << 19) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P20 (0x1u << 20) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P21 (0x1u << 21) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P22 (0x1u << 22) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P23 (0x1u << 23) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P24 (0x1u << 24) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P25 (0x1u << 25) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P26 (0x1u << 26) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P27 (0x1u << 27) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P28 (0x1u << 28) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P29 (0x1u << 29) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P30 (0x1u << 30) /**< \brief (PIO_IFDR) Input Filter Disable */ +#define PIO_IFDR_P31 (0x1u << 31) /**< \brief (PIO_IFDR) Input Filter Disable */ +/* -------- PIO_IFSR : (PIO Offset: 0x0028) Glitch Input Filter Status Register -------- */ +#define PIO_IFSR_P0 (0x1u << 0) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P1 (0x1u << 1) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P2 (0x1u << 2) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P3 (0x1u << 3) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P4 (0x1u << 4) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P5 (0x1u << 5) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P6 (0x1u << 6) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P7 (0x1u << 7) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P8 (0x1u << 8) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P9 (0x1u << 9) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P10 (0x1u << 10) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P11 (0x1u << 11) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P12 (0x1u << 12) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P13 (0x1u << 13) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P14 (0x1u << 14) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P15 (0x1u << 15) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P16 (0x1u << 16) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P17 (0x1u << 17) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P18 (0x1u << 18) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P19 (0x1u << 19) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P20 (0x1u << 20) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P21 (0x1u << 21) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P22 (0x1u << 22) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P23 (0x1u << 23) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P24 (0x1u << 24) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P25 (0x1u << 25) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P26 (0x1u << 26) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P27 (0x1u << 27) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P28 (0x1u << 28) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P29 (0x1u << 29) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P30 (0x1u << 30) /**< \brief (PIO_IFSR) Input Filter Status */ +#define PIO_IFSR_P31 (0x1u << 31) /**< \brief (PIO_IFSR) Input Filter Status */ +/* -------- PIO_SODR : (PIO Offset: 0x0030) Set Output Data Register -------- */ +#define PIO_SODR_P0 (0x1u << 0) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P1 (0x1u << 1) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P2 (0x1u << 2) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P3 (0x1u << 3) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P4 (0x1u << 4) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P5 (0x1u << 5) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P6 (0x1u << 6) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P7 (0x1u << 7) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P8 (0x1u << 8) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P9 (0x1u << 9) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P10 (0x1u << 10) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P11 (0x1u << 11) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P12 (0x1u << 12) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P13 (0x1u << 13) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P14 (0x1u << 14) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P15 (0x1u << 15) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P16 (0x1u << 16) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P17 (0x1u << 17) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P18 (0x1u << 18) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P19 (0x1u << 19) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P20 (0x1u << 20) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P21 (0x1u << 21) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P22 (0x1u << 22) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P23 (0x1u << 23) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P24 (0x1u << 24) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P25 (0x1u << 25) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P26 (0x1u << 26) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P27 (0x1u << 27) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P28 (0x1u << 28) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P29 (0x1u << 29) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P30 (0x1u << 30) /**< \brief (PIO_SODR) Set Output Data */ +#define PIO_SODR_P31 (0x1u << 31) /**< \brief (PIO_SODR) Set Output Data */ +/* -------- PIO_CODR : (PIO Offset: 0x0034) Clear Output Data Register -------- */ +#define PIO_CODR_P0 (0x1u << 0) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P1 (0x1u << 1) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P2 (0x1u << 2) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P3 (0x1u << 3) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P4 (0x1u << 4) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P5 (0x1u << 5) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P6 (0x1u << 6) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P7 (0x1u << 7) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P8 (0x1u << 8) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P9 (0x1u << 9) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P10 (0x1u << 10) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P11 (0x1u << 11) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P12 (0x1u << 12) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P13 (0x1u << 13) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P14 (0x1u << 14) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P15 (0x1u << 15) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P16 (0x1u << 16) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P17 (0x1u << 17) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P18 (0x1u << 18) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P19 (0x1u << 19) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P20 (0x1u << 20) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P21 (0x1u << 21) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P22 (0x1u << 22) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P23 (0x1u << 23) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P24 (0x1u << 24) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P25 (0x1u << 25) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P26 (0x1u << 26) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P27 (0x1u << 27) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P28 (0x1u << 28) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P29 (0x1u << 29) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P30 (0x1u << 30) /**< \brief (PIO_CODR) Clear Output Data */ +#define PIO_CODR_P31 (0x1u << 31) /**< \brief (PIO_CODR) Clear Output Data */ +/* -------- PIO_ODSR : (PIO Offset: 0x0038) Output Data Status Register -------- */ +#define PIO_ODSR_P0 (0x1u << 0) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P1 (0x1u << 1) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P2 (0x1u << 2) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P3 (0x1u << 3) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P4 (0x1u << 4) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P5 (0x1u << 5) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P6 (0x1u << 6) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P7 (0x1u << 7) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P8 (0x1u << 8) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P9 (0x1u << 9) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P10 (0x1u << 10) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P11 (0x1u << 11) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P12 (0x1u << 12) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P13 (0x1u << 13) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P14 (0x1u << 14) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P15 (0x1u << 15) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P16 (0x1u << 16) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P17 (0x1u << 17) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P18 (0x1u << 18) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P19 (0x1u << 19) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P20 (0x1u << 20) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P21 (0x1u << 21) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P22 (0x1u << 22) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P23 (0x1u << 23) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P24 (0x1u << 24) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P25 (0x1u << 25) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P26 (0x1u << 26) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P27 (0x1u << 27) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P28 (0x1u << 28) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P29 (0x1u << 29) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P30 (0x1u << 30) /**< \brief (PIO_ODSR) Output Data Status */ +#define PIO_ODSR_P31 (0x1u << 31) /**< \brief (PIO_ODSR) Output Data Status */ +/* -------- PIO_PDSR : (PIO Offset: 0x003C) Pin Data Status Register -------- */ +#define PIO_PDSR_P0 (0x1u << 0) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P1 (0x1u << 1) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P2 (0x1u << 2) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P3 (0x1u << 3) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P4 (0x1u << 4) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P5 (0x1u << 5) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P6 (0x1u << 6) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P7 (0x1u << 7) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P8 (0x1u << 8) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P9 (0x1u << 9) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P10 (0x1u << 10) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P11 (0x1u << 11) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P12 (0x1u << 12) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P13 (0x1u << 13) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P14 (0x1u << 14) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P15 (0x1u << 15) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P16 (0x1u << 16) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P17 (0x1u << 17) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P18 (0x1u << 18) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P19 (0x1u << 19) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P20 (0x1u << 20) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P21 (0x1u << 21) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P22 (0x1u << 22) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P23 (0x1u << 23) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P24 (0x1u << 24) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P25 (0x1u << 25) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P26 (0x1u << 26) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P27 (0x1u << 27) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P28 (0x1u << 28) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P29 (0x1u << 29) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P30 (0x1u << 30) /**< \brief (PIO_PDSR) Output Data Status */ +#define PIO_PDSR_P31 (0x1u << 31) /**< \brief (PIO_PDSR) Output Data Status */ +/* -------- PIO_IER : (PIO Offset: 0x0040) Interrupt Enable Register -------- */ +#define PIO_IER_P0 (0x1u << 0) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P1 (0x1u << 1) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P2 (0x1u << 2) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P3 (0x1u << 3) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P4 (0x1u << 4) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P5 (0x1u << 5) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P6 (0x1u << 6) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P7 (0x1u << 7) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P8 (0x1u << 8) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P9 (0x1u << 9) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P10 (0x1u << 10) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P11 (0x1u << 11) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P12 (0x1u << 12) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P13 (0x1u << 13) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P14 (0x1u << 14) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P15 (0x1u << 15) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P16 (0x1u << 16) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P17 (0x1u << 17) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P18 (0x1u << 18) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P19 (0x1u << 19) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P20 (0x1u << 20) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P21 (0x1u << 21) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P22 (0x1u << 22) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P23 (0x1u << 23) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P24 (0x1u << 24) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P25 (0x1u << 25) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P26 (0x1u << 26) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P27 (0x1u << 27) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P28 (0x1u << 28) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P29 (0x1u << 29) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P30 (0x1u << 30) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +#define PIO_IER_P31 (0x1u << 31) /**< \brief (PIO_IER) Input Change Interrupt Enable */ +/* -------- PIO_IDR : (PIO Offset: 0x0044) Interrupt Disable Register -------- */ +#define PIO_IDR_P0 (0x1u << 0) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P1 (0x1u << 1) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P2 (0x1u << 2) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P3 (0x1u << 3) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P4 (0x1u << 4) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P5 (0x1u << 5) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P6 (0x1u << 6) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P7 (0x1u << 7) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P8 (0x1u << 8) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P9 (0x1u << 9) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P10 (0x1u << 10) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P11 (0x1u << 11) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P12 (0x1u << 12) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P13 (0x1u << 13) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P14 (0x1u << 14) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P15 (0x1u << 15) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P16 (0x1u << 16) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P17 (0x1u << 17) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P18 (0x1u << 18) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P19 (0x1u << 19) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P20 (0x1u << 20) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P21 (0x1u << 21) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P22 (0x1u << 22) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P23 (0x1u << 23) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P24 (0x1u << 24) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P25 (0x1u << 25) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P26 (0x1u << 26) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P27 (0x1u << 27) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P28 (0x1u << 28) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P29 (0x1u << 29) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P30 (0x1u << 30) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +#define PIO_IDR_P31 (0x1u << 31) /**< \brief (PIO_IDR) Input Change Interrupt Disable */ +/* -------- PIO_IMR : (PIO Offset: 0x0048) Interrupt Mask Register -------- */ +#define PIO_IMR_P0 (0x1u << 0) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P1 (0x1u << 1) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P2 (0x1u << 2) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P3 (0x1u << 3) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P4 (0x1u << 4) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P5 (0x1u << 5) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P6 (0x1u << 6) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P7 (0x1u << 7) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P8 (0x1u << 8) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P9 (0x1u << 9) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P10 (0x1u << 10) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P11 (0x1u << 11) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P12 (0x1u << 12) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P13 (0x1u << 13) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P14 (0x1u << 14) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P15 (0x1u << 15) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P16 (0x1u << 16) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P17 (0x1u << 17) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P18 (0x1u << 18) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P19 (0x1u << 19) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P20 (0x1u << 20) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P21 (0x1u << 21) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P22 (0x1u << 22) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P23 (0x1u << 23) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P24 (0x1u << 24) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P25 (0x1u << 25) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P26 (0x1u << 26) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P27 (0x1u << 27) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P28 (0x1u << 28) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P29 (0x1u << 29) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P30 (0x1u << 30) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +#define PIO_IMR_P31 (0x1u << 31) /**< \brief (PIO_IMR) Input Change Interrupt Mask */ +/* -------- PIO_ISR : (PIO Offset: 0x004C) Interrupt Status Register -------- */ +#define PIO_ISR_P0 (0x1u << 0) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P1 (0x1u << 1) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P2 (0x1u << 2) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P3 (0x1u << 3) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P4 (0x1u << 4) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P5 (0x1u << 5) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P6 (0x1u << 6) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P7 (0x1u << 7) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P8 (0x1u << 8) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P9 (0x1u << 9) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P10 (0x1u << 10) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P11 (0x1u << 11) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P12 (0x1u << 12) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P13 (0x1u << 13) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P14 (0x1u << 14) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P15 (0x1u << 15) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P16 (0x1u << 16) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P17 (0x1u << 17) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P18 (0x1u << 18) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P19 (0x1u << 19) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P20 (0x1u << 20) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P21 (0x1u << 21) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P22 (0x1u << 22) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P23 (0x1u << 23) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P24 (0x1u << 24) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P25 (0x1u << 25) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P26 (0x1u << 26) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P27 (0x1u << 27) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P28 (0x1u << 28) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P29 (0x1u << 29) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P30 (0x1u << 30) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +#define PIO_ISR_P31 (0x1u << 31) /**< \brief (PIO_ISR) Input Change Interrupt Status */ +/* -------- PIO_MDER : (PIO Offset: 0x0050) Multi-driver Enable Register -------- */ +#define PIO_MDER_P0 (0x1u << 0) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P1 (0x1u << 1) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P2 (0x1u << 2) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P3 (0x1u << 3) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P4 (0x1u << 4) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P5 (0x1u << 5) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P6 (0x1u << 6) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P7 (0x1u << 7) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P8 (0x1u << 8) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P9 (0x1u << 9) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P10 (0x1u << 10) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P11 (0x1u << 11) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P12 (0x1u << 12) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P13 (0x1u << 13) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P14 (0x1u << 14) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P15 (0x1u << 15) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P16 (0x1u << 16) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P17 (0x1u << 17) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P18 (0x1u << 18) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P19 (0x1u << 19) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P20 (0x1u << 20) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P21 (0x1u << 21) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P22 (0x1u << 22) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P23 (0x1u << 23) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P24 (0x1u << 24) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P25 (0x1u << 25) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P26 (0x1u << 26) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P27 (0x1u << 27) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P28 (0x1u << 28) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P29 (0x1u << 29) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P30 (0x1u << 30) /**< \brief (PIO_MDER) Multi-drive Enable */ +#define PIO_MDER_P31 (0x1u << 31) /**< \brief (PIO_MDER) Multi-drive Enable */ +/* -------- PIO_MDDR : (PIO Offset: 0x0054) Multi-driver Disable Register -------- */ +#define PIO_MDDR_P0 (0x1u << 0) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P1 (0x1u << 1) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P2 (0x1u << 2) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P3 (0x1u << 3) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P4 (0x1u << 4) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P5 (0x1u << 5) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P6 (0x1u << 6) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P7 (0x1u << 7) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P8 (0x1u << 8) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P9 (0x1u << 9) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P10 (0x1u << 10) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P11 (0x1u << 11) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P12 (0x1u << 12) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P13 (0x1u << 13) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P14 (0x1u << 14) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P15 (0x1u << 15) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P16 (0x1u << 16) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P17 (0x1u << 17) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P18 (0x1u << 18) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P19 (0x1u << 19) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P20 (0x1u << 20) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P21 (0x1u << 21) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P22 (0x1u << 22) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P23 (0x1u << 23) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P24 (0x1u << 24) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P25 (0x1u << 25) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P26 (0x1u << 26) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P27 (0x1u << 27) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P28 (0x1u << 28) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P29 (0x1u << 29) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P30 (0x1u << 30) /**< \brief (PIO_MDDR) Multi-drive Disable */ +#define PIO_MDDR_P31 (0x1u << 31) /**< \brief (PIO_MDDR) Multi-drive Disable */ +/* -------- PIO_MDSR : (PIO Offset: 0x0058) Multi-driver Status Register -------- */ +#define PIO_MDSR_P0 (0x1u << 0) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P1 (0x1u << 1) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P2 (0x1u << 2) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P3 (0x1u << 3) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P4 (0x1u << 4) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P5 (0x1u << 5) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P6 (0x1u << 6) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P7 (0x1u << 7) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P8 (0x1u << 8) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P9 (0x1u << 9) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P10 (0x1u << 10) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P11 (0x1u << 11) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P12 (0x1u << 12) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P13 (0x1u << 13) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P14 (0x1u << 14) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P15 (0x1u << 15) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P16 (0x1u << 16) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P17 (0x1u << 17) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P18 (0x1u << 18) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P19 (0x1u << 19) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P20 (0x1u << 20) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P21 (0x1u << 21) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P22 (0x1u << 22) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P23 (0x1u << 23) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P24 (0x1u << 24) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P25 (0x1u << 25) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P26 (0x1u << 26) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P27 (0x1u << 27) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P28 (0x1u << 28) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P29 (0x1u << 29) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P30 (0x1u << 30) /**< \brief (PIO_MDSR) Multi-drive Status */ +#define PIO_MDSR_P31 (0x1u << 31) /**< \brief (PIO_MDSR) Multi-drive Status */ +/* -------- PIO_PUDR : (PIO Offset: 0x0060) Pull-up Disable Register -------- */ +#define PIO_PUDR_P0 (0x1u << 0) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P1 (0x1u << 1) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P2 (0x1u << 2) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P3 (0x1u << 3) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P4 (0x1u << 4) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P5 (0x1u << 5) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P6 (0x1u << 6) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P7 (0x1u << 7) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P8 (0x1u << 8) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P9 (0x1u << 9) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P10 (0x1u << 10) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P11 (0x1u << 11) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P12 (0x1u << 12) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P13 (0x1u << 13) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P14 (0x1u << 14) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P15 (0x1u << 15) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P16 (0x1u << 16) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P17 (0x1u << 17) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P18 (0x1u << 18) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P19 (0x1u << 19) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P20 (0x1u << 20) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P21 (0x1u << 21) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P22 (0x1u << 22) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P23 (0x1u << 23) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P24 (0x1u << 24) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P25 (0x1u << 25) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P26 (0x1u << 26) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P27 (0x1u << 27) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P28 (0x1u << 28) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P29 (0x1u << 29) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P30 (0x1u << 30) /**< \brief (PIO_PUDR) Pull-Up Disable */ +#define PIO_PUDR_P31 (0x1u << 31) /**< \brief (PIO_PUDR) Pull-Up Disable */ +/* -------- PIO_PUER : (PIO Offset: 0x0064) Pull-up Enable Register -------- */ +#define PIO_PUER_P0 (0x1u << 0) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P1 (0x1u << 1) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P2 (0x1u << 2) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P3 (0x1u << 3) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P4 (0x1u << 4) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P5 (0x1u << 5) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P6 (0x1u << 6) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P7 (0x1u << 7) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P8 (0x1u << 8) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P9 (0x1u << 9) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P10 (0x1u << 10) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P11 (0x1u << 11) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P12 (0x1u << 12) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P13 (0x1u << 13) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P14 (0x1u << 14) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P15 (0x1u << 15) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P16 (0x1u << 16) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P17 (0x1u << 17) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P18 (0x1u << 18) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P19 (0x1u << 19) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P20 (0x1u << 20) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P21 (0x1u << 21) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P22 (0x1u << 22) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P23 (0x1u << 23) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P24 (0x1u << 24) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P25 (0x1u << 25) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P26 (0x1u << 26) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P27 (0x1u << 27) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P28 (0x1u << 28) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P29 (0x1u << 29) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P30 (0x1u << 30) /**< \brief (PIO_PUER) Pull-Up Enable */ +#define PIO_PUER_P31 (0x1u << 31) /**< \brief (PIO_PUER) Pull-Up Enable */ +/* -------- PIO_PUSR : (PIO Offset: 0x0068) Pad Pull-up Status Register -------- */ +#define PIO_PUSR_P0 (0x1u << 0) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P1 (0x1u << 1) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P2 (0x1u << 2) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P3 (0x1u << 3) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P4 (0x1u << 4) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P5 (0x1u << 5) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P6 (0x1u << 6) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P7 (0x1u << 7) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P8 (0x1u << 8) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P9 (0x1u << 9) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P10 (0x1u << 10) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P11 (0x1u << 11) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P12 (0x1u << 12) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P13 (0x1u << 13) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P14 (0x1u << 14) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P15 (0x1u << 15) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P16 (0x1u << 16) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P17 (0x1u << 17) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P18 (0x1u << 18) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P19 (0x1u << 19) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P20 (0x1u << 20) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P21 (0x1u << 21) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P22 (0x1u << 22) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P23 (0x1u << 23) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P24 (0x1u << 24) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P25 (0x1u << 25) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P26 (0x1u << 26) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P27 (0x1u << 27) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P28 (0x1u << 28) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P29 (0x1u << 29) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P30 (0x1u << 30) /**< \brief (PIO_PUSR) Pull-Up Status */ +#define PIO_PUSR_P31 (0x1u << 31) /**< \brief (PIO_PUSR) Pull-Up Status */ +/* -------- PIO_ABCDSR[2] : (PIO Offset: 0x0070) Peripheral Select Register -------- */ +#define PIO_ABCDSR_P0 (0x1u << 0) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P1 (0x1u << 1) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P2 (0x1u << 2) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P3 (0x1u << 3) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P4 (0x1u << 4) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P5 (0x1u << 5) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P6 (0x1u << 6) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P7 (0x1u << 7) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P8 (0x1u << 8) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P9 (0x1u << 9) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P10 (0x1u << 10) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P11 (0x1u << 11) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P12 (0x1u << 12) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P13 (0x1u << 13) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P14 (0x1u << 14) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P15 (0x1u << 15) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P16 (0x1u << 16) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P17 (0x1u << 17) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P18 (0x1u << 18) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P19 (0x1u << 19) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P20 (0x1u << 20) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P21 (0x1u << 21) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P22 (0x1u << 22) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P23 (0x1u << 23) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P24 (0x1u << 24) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P25 (0x1u << 25) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P26 (0x1u << 26) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P27 (0x1u << 27) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P28 (0x1u << 28) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P29 (0x1u << 29) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P30 (0x1u << 30) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +#define PIO_ABCDSR_P31 (0x1u << 31) /**< \brief (PIO_ABCDSR[2]) Peripheral Select */ +/* -------- PIO_IFSCDR : (PIO Offset: 0x0080) Input Filter Slow Clock Disable Register -------- */ +#define PIO_IFSCDR_P0 (0x1u << 0) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P1 (0x1u << 1) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P2 (0x1u << 2) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P3 (0x1u << 3) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P4 (0x1u << 4) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P5 (0x1u << 5) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P6 (0x1u << 6) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P7 (0x1u << 7) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P8 (0x1u << 8) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P9 (0x1u << 9) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P10 (0x1u << 10) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P11 (0x1u << 11) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P12 (0x1u << 12) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P13 (0x1u << 13) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P14 (0x1u << 14) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P15 (0x1u << 15) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P16 (0x1u << 16) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P17 (0x1u << 17) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P18 (0x1u << 18) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P19 (0x1u << 19) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P20 (0x1u << 20) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P21 (0x1u << 21) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P22 (0x1u << 22) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P23 (0x1u << 23) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P24 (0x1u << 24) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P25 (0x1u << 25) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P26 (0x1u << 26) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P27 (0x1u << 27) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P28 (0x1u << 28) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P29 (0x1u << 29) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P30 (0x1u << 30) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +#define PIO_IFSCDR_P31 (0x1u << 31) /**< \brief (PIO_IFSCDR) Peripheral Clock Glitch Filtering Select */ +/* -------- PIO_IFSCER : (PIO Offset: 0x0084) Input Filter Slow Clock Enable Register -------- */ +#define PIO_IFSCER_P0 (0x1u << 0) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P1 (0x1u << 1) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P2 (0x1u << 2) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P3 (0x1u << 3) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P4 (0x1u << 4) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P5 (0x1u << 5) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P6 (0x1u << 6) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P7 (0x1u << 7) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P8 (0x1u << 8) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P9 (0x1u << 9) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P10 (0x1u << 10) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P11 (0x1u << 11) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P12 (0x1u << 12) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P13 (0x1u << 13) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P14 (0x1u << 14) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P15 (0x1u << 15) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P16 (0x1u << 16) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P17 (0x1u << 17) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P18 (0x1u << 18) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P19 (0x1u << 19) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P20 (0x1u << 20) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P21 (0x1u << 21) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P22 (0x1u << 22) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P23 (0x1u << 23) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P24 (0x1u << 24) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P25 (0x1u << 25) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P26 (0x1u << 26) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P27 (0x1u << 27) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P28 (0x1u << 28) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P29 (0x1u << 29) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P30 (0x1u << 30) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +#define PIO_IFSCER_P31 (0x1u << 31) /**< \brief (PIO_IFSCER) Slow Clock Debouncing Filtering Select */ +/* -------- PIO_IFSCSR : (PIO Offset: 0x0088) Input Filter Slow Clock Status Register -------- */ +#define PIO_IFSCSR_P0 (0x1u << 0) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P1 (0x1u << 1) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P2 (0x1u << 2) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P3 (0x1u << 3) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P4 (0x1u << 4) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P5 (0x1u << 5) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P6 (0x1u << 6) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P7 (0x1u << 7) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P8 (0x1u << 8) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P9 (0x1u << 9) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P10 (0x1u << 10) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P11 (0x1u << 11) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P12 (0x1u << 12) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P13 (0x1u << 13) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P14 (0x1u << 14) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P15 (0x1u << 15) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P16 (0x1u << 16) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P17 (0x1u << 17) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P18 (0x1u << 18) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P19 (0x1u << 19) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P20 (0x1u << 20) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P21 (0x1u << 21) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P22 (0x1u << 22) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P23 (0x1u << 23) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P24 (0x1u << 24) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P25 (0x1u << 25) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P26 (0x1u << 26) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P27 (0x1u << 27) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P28 (0x1u << 28) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P29 (0x1u << 29) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P30 (0x1u << 30) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +#define PIO_IFSCSR_P31 (0x1u << 31) /**< \brief (PIO_IFSCSR) Glitch or Debouncing Filter Selection Status */ +/* -------- PIO_SCDR : (PIO Offset: 0x008C) Slow Clock Divider Debouncing Register -------- */ +#define PIO_SCDR_DIV_Pos 0 +#define PIO_SCDR_DIV_Msk (0x3fffu << PIO_SCDR_DIV_Pos) /**< \brief (PIO_SCDR) Slow Clock Divider Selection for Debouncing */ +#define PIO_SCDR_DIV(value) ((PIO_SCDR_DIV_Msk & ((value) << PIO_SCDR_DIV_Pos))) +/* -------- PIO_PPDDR : (PIO Offset: 0x0090) Pad Pull-down Disable Register -------- */ +#define PIO_PPDDR_P0 (0x1u << 0) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P1 (0x1u << 1) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P2 (0x1u << 2) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P3 (0x1u << 3) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P4 (0x1u << 4) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P5 (0x1u << 5) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P6 (0x1u << 6) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P7 (0x1u << 7) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P8 (0x1u << 8) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P9 (0x1u << 9) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P10 (0x1u << 10) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P11 (0x1u << 11) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P12 (0x1u << 12) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P13 (0x1u << 13) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P14 (0x1u << 14) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P15 (0x1u << 15) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P16 (0x1u << 16) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P17 (0x1u << 17) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P18 (0x1u << 18) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P19 (0x1u << 19) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P20 (0x1u << 20) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P21 (0x1u << 21) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P22 (0x1u << 22) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P23 (0x1u << 23) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P24 (0x1u << 24) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P25 (0x1u << 25) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P26 (0x1u << 26) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P27 (0x1u << 27) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P28 (0x1u << 28) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P29 (0x1u << 29) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P30 (0x1u << 30) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +#define PIO_PPDDR_P31 (0x1u << 31) /**< \brief (PIO_PPDDR) Pull-Down Disable */ +/* -------- PIO_PPDER : (PIO Offset: 0x0094) Pad Pull-down Enable Register -------- */ +#define PIO_PPDER_P0 (0x1u << 0) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P1 (0x1u << 1) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P2 (0x1u << 2) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P3 (0x1u << 3) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P4 (0x1u << 4) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P5 (0x1u << 5) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P6 (0x1u << 6) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P7 (0x1u << 7) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P8 (0x1u << 8) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P9 (0x1u << 9) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P10 (0x1u << 10) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P11 (0x1u << 11) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P12 (0x1u << 12) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P13 (0x1u << 13) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P14 (0x1u << 14) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P15 (0x1u << 15) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P16 (0x1u << 16) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P17 (0x1u << 17) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P18 (0x1u << 18) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P19 (0x1u << 19) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P20 (0x1u << 20) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P21 (0x1u << 21) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P22 (0x1u << 22) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P23 (0x1u << 23) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P24 (0x1u << 24) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P25 (0x1u << 25) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P26 (0x1u << 26) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P27 (0x1u << 27) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P28 (0x1u << 28) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P29 (0x1u << 29) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P30 (0x1u << 30) /**< \brief (PIO_PPDER) Pull-Down Enable */ +#define PIO_PPDER_P31 (0x1u << 31) /**< \brief (PIO_PPDER) Pull-Down Enable */ +/* -------- PIO_PPDSR : (PIO Offset: 0x0098) Pad Pull-down Status Register -------- */ +#define PIO_PPDSR_P0 (0x1u << 0) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P1 (0x1u << 1) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P2 (0x1u << 2) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P3 (0x1u << 3) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P4 (0x1u << 4) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P5 (0x1u << 5) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P6 (0x1u << 6) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P7 (0x1u << 7) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P8 (0x1u << 8) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P9 (0x1u << 9) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P10 (0x1u << 10) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P11 (0x1u << 11) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P12 (0x1u << 12) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P13 (0x1u << 13) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P14 (0x1u << 14) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P15 (0x1u << 15) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P16 (0x1u << 16) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P17 (0x1u << 17) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P18 (0x1u << 18) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P19 (0x1u << 19) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P20 (0x1u << 20) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P21 (0x1u << 21) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P22 (0x1u << 22) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P23 (0x1u << 23) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P24 (0x1u << 24) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P25 (0x1u << 25) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P26 (0x1u << 26) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P27 (0x1u << 27) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P28 (0x1u << 28) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P29 (0x1u << 29) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P30 (0x1u << 30) /**< \brief (PIO_PPDSR) Pull-Down Status */ +#define PIO_PPDSR_P31 (0x1u << 31) /**< \brief (PIO_PPDSR) Pull-Down Status */ +/* -------- PIO_OWER : (PIO Offset: 0x00A0) Output Write Enable -------- */ +#define PIO_OWER_P0 (0x1u << 0) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P1 (0x1u << 1) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P2 (0x1u << 2) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P3 (0x1u << 3) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P4 (0x1u << 4) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P5 (0x1u << 5) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P6 (0x1u << 6) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P7 (0x1u << 7) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P8 (0x1u << 8) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P9 (0x1u << 9) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P10 (0x1u << 10) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P11 (0x1u << 11) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P12 (0x1u << 12) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P13 (0x1u << 13) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P14 (0x1u << 14) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P15 (0x1u << 15) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P16 (0x1u << 16) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P17 (0x1u << 17) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P18 (0x1u << 18) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P19 (0x1u << 19) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P20 (0x1u << 20) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P21 (0x1u << 21) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P22 (0x1u << 22) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P23 (0x1u << 23) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P24 (0x1u << 24) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P25 (0x1u << 25) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P26 (0x1u << 26) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P27 (0x1u << 27) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P28 (0x1u << 28) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P29 (0x1u << 29) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P30 (0x1u << 30) /**< \brief (PIO_OWER) Output Write Enable */ +#define PIO_OWER_P31 (0x1u << 31) /**< \brief (PIO_OWER) Output Write Enable */ +/* -------- PIO_OWDR : (PIO Offset: 0x00A4) Output Write Disable -------- */ +#define PIO_OWDR_P0 (0x1u << 0) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P1 (0x1u << 1) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P2 (0x1u << 2) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P3 (0x1u << 3) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P4 (0x1u << 4) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P5 (0x1u << 5) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P6 (0x1u << 6) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P7 (0x1u << 7) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P8 (0x1u << 8) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P9 (0x1u << 9) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P10 (0x1u << 10) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P11 (0x1u << 11) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P12 (0x1u << 12) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P13 (0x1u << 13) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P14 (0x1u << 14) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P15 (0x1u << 15) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P16 (0x1u << 16) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P17 (0x1u << 17) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P18 (0x1u << 18) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P19 (0x1u << 19) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P20 (0x1u << 20) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P21 (0x1u << 21) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P22 (0x1u << 22) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P23 (0x1u << 23) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P24 (0x1u << 24) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P25 (0x1u << 25) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P26 (0x1u << 26) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P27 (0x1u << 27) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P28 (0x1u << 28) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P29 (0x1u << 29) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P30 (0x1u << 30) /**< \brief (PIO_OWDR) Output Write Disable */ +#define PIO_OWDR_P31 (0x1u << 31) /**< \brief (PIO_OWDR) Output Write Disable */ +/* -------- PIO_OWSR : (PIO Offset: 0x00A8) Output Write Status Register -------- */ +#define PIO_OWSR_P0 (0x1u << 0) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P1 (0x1u << 1) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P2 (0x1u << 2) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P3 (0x1u << 3) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P4 (0x1u << 4) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P5 (0x1u << 5) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P6 (0x1u << 6) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P7 (0x1u << 7) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P8 (0x1u << 8) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P9 (0x1u << 9) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P10 (0x1u << 10) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P11 (0x1u << 11) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P12 (0x1u << 12) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P13 (0x1u << 13) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P14 (0x1u << 14) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P15 (0x1u << 15) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P16 (0x1u << 16) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P17 (0x1u << 17) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P18 (0x1u << 18) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P19 (0x1u << 19) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P20 (0x1u << 20) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P21 (0x1u << 21) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P22 (0x1u << 22) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P23 (0x1u << 23) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P24 (0x1u << 24) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P25 (0x1u << 25) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P26 (0x1u << 26) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P27 (0x1u << 27) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P28 (0x1u << 28) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P29 (0x1u << 29) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P30 (0x1u << 30) /**< \brief (PIO_OWSR) Output Write Status */ +#define PIO_OWSR_P31 (0x1u << 31) /**< \brief (PIO_OWSR) Output Write Status */ +/* -------- PIO_AIMER : (PIO Offset: 0x00B0) Additional Interrupt Modes Enable Register -------- */ +#define PIO_AIMER_P0 (0x1u << 0) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P1 (0x1u << 1) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P2 (0x1u << 2) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P3 (0x1u << 3) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P4 (0x1u << 4) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P5 (0x1u << 5) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P6 (0x1u << 6) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P7 (0x1u << 7) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P8 (0x1u << 8) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P9 (0x1u << 9) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P10 (0x1u << 10) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P11 (0x1u << 11) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P12 (0x1u << 12) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P13 (0x1u << 13) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P14 (0x1u << 14) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P15 (0x1u << 15) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P16 (0x1u << 16) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P17 (0x1u << 17) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P18 (0x1u << 18) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P19 (0x1u << 19) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P20 (0x1u << 20) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P21 (0x1u << 21) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P22 (0x1u << 22) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P23 (0x1u << 23) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P24 (0x1u << 24) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P25 (0x1u << 25) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P26 (0x1u << 26) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P27 (0x1u << 27) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P28 (0x1u << 28) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P29 (0x1u << 29) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P30 (0x1u << 30) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +#define PIO_AIMER_P31 (0x1u << 31) /**< \brief (PIO_AIMER) Additional Interrupt Modes Enable */ +/* -------- PIO_AIMDR : (PIO Offset: 0x00B4) Additional Interrupt Modes Disable Register -------- */ +#define PIO_AIMDR_P0 (0x1u << 0) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P1 (0x1u << 1) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P2 (0x1u << 2) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P3 (0x1u << 3) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P4 (0x1u << 4) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P5 (0x1u << 5) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P6 (0x1u << 6) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P7 (0x1u << 7) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P8 (0x1u << 8) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P9 (0x1u << 9) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P10 (0x1u << 10) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P11 (0x1u << 11) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P12 (0x1u << 12) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P13 (0x1u << 13) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P14 (0x1u << 14) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P15 (0x1u << 15) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P16 (0x1u << 16) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P17 (0x1u << 17) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P18 (0x1u << 18) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P19 (0x1u << 19) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P20 (0x1u << 20) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P21 (0x1u << 21) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P22 (0x1u << 22) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P23 (0x1u << 23) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P24 (0x1u << 24) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P25 (0x1u << 25) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P26 (0x1u << 26) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P27 (0x1u << 27) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P28 (0x1u << 28) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P29 (0x1u << 29) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P30 (0x1u << 30) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +#define PIO_AIMDR_P31 (0x1u << 31) /**< \brief (PIO_AIMDR) Additional Interrupt Modes Disable */ +/* -------- PIO_AIMMR : (PIO Offset: 0x00B8) Additional Interrupt Modes Mask Register -------- */ +#define PIO_AIMMR_P0 (0x1u << 0) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P1 (0x1u << 1) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P2 (0x1u << 2) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P3 (0x1u << 3) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P4 (0x1u << 4) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P5 (0x1u << 5) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P6 (0x1u << 6) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P7 (0x1u << 7) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P8 (0x1u << 8) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P9 (0x1u << 9) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P10 (0x1u << 10) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P11 (0x1u << 11) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P12 (0x1u << 12) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P13 (0x1u << 13) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P14 (0x1u << 14) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P15 (0x1u << 15) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P16 (0x1u << 16) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P17 (0x1u << 17) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P18 (0x1u << 18) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P19 (0x1u << 19) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P20 (0x1u << 20) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P21 (0x1u << 21) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P22 (0x1u << 22) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P23 (0x1u << 23) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P24 (0x1u << 24) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P25 (0x1u << 25) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P26 (0x1u << 26) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P27 (0x1u << 27) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P28 (0x1u << 28) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P29 (0x1u << 29) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P30 (0x1u << 30) /**< \brief (PIO_AIMMR) IO Line Index */ +#define PIO_AIMMR_P31 (0x1u << 31) /**< \brief (PIO_AIMMR) IO Line Index */ +/* -------- PIO_ESR : (PIO Offset: 0x00C0) Edge Select Register -------- */ +#define PIO_ESR_P0 (0x1u << 0) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P1 (0x1u << 1) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P2 (0x1u << 2) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P3 (0x1u << 3) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P4 (0x1u << 4) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P5 (0x1u << 5) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P6 (0x1u << 6) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P7 (0x1u << 7) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P8 (0x1u << 8) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P9 (0x1u << 9) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P10 (0x1u << 10) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P11 (0x1u << 11) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P12 (0x1u << 12) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P13 (0x1u << 13) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P14 (0x1u << 14) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P15 (0x1u << 15) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P16 (0x1u << 16) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P17 (0x1u << 17) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P18 (0x1u << 18) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P19 (0x1u << 19) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P20 (0x1u << 20) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P21 (0x1u << 21) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P22 (0x1u << 22) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P23 (0x1u << 23) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P24 (0x1u << 24) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P25 (0x1u << 25) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P26 (0x1u << 26) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P27 (0x1u << 27) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P28 (0x1u << 28) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P29 (0x1u << 29) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P30 (0x1u << 30) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +#define PIO_ESR_P31 (0x1u << 31) /**< \brief (PIO_ESR) Edge Interrupt Selection */ +/* -------- PIO_LSR : (PIO Offset: 0x00C4) Level Select Register -------- */ +#define PIO_LSR_P0 (0x1u << 0) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P1 (0x1u << 1) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P2 (0x1u << 2) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P3 (0x1u << 3) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P4 (0x1u << 4) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P5 (0x1u << 5) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P6 (0x1u << 6) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P7 (0x1u << 7) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P8 (0x1u << 8) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P9 (0x1u << 9) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P10 (0x1u << 10) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P11 (0x1u << 11) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P12 (0x1u << 12) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P13 (0x1u << 13) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P14 (0x1u << 14) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P15 (0x1u << 15) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P16 (0x1u << 16) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P17 (0x1u << 17) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P18 (0x1u << 18) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P19 (0x1u << 19) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P20 (0x1u << 20) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P21 (0x1u << 21) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P22 (0x1u << 22) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P23 (0x1u << 23) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P24 (0x1u << 24) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P25 (0x1u << 25) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P26 (0x1u << 26) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P27 (0x1u << 27) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P28 (0x1u << 28) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P29 (0x1u << 29) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P30 (0x1u << 30) /**< \brief (PIO_LSR) Level Interrupt Selection */ +#define PIO_LSR_P31 (0x1u << 31) /**< \brief (PIO_LSR) Level Interrupt Selection */ +/* -------- PIO_ELSR : (PIO Offset: 0x00C8) Edge/Level Status Register -------- */ +#define PIO_ELSR_P0 (0x1u << 0) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P1 (0x1u << 1) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P2 (0x1u << 2) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P3 (0x1u << 3) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P4 (0x1u << 4) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P5 (0x1u << 5) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P6 (0x1u << 6) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P7 (0x1u << 7) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P8 (0x1u << 8) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P9 (0x1u << 9) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P10 (0x1u << 10) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P11 (0x1u << 11) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P12 (0x1u << 12) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P13 (0x1u << 13) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P14 (0x1u << 14) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P15 (0x1u << 15) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P16 (0x1u << 16) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P17 (0x1u << 17) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P18 (0x1u << 18) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P19 (0x1u << 19) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P20 (0x1u << 20) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P21 (0x1u << 21) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P22 (0x1u << 22) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P23 (0x1u << 23) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P24 (0x1u << 24) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P25 (0x1u << 25) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P26 (0x1u << 26) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P27 (0x1u << 27) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P28 (0x1u << 28) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P29 (0x1u << 29) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P30 (0x1u << 30) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +#define PIO_ELSR_P31 (0x1u << 31) /**< \brief (PIO_ELSR) Edge/Level Interrupt Source Selection */ +/* -------- PIO_FELLSR : (PIO Offset: 0x00D0) Falling Edge/Low-Level Select Register -------- */ +#define PIO_FELLSR_P0 (0x1u << 0) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P1 (0x1u << 1) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P2 (0x1u << 2) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P3 (0x1u << 3) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P4 (0x1u << 4) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P5 (0x1u << 5) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P6 (0x1u << 6) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P7 (0x1u << 7) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P8 (0x1u << 8) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P9 (0x1u << 9) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P10 (0x1u << 10) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P11 (0x1u << 11) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P12 (0x1u << 12) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P13 (0x1u << 13) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P14 (0x1u << 14) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P15 (0x1u << 15) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P16 (0x1u << 16) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P17 (0x1u << 17) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P18 (0x1u << 18) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P19 (0x1u << 19) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P20 (0x1u << 20) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P21 (0x1u << 21) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P22 (0x1u << 22) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P23 (0x1u << 23) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P24 (0x1u << 24) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P25 (0x1u << 25) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P26 (0x1u << 26) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P27 (0x1u << 27) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P28 (0x1u << 28) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P29 (0x1u << 29) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P30 (0x1u << 30) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +#define PIO_FELLSR_P31 (0x1u << 31) /**< \brief (PIO_FELLSR) Falling Edge/Low-Level Interrupt Selection */ +/* -------- PIO_REHLSR : (PIO Offset: 0x00D4) Rising Edge/High-Level Select Register -------- */ +#define PIO_REHLSR_P0 (0x1u << 0) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P1 (0x1u << 1) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P2 (0x1u << 2) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P3 (0x1u << 3) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P4 (0x1u << 4) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P5 (0x1u << 5) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P6 (0x1u << 6) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P7 (0x1u << 7) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P8 (0x1u << 8) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P9 (0x1u << 9) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P10 (0x1u << 10) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P11 (0x1u << 11) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P12 (0x1u << 12) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P13 (0x1u << 13) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P14 (0x1u << 14) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P15 (0x1u << 15) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P16 (0x1u << 16) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P17 (0x1u << 17) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P18 (0x1u << 18) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P19 (0x1u << 19) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P20 (0x1u << 20) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P21 (0x1u << 21) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P22 (0x1u << 22) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P23 (0x1u << 23) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P24 (0x1u << 24) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P25 (0x1u << 25) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P26 (0x1u << 26) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P27 (0x1u << 27) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P28 (0x1u << 28) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P29 (0x1u << 29) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P30 (0x1u << 30) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +#define PIO_REHLSR_P31 (0x1u << 31) /**< \brief (PIO_REHLSR) Rising Edge/High-Level Interrupt Selection */ +/* -------- PIO_FRLHSR : (PIO Offset: 0x00D8) Fall/Rise - Low/High Status Register -------- */ +#define PIO_FRLHSR_P0 (0x1u << 0) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P1 (0x1u << 1) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P2 (0x1u << 2) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P3 (0x1u << 3) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P4 (0x1u << 4) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P5 (0x1u << 5) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P6 (0x1u << 6) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P7 (0x1u << 7) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P8 (0x1u << 8) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P9 (0x1u << 9) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P10 (0x1u << 10) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P11 (0x1u << 11) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P12 (0x1u << 12) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P13 (0x1u << 13) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P14 (0x1u << 14) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P15 (0x1u << 15) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P16 (0x1u << 16) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P17 (0x1u << 17) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P18 (0x1u << 18) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P19 (0x1u << 19) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P20 (0x1u << 20) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P21 (0x1u << 21) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P22 (0x1u << 22) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P23 (0x1u << 23) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P24 (0x1u << 24) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P25 (0x1u << 25) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P26 (0x1u << 26) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P27 (0x1u << 27) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P28 (0x1u << 28) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P29 (0x1u << 29) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P30 (0x1u << 30) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +#define PIO_FRLHSR_P31 (0x1u << 31) /**< \brief (PIO_FRLHSR) Edge/Level Interrupt Source Selection */ +/* -------- PIO_LOCKSR : (PIO Offset: 0x00E0) Lock Status -------- */ +#define PIO_LOCKSR_P0 (0x1u << 0) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P1 (0x1u << 1) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P2 (0x1u << 2) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P3 (0x1u << 3) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P4 (0x1u << 4) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P5 (0x1u << 5) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P6 (0x1u << 6) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P7 (0x1u << 7) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P8 (0x1u << 8) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P9 (0x1u << 9) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P10 (0x1u << 10) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P11 (0x1u << 11) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P12 (0x1u << 12) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P13 (0x1u << 13) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P14 (0x1u << 14) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P15 (0x1u << 15) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P16 (0x1u << 16) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P17 (0x1u << 17) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P18 (0x1u << 18) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P19 (0x1u << 19) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P20 (0x1u << 20) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P21 (0x1u << 21) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P22 (0x1u << 22) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P23 (0x1u << 23) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P24 (0x1u << 24) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P25 (0x1u << 25) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P26 (0x1u << 26) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P27 (0x1u << 27) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P28 (0x1u << 28) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P29 (0x1u << 29) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P30 (0x1u << 30) /**< \brief (PIO_LOCKSR) Lock Status */ +#define PIO_LOCKSR_P31 (0x1u << 31) /**< \brief (PIO_LOCKSR) Lock Status */ +/* -------- PIO_WPMR : (PIO Offset: 0x00E4) Write Protection Mode Register -------- */ +#define PIO_WPMR_WPEN (0x1u << 0) /**< \brief (PIO_WPMR) Write Protection Enable */ +#define PIO_WPMR_WPKEY_Pos 8 +#define PIO_WPMR_WPKEY_Msk (0xffffffu << PIO_WPMR_WPKEY_Pos) /**< \brief (PIO_WPMR) Write Protection Key */ +#define PIO_WPMR_WPKEY(value) ((PIO_WPMR_WPKEY_Msk & ((value) << PIO_WPMR_WPKEY_Pos))) +#define PIO_WPMR_WPKEY_PASSWD (0x50494Fu << 8) /**< \brief (PIO_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- PIO_WPSR : (PIO Offset: 0x00E8) Write Protection Status Register -------- */ +#define PIO_WPSR_WPVS (0x1u << 0) /**< \brief (PIO_WPSR) Write Protection Violation Status */ +#define PIO_WPSR_WPVSRC_Pos 8 +#define PIO_WPSR_WPVSRC_Msk (0xffffu << PIO_WPSR_WPVSRC_Pos) /**< \brief (PIO_WPSR) Write Protection Violation Source */ +/* -------- PIO_VERSION : (PIO Offset: 0x00FC) Version Register -------- */ +#define PIO_VERSION_VERSION_Pos 0 +#define PIO_VERSION_VERSION_Msk (0xfffu << PIO_VERSION_VERSION_Pos) /**< \brief (PIO_VERSION) Hardware Module Version */ +#define PIO_VERSION_MFN_Pos 16 +#define PIO_VERSION_MFN_Msk (0x7u << PIO_VERSION_MFN_Pos) /**< \brief (PIO_VERSION) Metal Fix Number */ +/* -------- PIO_SCHMITT : (PIO Offset: 0x0100) Schmitt Trigger Register -------- */ +#define PIO_SCHMITT_SCHMITT0 (0x1u << 0) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT1 (0x1u << 1) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT2 (0x1u << 2) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT3 (0x1u << 3) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT4 (0x1u << 4) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT5 (0x1u << 5) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT6 (0x1u << 6) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT7 (0x1u << 7) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT8 (0x1u << 8) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT9 (0x1u << 9) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT10 (0x1u << 10) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT11 (0x1u << 11) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT12 (0x1u << 12) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT13 (0x1u << 13) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT14 (0x1u << 14) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT15 (0x1u << 15) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT16 (0x1u << 16) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT17 (0x1u << 17) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT18 (0x1u << 18) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT19 (0x1u << 19) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT20 (0x1u << 20) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT21 (0x1u << 21) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT22 (0x1u << 22) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT23 (0x1u << 23) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT24 (0x1u << 24) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT25 (0x1u << 25) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT26 (0x1u << 26) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT27 (0x1u << 27) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT28 (0x1u << 28) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT29 (0x1u << 29) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT30 (0x1u << 30) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +#define PIO_SCHMITT_SCHMITT31 (0x1u << 31) /**< \brief (PIO_SCHMITT) Schmitt Trigger Control */ +/* -------- PIO_DRIVER : (PIO Offset: 0x0118) I/O Drive Register -------- */ +#define PIO_DRIVER_LINE0 (0x1u << 0) /**< \brief (PIO_DRIVER) Drive of PIO Line 0 */ +#define PIO_DRIVER_LINE0_LOW_DRIVE (0x0u << 0) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE0_HIGH_DRIVE (0x1u << 0) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE1 (0x1u << 1) /**< \brief (PIO_DRIVER) Drive of PIO Line 1 */ +#define PIO_DRIVER_LINE1_LOW_DRIVE (0x0u << 1) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE1_HIGH_DRIVE (0x1u << 1) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE2 (0x1u << 2) /**< \brief (PIO_DRIVER) Drive of PIO Line 2 */ +#define PIO_DRIVER_LINE2_LOW_DRIVE (0x0u << 2) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE2_HIGH_DRIVE (0x1u << 2) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE3 (0x1u << 3) /**< \brief (PIO_DRIVER) Drive of PIO Line 3 */ +#define PIO_DRIVER_LINE3_LOW_DRIVE (0x0u << 3) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE3_HIGH_DRIVE (0x1u << 3) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE4 (0x1u << 4) /**< \brief (PIO_DRIVER) Drive of PIO Line 4 */ +#define PIO_DRIVER_LINE4_LOW_DRIVE (0x0u << 4) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE4_HIGH_DRIVE (0x1u << 4) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE5 (0x1u << 5) /**< \brief (PIO_DRIVER) Drive of PIO Line 5 */ +#define PIO_DRIVER_LINE5_LOW_DRIVE (0x0u << 5) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE5_HIGH_DRIVE (0x1u << 5) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE6 (0x1u << 6) /**< \brief (PIO_DRIVER) Drive of PIO Line 6 */ +#define PIO_DRIVER_LINE6_LOW_DRIVE (0x0u << 6) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE6_HIGH_DRIVE (0x1u << 6) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE7 (0x1u << 7) /**< \brief (PIO_DRIVER) Drive of PIO Line 7 */ +#define PIO_DRIVER_LINE7_LOW_DRIVE (0x0u << 7) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE7_HIGH_DRIVE (0x1u << 7) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE8 (0x1u << 8) /**< \brief (PIO_DRIVER) Drive of PIO Line 8 */ +#define PIO_DRIVER_LINE8_LOW_DRIVE (0x0u << 8) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE8_HIGH_DRIVE (0x1u << 8) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE9 (0x1u << 9) /**< \brief (PIO_DRIVER) Drive of PIO Line 9 */ +#define PIO_DRIVER_LINE9_LOW_DRIVE (0x0u << 9) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE9_HIGH_DRIVE (0x1u << 9) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE10 (0x1u << 10) /**< \brief (PIO_DRIVER) Drive of PIO Line 10 */ +#define PIO_DRIVER_LINE10_LOW_DRIVE (0x0u << 10) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE10_HIGH_DRIVE (0x1u << 10) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE11 (0x1u << 11) /**< \brief (PIO_DRIVER) Drive of PIO Line 11 */ +#define PIO_DRIVER_LINE11_LOW_DRIVE (0x0u << 11) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE11_HIGH_DRIVE (0x1u << 11) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE12 (0x1u << 12) /**< \brief (PIO_DRIVER) Drive of PIO Line 12 */ +#define PIO_DRIVER_LINE12_LOW_DRIVE (0x0u << 12) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE12_HIGH_DRIVE (0x1u << 12) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE13 (0x1u << 13) /**< \brief (PIO_DRIVER) Drive of PIO Line 13 */ +#define PIO_DRIVER_LINE13_LOW_DRIVE (0x0u << 13) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE13_HIGH_DRIVE (0x1u << 13) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE14 (0x1u << 14) /**< \brief (PIO_DRIVER) Drive of PIO Line 14 */ +#define PIO_DRIVER_LINE14_LOW_DRIVE (0x0u << 14) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE14_HIGH_DRIVE (0x1u << 14) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE15 (0x1u << 15) /**< \brief (PIO_DRIVER) Drive of PIO Line 15 */ +#define PIO_DRIVER_LINE15_LOW_DRIVE (0x0u << 15) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE15_HIGH_DRIVE (0x1u << 15) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE16 (0x1u << 16) /**< \brief (PIO_DRIVER) Drive of PIO Line 16 */ +#define PIO_DRIVER_LINE16_LOW_DRIVE (0x0u << 16) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE16_HIGH_DRIVE (0x1u << 16) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE17 (0x1u << 17) /**< \brief (PIO_DRIVER) Drive of PIO Line 17 */ +#define PIO_DRIVER_LINE17_LOW_DRIVE (0x0u << 17) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE17_HIGH_DRIVE (0x1u << 17) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE18 (0x1u << 18) /**< \brief (PIO_DRIVER) Drive of PIO Line 18 */ +#define PIO_DRIVER_LINE18_LOW_DRIVE (0x0u << 18) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE18_HIGH_DRIVE (0x1u << 18) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE19 (0x1u << 19) /**< \brief (PIO_DRIVER) Drive of PIO Line 19 */ +#define PIO_DRIVER_LINE19_LOW_DRIVE (0x0u << 19) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE19_HIGH_DRIVE (0x1u << 19) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE20 (0x1u << 20) /**< \brief (PIO_DRIVER) Drive of PIO Line 20 */ +#define PIO_DRIVER_LINE20_LOW_DRIVE (0x0u << 20) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE20_HIGH_DRIVE (0x1u << 20) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE21 (0x1u << 21) /**< \brief (PIO_DRIVER) Drive of PIO Line 21 */ +#define PIO_DRIVER_LINE21_LOW_DRIVE (0x0u << 21) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE21_HIGH_DRIVE (0x1u << 21) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE22 (0x1u << 22) /**< \brief (PIO_DRIVER) Drive of PIO Line 22 */ +#define PIO_DRIVER_LINE22_LOW_DRIVE (0x0u << 22) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE22_HIGH_DRIVE (0x1u << 22) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE23 (0x1u << 23) /**< \brief (PIO_DRIVER) Drive of PIO Line 23 */ +#define PIO_DRIVER_LINE23_LOW_DRIVE (0x0u << 23) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE23_HIGH_DRIVE (0x1u << 23) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE24 (0x1u << 24) /**< \brief (PIO_DRIVER) Drive of PIO Line 24 */ +#define PIO_DRIVER_LINE24_LOW_DRIVE (0x0u << 24) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE24_HIGH_DRIVE (0x1u << 24) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE25 (0x1u << 25) /**< \brief (PIO_DRIVER) Drive of PIO Line 25 */ +#define PIO_DRIVER_LINE25_LOW_DRIVE (0x0u << 25) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE25_HIGH_DRIVE (0x1u << 25) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE26 (0x1u << 26) /**< \brief (PIO_DRIVER) Drive of PIO Line 26 */ +#define PIO_DRIVER_LINE26_LOW_DRIVE (0x0u << 26) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE26_HIGH_DRIVE (0x1u << 26) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE27 (0x1u << 27) /**< \brief (PIO_DRIVER) Drive of PIO Line 27 */ +#define PIO_DRIVER_LINE27_LOW_DRIVE (0x0u << 27) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE27_HIGH_DRIVE (0x1u << 27) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE28 (0x1u << 28) /**< \brief (PIO_DRIVER) Drive of PIO Line 28 */ +#define PIO_DRIVER_LINE28_LOW_DRIVE (0x0u << 28) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE28_HIGH_DRIVE (0x1u << 28) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE29 (0x1u << 29) /**< \brief (PIO_DRIVER) Drive of PIO Line 29 */ +#define PIO_DRIVER_LINE29_LOW_DRIVE (0x0u << 29) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE29_HIGH_DRIVE (0x1u << 29) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE30 (0x1u << 30) /**< \brief (PIO_DRIVER) Drive of PIO Line 30 */ +#define PIO_DRIVER_LINE30_LOW_DRIVE (0x0u << 30) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE30_HIGH_DRIVE (0x1u << 30) /**< \brief (PIO_DRIVER) Highest drive */ +#define PIO_DRIVER_LINE31 (0x1u << 31) /**< \brief (PIO_DRIVER) Drive of PIO Line 31 */ +#define PIO_DRIVER_LINE31_LOW_DRIVE (0x0u << 31) /**< \brief (PIO_DRIVER) Lowest drive */ +#define PIO_DRIVER_LINE31_HIGH_DRIVE (0x1u << 31) /**< \brief (PIO_DRIVER) Highest drive */ +/* -------- PIO_PCMR : (PIO Offset: 0x0150) Parallel Capture Mode Register -------- */ +#define PIO_PCMR_PCEN (0x1u << 0) /**< \brief (PIO_PCMR) Parallel Capture Mode Enable */ +#define PIO_PCMR_DSIZE_Pos 4 +#define PIO_PCMR_DSIZE_Msk (0x3u << PIO_PCMR_DSIZE_Pos) /**< \brief (PIO_PCMR) Parallel Capture Mode Data Size */ +#define PIO_PCMR_DSIZE(value) ((PIO_PCMR_DSIZE_Msk & ((value) << PIO_PCMR_DSIZE_Pos))) +#define PIO_PCMR_DSIZE_BYTE (0x0u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR is a byte (8-bit) */ +#define PIO_PCMR_DSIZE_HALFWORD (0x1u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR is a half-word (16-bit) */ +#define PIO_PCMR_DSIZE_WORD (0x2u << 4) /**< \brief (PIO_PCMR) The reception data in the PIO_PCRHR is a word (32-bit) */ +#define PIO_PCMR_ALWYS (0x1u << 9) /**< \brief (PIO_PCMR) Parallel Capture Mode Always Sampling */ +#define PIO_PCMR_HALFS (0x1u << 10) /**< \brief (PIO_PCMR) Parallel Capture Mode Half Sampling */ +#define PIO_PCMR_FRSTS (0x1u << 11) /**< \brief (PIO_PCMR) Parallel Capture Mode First Sample */ +/* -------- PIO_PCIER : (PIO Offset: 0x0154) Parallel Capture Interrupt Enable Register -------- */ +#define PIO_PCIER_DRDY (0x1u << 0) /**< \brief (PIO_PCIER) Parallel Capture Mode Data Ready Interrupt Enable */ +#define PIO_PCIER_OVRE (0x1u << 1) /**< \brief (PIO_PCIER) Parallel Capture Mode Overrun Error Interrupt Enable */ +#define PIO_PCIER_ENDRX (0x1u << 2) /**< \brief (PIO_PCIER) End of Reception Transfer Interrupt Enable */ +#define PIO_PCIER_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIER) Reception Buffer Full Interrupt Enable */ +/* -------- PIO_PCIDR : (PIO Offset: 0x0158) Parallel Capture Interrupt Disable Register -------- */ +#define PIO_PCIDR_DRDY (0x1u << 0) /**< \brief (PIO_PCIDR) Parallel Capture Mode Data Ready Interrupt Disable */ +#define PIO_PCIDR_OVRE (0x1u << 1) /**< \brief (PIO_PCIDR) Parallel Capture Mode Overrun Error Interrupt Disable */ +#define PIO_PCIDR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIDR) End of Reception Transfer Interrupt Disable */ +#define PIO_PCIDR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIDR) Reception Buffer Full Interrupt Disable */ +/* -------- PIO_PCIMR : (PIO Offset: 0x015C) Parallel Capture Interrupt Mask Register -------- */ +#define PIO_PCIMR_DRDY (0x1u << 0) /**< \brief (PIO_PCIMR) Parallel Capture Mode Data Ready Interrupt Mask */ +#define PIO_PCIMR_OVRE (0x1u << 1) /**< \brief (PIO_PCIMR) Parallel Capture Mode Overrun Error Interrupt Mask */ +#define PIO_PCIMR_ENDRX (0x1u << 2) /**< \brief (PIO_PCIMR) End of Reception Transfer Interrupt Mask */ +#define PIO_PCIMR_RXBUFF (0x1u << 3) /**< \brief (PIO_PCIMR) Reception Buffer Full Interrupt Mask */ +/* -------- PIO_PCISR : (PIO Offset: 0x0160) Parallel Capture Interrupt Status Register -------- */ +#define PIO_PCISR_DRDY (0x1u << 0) /**< \brief (PIO_PCISR) Parallel Capture Mode Data Ready */ +#define PIO_PCISR_OVRE (0x1u << 1) /**< \brief (PIO_PCISR) Parallel Capture Mode Overrun Error */ +/* -------- PIO_PCRHR : (PIO Offset: 0x0164) Parallel Capture Reception Holding Register -------- */ +#define PIO_PCRHR_RDATA_Pos 0 +#define PIO_PCRHR_RDATA_Msk (0xffffffffu << PIO_PCRHR_RDATA_Pos) /**< \brief (PIO_PCRHR) Parallel Capture Mode Reception Data */ + +/*@}*/ + + +#endif /* _SAME70_PIO_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h new file mode 100644 index 00000000..ea4579b8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h @@ -0,0 +1,774 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PMC_COMPONENT_ +#define _SAME70_PMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Power Management Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_PMC Power Management Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Pmc hardware registers */ +typedef struct { + __O uint32_t PMC_SCER; /**< \brief (Pmc Offset: 0x0000) System Clock Enable Register */ + __O uint32_t PMC_SCDR; /**< \brief (Pmc Offset: 0x0004) System Clock Disable Register */ + __I uint32_t PMC_SCSR; /**< \brief (Pmc Offset: 0x0008) System Clock Status Register */ + __I uint32_t Reserved1[1]; + __O uint32_t PMC_PCER0; /**< \brief (Pmc Offset: 0x0010) Peripheral Clock Enable Register 0 */ + __O uint32_t PMC_PCDR0; /**< \brief (Pmc Offset: 0x0014) Peripheral Clock Disable Register 0 */ + __I uint32_t PMC_PCSR0; /**< \brief (Pmc Offset: 0x0018) Peripheral Clock Status Register 0 */ + __IO uint32_t CKGR_UCKR; /**< \brief (Pmc Offset: 0x001C) UTMI Clock Register */ + __IO uint32_t CKGR_MOR; /**< \brief (Pmc Offset: 0x0020) Main Oscillator Register */ + __IO uint32_t CKGR_MCFR; /**< \brief (Pmc Offset: 0x0024) Main Clock Frequency Register */ + __IO uint32_t CKGR_PLLAR; /**< \brief (Pmc Offset: 0x0028) PLLA Register */ + __I uint32_t Reserved2[1]; + __IO uint32_t PMC_MCKR; /**< \brief (Pmc Offset: 0x0030) Master Clock Register */ + __I uint32_t Reserved3[1]; + __IO uint32_t PMC_USB; /**< \brief (Pmc Offset: 0x0038) USB Clock Register */ + __I uint32_t Reserved4[1]; + __IO uint32_t PMC_PCK[8]; /**< \brief (Pmc Offset: 0x40) Programmable Clock Register (chid = 0) */ + __O uint32_t PMC_IER; /**< \brief (Pmc Offset: 0x0060) Interrupt Enable Register */ + __O uint32_t PMC_IDR; /**< \brief (Pmc Offset: 0x0064) Interrupt Disable Register */ + __I uint32_t PMC_SR; /**< \brief (Pmc Offset: 0x0068) Status Register */ + __I uint32_t PMC_IMR; /**< \brief (Pmc Offset: 0x006C) Interrupt Mask Register */ + __IO uint32_t PMC_FSMR; /**< \brief (Pmc Offset: 0x0070) Fast Startup Mode Register */ + __IO uint32_t PMC_FSPR; /**< \brief (Pmc Offset: 0x0074) Fast Startup Polarity Register */ + __O uint32_t PMC_FOCR; /**< \brief (Pmc Offset: 0x0078) Fault Output Clear Register */ + __I uint32_t Reserved5[26]; + __IO uint32_t PMC_WPMR; /**< \brief (Pmc Offset: 0x00E4) Write Protection Mode Register */ + __I uint32_t PMC_WPSR; /**< \brief (Pmc Offset: 0x00E8) Write Protection Status Register */ + __I uint32_t Reserved6[4]; + __I uint32_t PMC_VERSION; /**< \brief (Pmc Offset: 0x00FC) Version Register */ + __O uint32_t PMC_PCER1; /**< \brief (Pmc Offset: 0x0100) Peripheral Clock Enable Register 1 */ + __O uint32_t PMC_PCDR1; /**< \brief (Pmc Offset: 0x0104) Peripheral Clock Disable Register 1 */ + __I uint32_t PMC_PCSR1; /**< \brief (Pmc Offset: 0x0108) Peripheral Clock Status Register 1 */ + __IO uint32_t PMC_PCR; /**< \brief (Pmc Offset: 0x010C) Peripheral Control Register */ + __IO uint32_t PMC_OCR; /**< \brief (Pmc Offset: 0x0110) Oscillator Calibration Register */ + __O uint32_t PMC_SLPWK_ER0; /**< \brief (Pmc Offset: 0x0114) SleepWalking Enable Register 0 */ + __O uint32_t PMC_SLPWK_DR0; /**< \brief (Pmc Offset: 0x0118) SleepWalking Disable Register 0 */ + __I uint32_t PMC_SLPWK_SR0; /**< \brief (Pmc Offset: 0x011C) SleepWalking Status Register 0 */ + __I uint32_t PMC_SLPWK_ASR0; /**< \brief (Pmc Offset: 0x0120) SleepWalking Activity Status Register 0 */ + __I uint32_t Reserved7[3]; + __IO uint32_t PMC_PMMR; /**< \brief (Pmc Offset: 0x0130) PLL Maximum Multiplier Value Register */ + __O uint32_t PMC_SLPWK_ER1; /**< \brief (Pmc Offset: 0x0134) SleepWalking Enable Register 1 */ + __O uint32_t PMC_SLPWK_DR1; /**< \brief (Pmc Offset: 0x0138) SleepWalking Disable Register 1 */ + __I uint32_t PMC_SLPWK_SR1; /**< \brief (Pmc Offset: 0x013C) SleepWalking Status Register 1 */ + __I uint32_t PMC_SLPWK_ASR1; /**< \brief (Pmc Offset: 0x0140) SleepWalking Activity Status Register 1 */ + __I uint32_t PMC_SLPWK_AIPR; /**< \brief (Pmc Offset: 0x0144) SleepWalking Activity In Progress Register */ + __I uint32_t Reserved8[4]; + __IO uint32_t PMC_APLLACR; /**< \brief (Pmc Offset: 0x0158) Audio PLL Analog Configuration Register */ + __IO uint32_t PMC_WMST; /**< \brief (Pmc Offset: 0x015C) Wait Mode Startup Time Register */ +} Pmc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PMC_SCER : (PMC Offset: 0x0000) System Clock Enable Register -------- */ +#define PMC_SCER_USBCLK (0x1u << 5) /**< \brief (PMC_SCER) Enable USB FS Clock */ +#define PMC_SCER_PCK0 (0x1u << 8) /**< \brief (PMC_SCER) Programmable Clock 0 Output Enable */ +#define PMC_SCER_PCK1 (0x1u << 9) /**< \brief (PMC_SCER) Programmable Clock 1 Output Enable */ +#define PMC_SCER_PCK2 (0x1u << 10) /**< \brief (PMC_SCER) Programmable Clock 2 Output Enable */ +#define PMC_SCER_PCK3 (0x1u << 11) /**< \brief (PMC_SCER) Programmable Clock 3 Output Enable */ +#define PMC_SCER_PCK4 (0x1u << 12) /**< \brief (PMC_SCER) Programmable Clock 4 Output Enable */ +#define PMC_SCER_PCK5 (0x1u << 13) /**< \brief (PMC_SCER) Programmable Clock 5 Output Enable */ +#define PMC_SCER_PCK6 (0x1u << 14) /**< \brief (PMC_SCER) Programmable Clock 6 Output Enable */ +/* -------- PMC_SCDR : (PMC Offset: 0x0004) System Clock Disable Register -------- */ +#define PMC_SCDR_USBCLK (0x1u << 5) /**< \brief (PMC_SCDR) Disable USB FS Clock */ +#define PMC_SCDR_PCK0 (0x1u << 8) /**< \brief (PMC_SCDR) Programmable Clock 0 Output Disable */ +#define PMC_SCDR_PCK1 (0x1u << 9) /**< \brief (PMC_SCDR) Programmable Clock 1 Output Disable */ +#define PMC_SCDR_PCK2 (0x1u << 10) /**< \brief (PMC_SCDR) Programmable Clock 2 Output Disable */ +#define PMC_SCDR_PCK3 (0x1u << 11) /**< \brief (PMC_SCDR) Programmable Clock 3 Output Disable */ +#define PMC_SCDR_PCK4 (0x1u << 12) /**< \brief (PMC_SCDR) Programmable Clock 4 Output Disable */ +#define PMC_SCDR_PCK5 (0x1u << 13) /**< \brief (PMC_SCDR) Programmable Clock 5 Output Disable */ +#define PMC_SCDR_PCK6 (0x1u << 14) /**< \brief (PMC_SCDR) Programmable Clock 6 Output Disable */ +/* -------- PMC_SCSR : (PMC Offset: 0x0008) System Clock Status Register -------- */ +#define PMC_SCSR_HCLKS (0x1u << 0) /**< \brief (PMC_SCSR) Processor Clock Status */ +#define PMC_SCSR_USBCLK (0x1u << 5) /**< \brief (PMC_SCSR) USB FS Clock Status */ +#define PMC_SCSR_PCK0 (0x1u << 8) /**< \brief (PMC_SCSR) Programmable Clock 0 Output Status */ +#define PMC_SCSR_PCK1 (0x1u << 9) /**< \brief (PMC_SCSR) Programmable Clock 1 Output Status */ +#define PMC_SCSR_PCK2 (0x1u << 10) /**< \brief (PMC_SCSR) Programmable Clock 2 Output Status */ +#define PMC_SCSR_PCK3 (0x1u << 11) /**< \brief (PMC_SCSR) Programmable Clock 3 Output Status */ +#define PMC_SCSR_PCK4 (0x1u << 12) /**< \brief (PMC_SCSR) Programmable Clock 4 Output Status */ +#define PMC_SCSR_PCK5 (0x1u << 13) /**< \brief (PMC_SCSR) Programmable Clock 5 Output Status */ +#define PMC_SCSR_PCK6 (0x1u << 14) /**< \brief (PMC_SCSR) Programmable Clock 6 Output Status */ +/* -------- PMC_PCER0 : (PMC Offset: 0x0010) Peripheral Clock Enable Register 0 -------- */ +#define PMC_PCER0_PID7 (0x1u << 7) /**< \brief (PMC_PCER0) Peripheral Clock 7 Enable */ +#define PMC_PCER0_PID8 (0x1u << 8) /**< \brief (PMC_PCER0) Peripheral Clock 8 Enable */ +#define PMC_PCER0_PID9 (0x1u << 9) /**< \brief (PMC_PCER0) Peripheral Clock 9 Enable */ +#define PMC_PCER0_PID10 (0x1u << 10) /**< \brief (PMC_PCER0) Peripheral Clock 10 Enable */ +#define PMC_PCER0_PID11 (0x1u << 11) /**< \brief (PMC_PCER0) Peripheral Clock 11 Enable */ +#define PMC_PCER0_PID12 (0x1u << 12) /**< \brief (PMC_PCER0) Peripheral Clock 12 Enable */ +#define PMC_PCER0_PID13 (0x1u << 13) /**< \brief (PMC_PCER0) Peripheral Clock 13 Enable */ +#define PMC_PCER0_PID14 (0x1u << 14) /**< \brief (PMC_PCER0) Peripheral Clock 14 Enable */ +#define PMC_PCER0_PID15 (0x1u << 15) /**< \brief (PMC_PCER0) Peripheral Clock 15 Enable */ +#define PMC_PCER0_PID16 (0x1u << 16) /**< \brief (PMC_PCER0) Peripheral Clock 16 Enable */ +#define PMC_PCER0_PID17 (0x1u << 17) /**< \brief (PMC_PCER0) Peripheral Clock 17 Enable */ +#define PMC_PCER0_PID18 (0x1u << 18) /**< \brief (PMC_PCER0) Peripheral Clock 18 Enable */ +#define PMC_PCER0_PID19 (0x1u << 19) /**< \brief (PMC_PCER0) Peripheral Clock 19 Enable */ +#define PMC_PCER0_PID20 (0x1u << 20) /**< \brief (PMC_PCER0) Peripheral Clock 20 Enable */ +#define PMC_PCER0_PID21 (0x1u << 21) /**< \brief (PMC_PCER0) Peripheral Clock 21 Enable */ +#define PMC_PCER0_PID22 (0x1u << 22) /**< \brief (PMC_PCER0) Peripheral Clock 22 Enable */ +#define PMC_PCER0_PID23 (0x1u << 23) /**< \brief (PMC_PCER0) Peripheral Clock 23 Enable */ +#define PMC_PCER0_PID24 (0x1u << 24) /**< \brief (PMC_PCER0) Peripheral Clock 24 Enable */ +#define PMC_PCER0_PID25 (0x1u << 25) /**< \brief (PMC_PCER0) Peripheral Clock 25 Enable */ +#define PMC_PCER0_PID26 (0x1u << 26) /**< \brief (PMC_PCER0) Peripheral Clock 26 Enable */ +#define PMC_PCER0_PID27 (0x1u << 27) /**< \brief (PMC_PCER0) Peripheral Clock 27 Enable */ +#define PMC_PCER0_PID28 (0x1u << 28) /**< \brief (PMC_PCER0) Peripheral Clock 28 Enable */ +#define PMC_PCER0_PID29 (0x1u << 29) /**< \brief (PMC_PCER0) Peripheral Clock 29 Enable */ +#define PMC_PCER0_PID30 (0x1u << 30) /**< \brief (PMC_PCER0) Peripheral Clock 30 Enable */ +#define PMC_PCER0_PID31 (0x1u << 31) /**< \brief (PMC_PCER0) Peripheral Clock 31 Enable */ +/* -------- PMC_PCDR0 : (PMC Offset: 0x0014) Peripheral Clock Disable Register 0 -------- */ +#define PMC_PCDR0_PID7 (0x1u << 7) /**< \brief (PMC_PCDR0) Peripheral Clock 7 Disable */ +#define PMC_PCDR0_PID8 (0x1u << 8) /**< \brief (PMC_PCDR0) Peripheral Clock 8 Disable */ +#define PMC_PCDR0_PID9 (0x1u << 9) /**< \brief (PMC_PCDR0) Peripheral Clock 9 Disable */ +#define PMC_PCDR0_PID10 (0x1u << 10) /**< \brief (PMC_PCDR0) Peripheral Clock 10 Disable */ +#define PMC_PCDR0_PID11 (0x1u << 11) /**< \brief (PMC_PCDR0) Peripheral Clock 11 Disable */ +#define PMC_PCDR0_PID12 (0x1u << 12) /**< \brief (PMC_PCDR0) Peripheral Clock 12 Disable */ +#define PMC_PCDR0_PID13 (0x1u << 13) /**< \brief (PMC_PCDR0) Peripheral Clock 13 Disable */ +#define PMC_PCDR0_PID14 (0x1u << 14) /**< \brief (PMC_PCDR0) Peripheral Clock 14 Disable */ +#define PMC_PCDR0_PID15 (0x1u << 15) /**< \brief (PMC_PCDR0) Peripheral Clock 15 Disable */ +#define PMC_PCDR0_PID16 (0x1u << 16) /**< \brief (PMC_PCDR0) Peripheral Clock 16 Disable */ +#define PMC_PCDR0_PID17 (0x1u << 17) /**< \brief (PMC_PCDR0) Peripheral Clock 17 Disable */ +#define PMC_PCDR0_PID18 (0x1u << 18) /**< \brief (PMC_PCDR0) Peripheral Clock 18 Disable */ +#define PMC_PCDR0_PID19 (0x1u << 19) /**< \brief (PMC_PCDR0) Peripheral Clock 19 Disable */ +#define PMC_PCDR0_PID20 (0x1u << 20) /**< \brief (PMC_PCDR0) Peripheral Clock 20 Disable */ +#define PMC_PCDR0_PID21 (0x1u << 21) /**< \brief (PMC_PCDR0) Peripheral Clock 21 Disable */ +#define PMC_PCDR0_PID22 (0x1u << 22) /**< \brief (PMC_PCDR0) Peripheral Clock 22 Disable */ +#define PMC_PCDR0_PID23 (0x1u << 23) /**< \brief (PMC_PCDR0) Peripheral Clock 23 Disable */ +#define PMC_PCDR0_PID24 (0x1u << 24) /**< \brief (PMC_PCDR0) Peripheral Clock 24 Disable */ +#define PMC_PCDR0_PID25 (0x1u << 25) /**< \brief (PMC_PCDR0) Peripheral Clock 25 Disable */ +#define PMC_PCDR0_PID26 (0x1u << 26) /**< \brief (PMC_PCDR0) Peripheral Clock 26 Disable */ +#define PMC_PCDR0_PID27 (0x1u << 27) /**< \brief (PMC_PCDR0) Peripheral Clock 27 Disable */ +#define PMC_PCDR0_PID28 (0x1u << 28) /**< \brief (PMC_PCDR0) Peripheral Clock 28 Disable */ +#define PMC_PCDR0_PID29 (0x1u << 29) /**< \brief (PMC_PCDR0) Peripheral Clock 29 Disable */ +#define PMC_PCDR0_PID30 (0x1u << 30) /**< \brief (PMC_PCDR0) Peripheral Clock 30 Disable */ +#define PMC_PCDR0_PID31 (0x1u << 31) /**< \brief (PMC_PCDR0) Peripheral Clock 31 Disable */ +/* -------- PMC_PCSR0 : (PMC Offset: 0x0018) Peripheral Clock Status Register 0 -------- */ +#define PMC_PCSR0_PID7 (0x1u << 7) /**< \brief (PMC_PCSR0) Peripheral Clock 7 Status */ +#define PMC_PCSR0_PID8 (0x1u << 8) /**< \brief (PMC_PCSR0) Peripheral Clock 8 Status */ +#define PMC_PCSR0_PID9 (0x1u << 9) /**< \brief (PMC_PCSR0) Peripheral Clock 9 Status */ +#define PMC_PCSR0_PID10 (0x1u << 10) /**< \brief (PMC_PCSR0) Peripheral Clock 10 Status */ +#define PMC_PCSR0_PID11 (0x1u << 11) /**< \brief (PMC_PCSR0) Peripheral Clock 11 Status */ +#define PMC_PCSR0_PID12 (0x1u << 12) /**< \brief (PMC_PCSR0) Peripheral Clock 12 Status */ +#define PMC_PCSR0_PID13 (0x1u << 13) /**< \brief (PMC_PCSR0) Peripheral Clock 13 Status */ +#define PMC_PCSR0_PID14 (0x1u << 14) /**< \brief (PMC_PCSR0) Peripheral Clock 14 Status */ +#define PMC_PCSR0_PID15 (0x1u << 15) /**< \brief (PMC_PCSR0) Peripheral Clock 15 Status */ +#define PMC_PCSR0_PID16 (0x1u << 16) /**< \brief (PMC_PCSR0) Peripheral Clock 16 Status */ +#define PMC_PCSR0_PID17 (0x1u << 17) /**< \brief (PMC_PCSR0) Peripheral Clock 17 Status */ +#define PMC_PCSR0_PID18 (0x1u << 18) /**< \brief (PMC_PCSR0) Peripheral Clock 18 Status */ +#define PMC_PCSR0_PID19 (0x1u << 19) /**< \brief (PMC_PCSR0) Peripheral Clock 19 Status */ +#define PMC_PCSR0_PID20 (0x1u << 20) /**< \brief (PMC_PCSR0) Peripheral Clock 20 Status */ +#define PMC_PCSR0_PID21 (0x1u << 21) /**< \brief (PMC_PCSR0) Peripheral Clock 21 Status */ +#define PMC_PCSR0_PID22 (0x1u << 22) /**< \brief (PMC_PCSR0) Peripheral Clock 22 Status */ +#define PMC_PCSR0_PID23 (0x1u << 23) /**< \brief (PMC_PCSR0) Peripheral Clock 23 Status */ +#define PMC_PCSR0_PID24 (0x1u << 24) /**< \brief (PMC_PCSR0) Peripheral Clock 24 Status */ +#define PMC_PCSR0_PID25 (0x1u << 25) /**< \brief (PMC_PCSR0) Peripheral Clock 25 Status */ +#define PMC_PCSR0_PID26 (0x1u << 26) /**< \brief (PMC_PCSR0) Peripheral Clock 26 Status */ +#define PMC_PCSR0_PID27 (0x1u << 27) /**< \brief (PMC_PCSR0) Peripheral Clock 27 Status */ +#define PMC_PCSR0_PID28 (0x1u << 28) /**< \brief (PMC_PCSR0) Peripheral Clock 28 Status */ +#define PMC_PCSR0_PID29 (0x1u << 29) /**< \brief (PMC_PCSR0) Peripheral Clock 29 Status */ +#define PMC_PCSR0_PID30 (0x1u << 30) /**< \brief (PMC_PCSR0) Peripheral Clock 30 Status */ +#define PMC_PCSR0_PID31 (0x1u << 31) /**< \brief (PMC_PCSR0) Peripheral Clock 31 Status */ +/* -------- CKGR_UCKR : (PMC Offset: 0x001C) UTMI Clock Register -------- */ +#define CKGR_UCKR_UPLLEN (0x1u << 16) /**< \brief (CKGR_UCKR) UTMI PLL Enable */ +#define CKGR_UCKR_UPLLCOUNT_Pos 20 +#define CKGR_UCKR_UPLLCOUNT_Msk (0xfu << CKGR_UCKR_UPLLCOUNT_Pos) /**< \brief (CKGR_UCKR) UTMI PLL Start-up Time */ +#define CKGR_UCKR_UPLLCOUNT(value) ((CKGR_UCKR_UPLLCOUNT_Msk & ((value) << CKGR_UCKR_UPLLCOUNT_Pos))) +/* -------- CKGR_MOR : (PMC Offset: 0x0020) Main Oscillator Register -------- */ +#define CKGR_MOR_MOSCXTEN (0x1u << 0) /**< \brief (CKGR_MOR) Main Crystal Oscillator Enable */ +#define CKGR_MOR_MOSCXTBY (0x1u << 1) /**< \brief (CKGR_MOR) Main Crystal Oscillator Bypass */ +#define CKGR_MOR_WAITMODE (0x1u << 2) /**< \brief (CKGR_MOR) Wait Mode Command (Write-only) */ +#define CKGR_MOR_MOSCRCEN (0x1u << 3) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Enable */ +#define CKGR_MOR_MOSCRCF_Pos 4 +#define CKGR_MOR_MOSCRCF_Msk (0x7u << CKGR_MOR_MOSCRCF_Pos) /**< \brief (CKGR_MOR) Main On-Chip RC Oscillator Frequency Selection */ +#define CKGR_MOR_MOSCRCF(value) ((CKGR_MOR_MOSCRCF_Msk & ((value) << CKGR_MOR_MOSCRCF_Pos))) +#define CKGR_MOR_MOSCRCF_4_MHz (0x0u << 4) /**< \brief (CKGR_MOR) Fast RC oscillator frequency is at 4 MHz (default) */ +#define CKGR_MOR_MOSCRCF_8_MHz (0x1u << 4) /**< \brief (CKGR_MOR) Fast RC oscillator frequency is at 8 MHz */ +#define CKGR_MOR_MOSCRCF_12_MHz (0x2u << 4) /**< \brief (CKGR_MOR) Fast RC oscillator frequency is at 12 MHz */ +#define CKGR_MOR_MOSCXTST_Pos 8 +#define CKGR_MOR_MOSCXTST_Msk (0xffu << CKGR_MOR_MOSCXTST_Pos) /**< \brief (CKGR_MOR) Main Crystal Oscillator Start-up Time */ +#define CKGR_MOR_MOSCXTST(value) ((CKGR_MOR_MOSCXTST_Msk & ((value) << CKGR_MOR_MOSCXTST_Pos))) +#define CKGR_MOR_KEY_Pos 16 +#define CKGR_MOR_KEY_Msk (0xffu << CKGR_MOR_KEY_Pos) /**< \brief (CKGR_MOR) Write Access Password */ +#define CKGR_MOR_KEY(value) ((CKGR_MOR_KEY_Msk & ((value) << CKGR_MOR_KEY_Pos))) +#define CKGR_MOR_KEY_PASSWD (0x37u << 16) /**< \brief (CKGR_MOR) Writing any other value in this field aborts the write operation.Always reads as 0. */ +#define CKGR_MOR_MOSCSEL (0x1u << 24) /**< \brief (CKGR_MOR) Main Oscillator Selection */ +#define CKGR_MOR_CFDEN (0x1u << 25) /**< \brief (CKGR_MOR) Clock Failure Detector Enable */ +#define CKGR_MOR_XT32KFME (0x1u << 26) /**< \brief (CKGR_MOR) Slow Crystal Oscillator Frequency Monitoring Enable */ +/* -------- CKGR_MCFR : (PMC Offset: 0x0024) Main Clock Frequency Register -------- */ +#define CKGR_MCFR_MAINF_Pos 0 +#define CKGR_MCFR_MAINF_Msk (0xffffu << CKGR_MCFR_MAINF_Pos) /**< \brief (CKGR_MCFR) Main Clock Frequency */ +#define CKGR_MCFR_MAINF(value) ((CKGR_MCFR_MAINF_Msk & ((value) << CKGR_MCFR_MAINF_Pos))) +#define CKGR_MCFR_MAINFRDY (0x1u << 16) /**< \brief (CKGR_MCFR) Main Clock Frequency Measure Ready */ +#define CKGR_MCFR_RCMEAS (0x1u << 20) /**< \brief (CKGR_MCFR) RC Oscillator Frequency Measure (write-only) */ +#define CKGR_MCFR_CCSS (0x1u << 24) /**< \brief (CKGR_MCFR) Counter Clock Source Selection */ +/* -------- CKGR_PLLAR : (PMC Offset: 0x0028) PLLA Register -------- */ +#define CKGR_PLLAR_DIVA_Pos 0 +#define CKGR_PLLAR_DIVA_Msk (0xffu << CKGR_PLLAR_DIVA_Pos) /**< \brief (CKGR_PLLAR) PLLA Front End Divider */ +#define CKGR_PLLAR_DIVA(value) ((CKGR_PLLAR_DIVA_Msk & ((value) << CKGR_PLLAR_DIVA_Pos))) +#define CKGR_PLLAR_DIVA_0 (0x0u << 0) /**< \brief (CKGR_PLLAR) Divider output is 0 and PLLA is disabled. */ +#define CKGR_PLLAR_DIVA_BYPASS (0x1u << 0) /**< \brief (CKGR_PLLAR) Divider is bypassed (divide by 1) and PLLA is enabled. */ +#define CKGR_PLLAR_PLLACOUNT_Pos 8 +#define CKGR_PLLAR_PLLACOUNT_Msk (0x3fu << CKGR_PLLAR_PLLACOUNT_Pos) /**< \brief (CKGR_PLLAR) PLLA Counter */ +#define CKGR_PLLAR_PLLACOUNT(value) ((CKGR_PLLAR_PLLACOUNT_Msk & ((value) << CKGR_PLLAR_PLLACOUNT_Pos))) +#define CKGR_PLLAR_MULA_Pos 16 +#define CKGR_PLLAR_MULA_Msk (0x7ffu << CKGR_PLLAR_MULA_Pos) /**< \brief (CKGR_PLLAR) PLLA Multiplier */ +#define CKGR_PLLAR_MULA(value) ((CKGR_PLLAR_MULA_Msk & ((value) << CKGR_PLLAR_MULA_Pos))) +#define CKGR_PLLAR_ONE (0x1u << 29) /**< \brief (CKGR_PLLAR) Must Be Set to 1 */ +/* -------- PMC_MCKR : (PMC Offset: 0x0030) Master Clock Register -------- */ +#define PMC_MCKR_CSS_Pos 0 +#define PMC_MCKR_CSS_Msk (0x3u << PMC_MCKR_CSS_Pos) /**< \brief (PMC_MCKR) Master Clock Source Selection */ +#define PMC_MCKR_CSS(value) ((PMC_MCKR_CSS_Msk & ((value) << PMC_MCKR_CSS_Pos))) +#define PMC_MCKR_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_MCKR) Slow Clock is selected */ +#define PMC_MCKR_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_MCKR) Main Clock is selected */ +#define PMC_MCKR_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_MCKR) PLLA Clock is selected */ +#define PMC_MCKR_CSS_UPLL_CLK (0x3u << 0) /**< \brief (PMC_MCKR) Divided UPLL Clock is selected */ +#define PMC_MCKR_PRES_Pos 4 +#define PMC_MCKR_PRES_Msk (0x7u << PMC_MCKR_PRES_Pos) /**< \brief (PMC_MCKR) Processor Clock Prescaler */ +#define PMC_MCKR_PRES(value) ((PMC_MCKR_PRES_Msk & ((value) << PMC_MCKR_PRES_Pos))) +#define PMC_MCKR_PRES_CLK_1 (0x0u << 4) /**< \brief (PMC_MCKR) Selected clock */ +#define PMC_MCKR_PRES_CLK_2 (0x1u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 2 */ +#define PMC_MCKR_PRES_CLK_4 (0x2u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 4 */ +#define PMC_MCKR_PRES_CLK_8 (0x3u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 8 */ +#define PMC_MCKR_PRES_CLK_16 (0x4u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 16 */ +#define PMC_MCKR_PRES_CLK_32 (0x5u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 32 */ +#define PMC_MCKR_PRES_CLK_64 (0x6u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 64 */ +#define PMC_MCKR_PRES_CLK_3 (0x7u << 4) /**< \brief (PMC_MCKR) Selected clock divided by 3 */ +#define PMC_MCKR_MDIV_Pos 8 +#define PMC_MCKR_MDIV_Msk (0x3u << PMC_MCKR_MDIV_Pos) /**< \brief (PMC_MCKR) Master Clock Division */ +#define PMC_MCKR_MDIV(value) ((PMC_MCKR_MDIV_Msk & ((value) << PMC_MCKR_MDIV_Pos))) +#define PMC_MCKR_MDIV_EQ_PCK (0x0u << 8) /**< \brief (PMC_MCKR) Master Clock is Prescaler Output Clock divided by 1. */ +#define PMC_MCKR_MDIV_PCK_DIV2 (0x1u << 8) /**< \brief (PMC_MCKR) Master Clock is Prescaler Output Clock divided by 2. */ +#define PMC_MCKR_MDIV_PCK_DIV4 (0x2u << 8) /**< \brief (PMC_MCKR) Master Clock is Prescaler Output Clock divided by 4. */ +#define PMC_MCKR_MDIV_PCK_DIV3 (0x3u << 8) /**< \brief (PMC_MCKR) Master Clock is Prescaler Output Clock divided by 3. */ +#define PMC_MCKR_UPLLDIV2 (0x1u << 13) /**< \brief (PMC_MCKR) UPLL Divisor by 2 */ +/* -------- PMC_USB : (PMC Offset: 0x0038) USB Clock Register -------- */ +#define PMC_USB_USBS (0x1u << 0) /**< \brief (PMC_USB) USB Input Clock Selection */ +#define PMC_USB_USBDIV_Pos 8 +#define PMC_USB_USBDIV_Msk (0xfu << PMC_USB_USBDIV_Pos) /**< \brief (PMC_USB) Divider for USB Clock */ +#define PMC_USB_USBDIV(value) ((PMC_USB_USBDIV_Msk & ((value) << PMC_USB_USBDIV_Pos))) +/* -------- PMC_PCK[8] : (PMC Offset: 0x40) Programmable Clock Register (chid = 0) -------- */ +#define PMC_PCK_CSS_Pos 0 +#define PMC_PCK_CSS_Msk (0x7u << PMC_PCK_CSS_Pos) /**< \brief (PMC_PCK[8]) Programmable Clock Source Selection */ +#define PMC_PCK_CSS(value) ((PMC_PCK_CSS_Msk & ((value) << PMC_PCK_CSS_Pos))) +#define PMC_PCK_CSS_SLOW_CLK (0x0u << 0) /**< \brief (PMC_PCK[8]) Slow Clock is selected */ +#define PMC_PCK_CSS_MAIN_CLK (0x1u << 0) /**< \brief (PMC_PCK[8]) Main Clock is selected */ +#define PMC_PCK_CSS_PLLA_CLK (0x2u << 0) /**< \brief (PMC_PCK[8]) PLLA Clock is selected */ +#define PMC_PCK_CSS_UPLL_CLK (0x3u << 0) /**< \brief (PMC_PCK[8]) Divided UPLL Clock is selected */ +#define PMC_PCK_CSS_MCK (0x4u << 0) /**< \brief (PMC_PCK[8]) Master Clock is selected */ +#define PMC_PCK_PRES_Pos 4 +#define PMC_PCK_PRES_Msk (0xffu << PMC_PCK_PRES_Pos) /**< \brief (PMC_PCK[8]) Programmable Clock Prescaler */ +#define PMC_PCK_PRES(value) ((PMC_PCK_PRES_Msk & ((value) << PMC_PCK_PRES_Pos))) +/* -------- PMC_IER : (PMC Offset: 0x0060) Interrupt Enable Register -------- */ +#define PMC_IER_MOSCXTS (0x1u << 0) /**< \brief (PMC_IER) Main Crystal Oscillator Status Interrupt Enable */ +#define PMC_IER_LOCKA (0x1u << 1) /**< \brief (PMC_IER) PLLA Lock Interrupt Enable */ +#define PMC_IER_MCKRDY (0x1u << 3) /**< \brief (PMC_IER) Master Clock Ready Interrupt Enable */ +#define PMC_IER_LOCKU (0x1u << 6) /**< \brief (PMC_IER) UTMI PLL Lock Interrupt Enable */ +#define PMC_IER_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IER) Programmable Clock Ready 0 Interrupt Enable */ +#define PMC_IER_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IER) Programmable Clock Ready 1 Interrupt Enable */ +#define PMC_IER_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IER) Programmable Clock Ready 2 Interrupt Enable */ +#define PMC_IER_PCKRDY3 (0x1u << 11) /**< \brief (PMC_IER) Programmable Clock Ready 3 Interrupt Enable */ +#define PMC_IER_PCKRDY4 (0x1u << 12) /**< \brief (PMC_IER) Programmable Clock Ready 4 Interrupt Enable */ +#define PMC_IER_PCKRDY5 (0x1u << 13) /**< \brief (PMC_IER) Programmable Clock Ready 5 Interrupt Enable */ +#define PMC_IER_PCKRDY6 (0x1u << 14) /**< \brief (PMC_IER) Programmable Clock Ready 6 Interrupt Enable */ +#define PMC_IER_MOSCSELS (0x1u << 16) /**< \brief (PMC_IER) Main Oscillator Selection Status Interrupt Enable */ +#define PMC_IER_MOSCRCS (0x1u << 17) /**< \brief (PMC_IER) Main On-Chip RC Status Interrupt Enable */ +#define PMC_IER_CFDEV (0x1u << 18) /**< \brief (PMC_IER) Clock Failure Detector Event Interrupt Enable */ +#define PMC_IER_XT32KERR (0x1u << 21) /**< \brief (PMC_IER) Slow Crystal Oscillator Error Interrupt Enable */ +/* -------- PMC_IDR : (PMC Offset: 0x0064) Interrupt Disable Register -------- */ +#define PMC_IDR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IDR) Main Crystal Oscillator Status Interrupt Disable */ +#define PMC_IDR_LOCKA (0x1u << 1) /**< \brief (PMC_IDR) PLLA Lock Interrupt Disable */ +#define PMC_IDR_MCKRDY (0x1u << 3) /**< \brief (PMC_IDR) Master Clock Ready Interrupt Disable */ +#define PMC_IDR_LOCKU (0x1u << 6) /**< \brief (PMC_IDR) UTMI PLL Lock Interrupt Disable */ +#define PMC_IDR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IDR) Programmable Clock Ready 0 Interrupt Disable */ +#define PMC_IDR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IDR) Programmable Clock Ready 1 Interrupt Disable */ +#define PMC_IDR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IDR) Programmable Clock Ready 2 Interrupt Disable */ +#define PMC_IDR_PCKRDY3 (0x1u << 11) /**< \brief (PMC_IDR) Programmable Clock Ready 3 Interrupt Disable */ +#define PMC_IDR_PCKRDY4 (0x1u << 12) /**< \brief (PMC_IDR) Programmable Clock Ready 4 Interrupt Disable */ +#define PMC_IDR_PCKRDY5 (0x1u << 13) /**< \brief (PMC_IDR) Programmable Clock Ready 5 Interrupt Disable */ +#define PMC_IDR_PCKRDY6 (0x1u << 14) /**< \brief (PMC_IDR) Programmable Clock Ready 6 Interrupt Disable */ +#define PMC_IDR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IDR) Main Oscillator Selection Status Interrupt Disable */ +#define PMC_IDR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IDR) Main On-Chip RC Status Interrupt Disable */ +#define PMC_IDR_CFDEV (0x1u << 18) /**< \brief (PMC_IDR) Clock Failure Detector Event Interrupt Disable */ +#define PMC_IDR_XT32KERR (0x1u << 21) /**< \brief (PMC_IDR) Slow Crystal Oscillator Error Interrupt Disable */ +/* -------- PMC_SR : (PMC Offset: 0x0068) Status Register -------- */ +#define PMC_SR_MOSCXTS (0x1u << 0) /**< \brief (PMC_SR) Main Crystal Oscillator Status */ +#define PMC_SR_LOCKA (0x1u << 1) /**< \brief (PMC_SR) PLLA Lock Status */ +#define PMC_SR_MCKRDY (0x1u << 3) /**< \brief (PMC_SR) Master Clock Status */ +#define PMC_SR_LOCKU (0x1u << 6) /**< \brief (PMC_SR) UTMI PLL Lock Status */ +#define PMC_SR_OSCSELS (0x1u << 7) /**< \brief (PMC_SR) Slow Clock Oscillator Selection */ +#define PMC_SR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY3 (0x1u << 11) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY4 (0x1u << 12) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY5 (0x1u << 13) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_PCKRDY6 (0x1u << 14) /**< \brief (PMC_SR) Programmable Clock Ready Status */ +#define PMC_SR_MOSCSELS (0x1u << 16) /**< \brief (PMC_SR) Main Oscillator Selection Status */ +#define PMC_SR_MOSCRCS (0x1u << 17) /**< \brief (PMC_SR) Main On-Chip RC Oscillator Status */ +#define PMC_SR_CFDEV (0x1u << 18) /**< \brief (PMC_SR) Clock Failure Detector Event */ +#define PMC_SR_CFDS (0x1u << 19) /**< \brief (PMC_SR) Clock Failure Detector Status */ +#define PMC_SR_FOS (0x1u << 20) /**< \brief (PMC_SR) Clock Failure Detector Fault Output Status */ +#define PMC_SR_XT32KERR (0x1u << 21) /**< \brief (PMC_SR) Slow Crystal Oscillator Error */ +/* -------- PMC_IMR : (PMC Offset: 0x006C) Interrupt Mask Register -------- */ +#define PMC_IMR_MOSCXTS (0x1u << 0) /**< \brief (PMC_IMR) Main Crystal Oscillator Status Interrupt Mask */ +#define PMC_IMR_LOCKA (0x1u << 1) /**< \brief (PMC_IMR) PLLA Lock Interrupt Mask */ +#define PMC_IMR_MCKRDY (0x1u << 3) /**< \brief (PMC_IMR) Master Clock Ready Interrupt Mask */ +#define PMC_IMR_LOCKU (0x1u << 6) /**< \brief (PMC_IMR) UTMI PLL Lock Interrupt Mask */ +#define PMC_IMR_PCKRDY0 (0x1u << 8) /**< \brief (PMC_IMR) Programmable Clock Ready 0 Interrupt Mask */ +#define PMC_IMR_PCKRDY1 (0x1u << 9) /**< \brief (PMC_IMR) Programmable Clock Ready 1 Interrupt Mask */ +#define PMC_IMR_PCKRDY2 (0x1u << 10) /**< \brief (PMC_IMR) Programmable Clock Ready 2 Interrupt Mask */ +#define PMC_IMR_PCKRDY3 (0x1u << 11) /**< \brief (PMC_IMR) Programmable Clock Ready 3 Interrupt Mask */ +#define PMC_IMR_PCKRDY4 (0x1u << 12) /**< \brief (PMC_IMR) Programmable Clock Ready 4 Interrupt Mask */ +#define PMC_IMR_PCKRDY5 (0x1u << 13) /**< \brief (PMC_IMR) Programmable Clock Ready 5 Interrupt Mask */ +#define PMC_IMR_PCKRDY6 (0x1u << 14) /**< \brief (PMC_IMR) Programmable Clock Ready 6 Interrupt Mask */ +#define PMC_IMR_MOSCSELS (0x1u << 16) /**< \brief (PMC_IMR) Main Oscillator Selection Status Interrupt Mask */ +#define PMC_IMR_MOSCRCS (0x1u << 17) /**< \brief (PMC_IMR) Main On-Chip RC Status Interrupt Mask */ +#define PMC_IMR_CFDEV (0x1u << 18) /**< \brief (PMC_IMR) Clock Failure Detector Event Interrupt Mask */ +#define PMC_IMR_XT32KERR (0x1u << 21) /**< \brief (PMC_IMR) Slow Crystal Oscillator Error Interrupt Mask */ +/* -------- PMC_FSMR : (PMC Offset: 0x0070) Fast Startup Mode Register -------- */ +#define PMC_FSMR_FSTT0 (0x1u << 0) /**< \brief (PMC_FSMR) Fast Startup Input Enable 0 */ +#define PMC_FSMR_FSTT1 (0x1u << 1) /**< \brief (PMC_FSMR) Fast Startup Input Enable 1 */ +#define PMC_FSMR_FSTT2 (0x1u << 2) /**< \brief (PMC_FSMR) Fast Startup Input Enable 2 */ +#define PMC_FSMR_FSTT3 (0x1u << 3) /**< \brief (PMC_FSMR) Fast Startup Input Enable 3 */ +#define PMC_FSMR_FSTT4 (0x1u << 4) /**< \brief (PMC_FSMR) Fast Startup Input Enable 4 */ +#define PMC_FSMR_FSTT5 (0x1u << 5) /**< \brief (PMC_FSMR) Fast Startup Input Enable 5 */ +#define PMC_FSMR_FSTT6 (0x1u << 6) /**< \brief (PMC_FSMR) Fast Startup Input Enable 6 */ +#define PMC_FSMR_FSTT7 (0x1u << 7) /**< \brief (PMC_FSMR) Fast Startup Input Enable 7 */ +#define PMC_FSMR_FSTT8 (0x1u << 8) /**< \brief (PMC_FSMR) Fast Startup Input Enable 8 */ +#define PMC_FSMR_FSTT9 (0x1u << 9) /**< \brief (PMC_FSMR) Fast Startup Input Enable 9 */ +#define PMC_FSMR_FSTT10 (0x1u << 10) /**< \brief (PMC_FSMR) Fast Startup Input Enable 10 */ +#define PMC_FSMR_FSTT11 (0x1u << 11) /**< \brief (PMC_FSMR) Fast Startup Input Enable 11 */ +#define PMC_FSMR_FSTT12 (0x1u << 12) /**< \brief (PMC_FSMR) Fast Startup Input Enable 12 */ +#define PMC_FSMR_FSTT13 (0x1u << 13) /**< \brief (PMC_FSMR) Fast Startup Input Enable 13 */ +#define PMC_FSMR_FSTT14 (0x1u << 14) /**< \brief (PMC_FSMR) Fast Startup Input Enable 14 */ +#define PMC_FSMR_FSTT15 (0x1u << 15) /**< \brief (PMC_FSMR) Fast Startup Input Enable 15 */ +#define PMC_FSMR_RTTAL (0x1u << 16) /**< \brief (PMC_FSMR) RTT Alarm Enable */ +#define PMC_FSMR_RTCAL (0x1u << 17) /**< \brief (PMC_FSMR) RTC Alarm Enable */ +#define PMC_FSMR_USBAL (0x1u << 18) /**< \brief (PMC_FSMR) USB Alarm Enable */ +#define PMC_FSMR_LPM (0x1u << 20) /**< \brief (PMC_FSMR) Low-power Mode */ +#define PMC_FSMR_FLPM_Pos 21 +#define PMC_FSMR_FLPM_Msk (0x3u << PMC_FSMR_FLPM_Pos) /**< \brief (PMC_FSMR) Flash Low-power Mode */ +#define PMC_FSMR_FLPM(value) ((PMC_FSMR_FLPM_Msk & ((value) << PMC_FSMR_FLPM_Pos))) +#define PMC_FSMR_FLPM_FLASH_STANDBY (0x0u << 21) /**< \brief (PMC_FSMR) Flash is in Standby Mode when system enters Wait Mode */ +#define PMC_FSMR_FLPM_FLASH_DEEP_POWERDOWN (0x1u << 21) /**< \brief (PMC_FSMR) Flash is in Deep-power-down mode when system enters Wait Mode */ +#define PMC_FSMR_FLPM_FLASH_IDLE (0x2u << 21) /**< \brief (PMC_FSMR) Idle mode */ +#define PMC_FSMR_FFLPM (0x1u << 23) /**< \brief (PMC_FSMR) Force Flash Low-power Mode */ +/* -------- PMC_FSPR : (PMC Offset: 0x0074) Fast Startup Polarity Register -------- */ +#define PMC_FSPR_FSTP0 (0x1u << 0) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 0 */ +#define PMC_FSPR_FSTP1 (0x1u << 1) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 1 */ +#define PMC_FSPR_FSTP2 (0x1u << 2) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 2 */ +#define PMC_FSPR_FSTP3 (0x1u << 3) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 3 */ +#define PMC_FSPR_FSTP4 (0x1u << 4) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 4 */ +#define PMC_FSPR_FSTP5 (0x1u << 5) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 5 */ +#define PMC_FSPR_FSTP6 (0x1u << 6) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 6 */ +#define PMC_FSPR_FSTP7 (0x1u << 7) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 7 */ +#define PMC_FSPR_FSTP8 (0x1u << 8) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 8 */ +#define PMC_FSPR_FSTP9 (0x1u << 9) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 9 */ +#define PMC_FSPR_FSTP10 (0x1u << 10) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 10 */ +#define PMC_FSPR_FSTP11 (0x1u << 11) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 11 */ +#define PMC_FSPR_FSTP12 (0x1u << 12) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 12 */ +#define PMC_FSPR_FSTP13 (0x1u << 13) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 13 */ +#define PMC_FSPR_FSTP14 (0x1u << 14) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 14 */ +#define PMC_FSPR_FSTP15 (0x1u << 15) /**< \brief (PMC_FSPR) Fast Startup Input Polarity 15 */ +/* -------- PMC_FOCR : (PMC Offset: 0x0078) Fault Output Clear Register -------- */ +#define PMC_FOCR_FOCLR (0x1u << 0) /**< \brief (PMC_FOCR) Fault Output Clear */ +/* -------- PMC_WPMR : (PMC Offset: 0x00E4) Write Protection Mode Register -------- */ +#define PMC_WPMR_WPEN (0x1u << 0) /**< \brief (PMC_WPMR) Write Protection Enable */ +#define PMC_WPMR_WPKEY_Pos 8 +#define PMC_WPMR_WPKEY_Msk (0xffffffu << PMC_WPMR_WPKEY_Pos) /**< \brief (PMC_WPMR) Write Protection Key */ +#define PMC_WPMR_WPKEY(value) ((PMC_WPMR_WPKEY_Msk & ((value) << PMC_WPMR_WPKEY_Pos))) +#define PMC_WPMR_WPKEY_PASSWD (0x504D43u << 8) /**< \brief (PMC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- PMC_WPSR : (PMC Offset: 0x00E8) Write Protection Status Register -------- */ +#define PMC_WPSR_WPVS (0x1u << 0) /**< \brief (PMC_WPSR) Write Protection Violation Status */ +#define PMC_WPSR_WPVSRC_Pos 8 +#define PMC_WPSR_WPVSRC_Msk (0xffffu << PMC_WPSR_WPVSRC_Pos) /**< \brief (PMC_WPSR) Write Protection Violation Source */ +/* -------- PMC_VERSION : (PMC Offset: 0x00FC) Version Register -------- */ +#define PMC_VERSION_VERSION_Pos 0 +#define PMC_VERSION_VERSION_Msk (0xfffu << PMC_VERSION_VERSION_Pos) /**< \brief (PMC_VERSION) Version of the Hardware Module */ +#define PMC_VERSION_MFN_Pos 16 +#define PMC_VERSION_MFN_Msk (0x7u << PMC_VERSION_MFN_Pos) /**< \brief (PMC_VERSION) Metal Fix Number */ +/* -------- PMC_PCER1 : (PMC Offset: 0x0100) Peripheral Clock Enable Register 1 -------- */ +#define PMC_PCER1_PID32 (0x1u << 0) /**< \brief (PMC_PCER1) Peripheral Clock 32 Enable */ +#define PMC_PCER1_PID33 (0x1u << 1) /**< \brief (PMC_PCER1) Peripheral Clock 33 Enable */ +#define PMC_PCER1_PID34 (0x1u << 2) /**< \brief (PMC_PCER1) Peripheral Clock 34 Enable */ +#define PMC_PCER1_PID35 (0x1u << 3) /**< \brief (PMC_PCER1) Peripheral Clock 35 Enable */ +#define PMC_PCER1_PID37 (0x1u << 5) /**< \brief (PMC_PCER1) Peripheral Clock 37 Enable */ +#define PMC_PCER1_PID39 (0x1u << 7) /**< \brief (PMC_PCER1) Peripheral Clock 39 Enable */ +#define PMC_PCER1_PID40 (0x1u << 8) /**< \brief (PMC_PCER1) Peripheral Clock 40 Enable */ +#define PMC_PCER1_PID41 (0x1u << 9) /**< \brief (PMC_PCER1) Peripheral Clock 41 Enable */ +#define PMC_PCER1_PID42 (0x1u << 10) /**< \brief (PMC_PCER1) Peripheral Clock 42 Enable */ +#define PMC_PCER1_PID43 (0x1u << 11) /**< \brief (PMC_PCER1) Peripheral Clock 43 Enable */ +#define PMC_PCER1_PID44 (0x1u << 12) /**< \brief (PMC_PCER1) Peripheral Clock 44 Enable */ +#define PMC_PCER1_PID45 (0x1u << 13) /**< \brief (PMC_PCER1) Peripheral Clock 45 Enable */ +#define PMC_PCER1_PID46 (0x1u << 14) /**< \brief (PMC_PCER1) Peripheral Clock 46 Enable */ +#define PMC_PCER1_PID47 (0x1u << 15) /**< \brief (PMC_PCER1) Peripheral Clock 47 Enable */ +#define PMC_PCER1_PID48 (0x1u << 16) /**< \brief (PMC_PCER1) Peripheral Clock 48 Enable */ +#define PMC_PCER1_PID49 (0x1u << 17) /**< \brief (PMC_PCER1) Peripheral Clock 49 Enable */ +#define PMC_PCER1_PID50 (0x1u << 18) /**< \brief (PMC_PCER1) Peripheral Clock 50 Enable */ +#define PMC_PCER1_PID51 (0x1u << 19) /**< \brief (PMC_PCER1) Peripheral Clock 51 Enable */ +#define PMC_PCER1_PID52 (0x1u << 20) /**< \brief (PMC_PCER1) Peripheral Clock 52 Enable */ +#define PMC_PCER1_PID53 (0x1u << 21) /**< \brief (PMC_PCER1) Peripheral Clock 53 Enable */ +#define PMC_PCER1_PID56 (0x1u << 24) /**< \brief (PMC_PCER1) Peripheral Clock 56 Enable */ +#define PMC_PCER1_PID57 (0x1u << 25) /**< \brief (PMC_PCER1) Peripheral Clock 57 Enable */ +#define PMC_PCER1_PID58 (0x1u << 26) /**< \brief (PMC_PCER1) Peripheral Clock 58 Enable */ +#define PMC_PCER1_PID59 (0x1u << 27) /**< \brief (PMC_PCER1) Peripheral Clock 59 Enable */ +#define PMC_PCER1_PID60 (0x1u << 28) /**< \brief (PMC_PCER1) Peripheral Clock 60 Enable */ +/* -------- PMC_PCDR1 : (PMC Offset: 0x0104) Peripheral Clock Disable Register 1 -------- */ +#define PMC_PCDR1_PID32 (0x1u << 0) /**< \brief (PMC_PCDR1) Peripheral Clock 32 Disable */ +#define PMC_PCDR1_PID33 (0x1u << 1) /**< \brief (PMC_PCDR1) Peripheral Clock 33 Disable */ +#define PMC_PCDR1_PID34 (0x1u << 2) /**< \brief (PMC_PCDR1) Peripheral Clock 34 Disable */ +#define PMC_PCDR1_PID35 (0x1u << 3) /**< \brief (PMC_PCDR1) Peripheral Clock 35 Disable */ +#define PMC_PCDR1_PID37 (0x1u << 5) /**< \brief (PMC_PCDR1) Peripheral Clock 37 Disable */ +#define PMC_PCDR1_PID39 (0x1u << 7) /**< \brief (PMC_PCDR1) Peripheral Clock 39 Disable */ +#define PMC_PCDR1_PID40 (0x1u << 8) /**< \brief (PMC_PCDR1) Peripheral Clock 40 Disable */ +#define PMC_PCDR1_PID41 (0x1u << 9) /**< \brief (PMC_PCDR1) Peripheral Clock 41 Disable */ +#define PMC_PCDR1_PID42 (0x1u << 10) /**< \brief (PMC_PCDR1) Peripheral Clock 42 Disable */ +#define PMC_PCDR1_PID43 (0x1u << 11) /**< \brief (PMC_PCDR1) Peripheral Clock 43 Disable */ +#define PMC_PCDR1_PID44 (0x1u << 12) /**< \brief (PMC_PCDR1) Peripheral Clock 44 Disable */ +#define PMC_PCDR1_PID45 (0x1u << 13) /**< \brief (PMC_PCDR1) Peripheral Clock 45 Disable */ +#define PMC_PCDR1_PID46 (0x1u << 14) /**< \brief (PMC_PCDR1) Peripheral Clock 46 Disable */ +#define PMC_PCDR1_PID47 (0x1u << 15) /**< \brief (PMC_PCDR1) Peripheral Clock 47 Disable */ +#define PMC_PCDR1_PID48 (0x1u << 16) /**< \brief (PMC_PCDR1) Peripheral Clock 48 Disable */ +#define PMC_PCDR1_PID49 (0x1u << 17) /**< \brief (PMC_PCDR1) Peripheral Clock 49 Disable */ +#define PMC_PCDR1_PID50 (0x1u << 18) /**< \brief (PMC_PCDR1) Peripheral Clock 50 Disable */ +#define PMC_PCDR1_PID51 (0x1u << 19) /**< \brief (PMC_PCDR1) Peripheral Clock 51 Disable */ +#define PMC_PCDR1_PID52 (0x1u << 20) /**< \brief (PMC_PCDR1) Peripheral Clock 52 Disable */ +#define PMC_PCDR1_PID53 (0x1u << 21) /**< \brief (PMC_PCDR1) Peripheral Clock 53 Disable */ +#define PMC_PCDR1_PID56 (0x1u << 24) /**< \brief (PMC_PCDR1) Peripheral Clock 56 Disable */ +#define PMC_PCDR1_PID57 (0x1u << 25) /**< \brief (PMC_PCDR1) Peripheral Clock 57 Disable */ +#define PMC_PCDR1_PID58 (0x1u << 26) /**< \brief (PMC_PCDR1) Peripheral Clock 58 Disable */ +#define PMC_PCDR1_PID59 (0x1u << 27) /**< \brief (PMC_PCDR1) Peripheral Clock 59 Disable */ +#define PMC_PCDR1_PID60 (0x1u << 28) /**< \brief (PMC_PCDR1) Peripheral Clock 60 Disable */ +/* -------- PMC_PCSR1 : (PMC Offset: 0x0108) Peripheral Clock Status Register 1 -------- */ +#define PMC_PCSR1_PID32 (0x1u << 0) /**< \brief (PMC_PCSR1) Peripheral Clock 32 Status */ +#define PMC_PCSR1_PID33 (0x1u << 1) /**< \brief (PMC_PCSR1) Peripheral Clock 33 Status */ +#define PMC_PCSR1_PID34 (0x1u << 2) /**< \brief (PMC_PCSR1) Peripheral Clock 34 Status */ +#define PMC_PCSR1_PID35 (0x1u << 3) /**< \brief (PMC_PCSR1) Peripheral Clock 35 Status */ +#define PMC_PCSR1_PID37 (0x1u << 5) /**< \brief (PMC_PCSR1) Peripheral Clock 37 Status */ +#define PMC_PCSR1_PID39 (0x1u << 7) /**< \brief (PMC_PCSR1) Peripheral Clock 39 Status */ +#define PMC_PCSR1_PID40 (0x1u << 8) /**< \brief (PMC_PCSR1) Peripheral Clock 40 Status */ +#define PMC_PCSR1_PID41 (0x1u << 9) /**< \brief (PMC_PCSR1) Peripheral Clock 41 Status */ +#define PMC_PCSR1_PID42 (0x1u << 10) /**< \brief (PMC_PCSR1) Peripheral Clock 42 Status */ +#define PMC_PCSR1_PID43 (0x1u << 11) /**< \brief (PMC_PCSR1) Peripheral Clock 43 Status */ +#define PMC_PCSR1_PID44 (0x1u << 12) /**< \brief (PMC_PCSR1) Peripheral Clock 44 Status */ +#define PMC_PCSR1_PID45 (0x1u << 13) /**< \brief (PMC_PCSR1) Peripheral Clock 45 Status */ +#define PMC_PCSR1_PID46 (0x1u << 14) /**< \brief (PMC_PCSR1) Peripheral Clock 46 Status */ +#define PMC_PCSR1_PID47 (0x1u << 15) /**< \brief (PMC_PCSR1) Peripheral Clock 47 Status */ +#define PMC_PCSR1_PID48 (0x1u << 16) /**< \brief (PMC_PCSR1) Peripheral Clock 48 Status */ +#define PMC_PCSR1_PID49 (0x1u << 17) /**< \brief (PMC_PCSR1) Peripheral Clock 49 Status */ +#define PMC_PCSR1_PID50 (0x1u << 18) /**< \brief (PMC_PCSR1) Peripheral Clock 50 Status */ +#define PMC_PCSR1_PID51 (0x1u << 19) /**< \brief (PMC_PCSR1) Peripheral Clock 51 Status */ +#define PMC_PCSR1_PID52 (0x1u << 20) /**< \brief (PMC_PCSR1) Peripheral Clock 52 Status */ +#define PMC_PCSR1_PID53 (0x1u << 21) /**< \brief (PMC_PCSR1) Peripheral Clock 53 Status */ +#define PMC_PCSR1_PID56 (0x1u << 24) /**< \brief (PMC_PCSR1) Peripheral Clock 56 Status */ +#define PMC_PCSR1_PID57 (0x1u << 25) /**< \brief (PMC_PCSR1) Peripheral Clock 57 Status */ +#define PMC_PCSR1_PID58 (0x1u << 26) /**< \brief (PMC_PCSR1) Peripheral Clock 58 Status */ +#define PMC_PCSR1_PID59 (0x1u << 27) /**< \brief (PMC_PCSR1) Peripheral Clock 59 Status */ +#define PMC_PCSR1_PID60 (0x1u << 28) /**< \brief (PMC_PCSR1) Peripheral Clock 60 Status */ +/* -------- PMC_PCR : (PMC Offset: 0x010C) Peripheral Control Register -------- */ +#define PMC_PCR_PID_Pos 0 +#define PMC_PCR_PID_Msk (0x7fu << PMC_PCR_PID_Pos) /**< \brief (PMC_PCR) Peripheral ID */ +#define PMC_PCR_PID(value) ((PMC_PCR_PID_Msk & ((value) << PMC_PCR_PID_Pos))) +#define PMC_PCR_GCLKCSS_Pos 8 +#define PMC_PCR_GCLKCSS_Msk (0x7u << PMC_PCR_GCLKCSS_Pos) /**< \brief (PMC_PCR) Generic Clock Source Selection */ +#define PMC_PCR_GCLKCSS(value) ((PMC_PCR_GCLKCSS_Msk & ((value) << PMC_PCR_GCLKCSS_Pos))) +#define PMC_PCR_GCLKCSS_SLOW_CLK (0x0u << 8) /**< \brief (PMC_PCR) Slow clock is selected */ +#define PMC_PCR_GCLKCSS_MAIN_CLK (0x1u << 8) /**< \brief (PMC_PCR) Main clock is selected */ +#define PMC_PCR_GCLKCSS_PLLA_CLK (0x2u << 8) /**< \brief (PMC_PCR) PLLACK is selected */ +#define PMC_PCR_GCLKCSS_UPLL_CLK (0x3u << 8) /**< \brief (PMC_PCR) UPLL Clock is selected */ +#define PMC_PCR_GCLKCSS_MCK_CLK (0x4u << 8) /**< \brief (PMC_PCR) Master Clock is selected */ +#define PMC_PCR_CMD (0x1u << 12) /**< \brief (PMC_PCR) Command */ +#define PMC_PCR_DIV_Pos 16 +#define PMC_PCR_DIV_Msk (0x3u << PMC_PCR_DIV_Pos) /**< \brief (PMC_PCR) Divisor Value */ +#define PMC_PCR_DIV(value) ((PMC_PCR_DIV_Msk & ((value) << PMC_PCR_DIV_Pos))) +#define PMC_PCR_DIV_PERIPH_DIV_MCK (0x0u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK */ +#define PMC_PCR_DIV_PERIPH_DIV2_MCK (0x1u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK/2 */ +#define PMC_PCR_DIV_PERIPH_DIV4_MCK (0x2u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK/4 */ +#define PMC_PCR_DIV_PERIPH_DIV8_MCK (0x3u << 16) /**< \brief (PMC_PCR) Peripheral clock is MCK/8 */ +#define PMC_PCR_GCLKDIV_Pos 20 +#define PMC_PCR_GCLKDIV_Msk (0xffu << PMC_PCR_GCLKDIV_Pos) /**< \brief (PMC_PCR) Generic Clock Division Ratio */ +#define PMC_PCR_GCLKDIV(value) ((PMC_PCR_GCLKDIV_Msk & ((value) << PMC_PCR_GCLKDIV_Pos))) +#define PMC_PCR_EN (0x1u << 28) /**< \brief (PMC_PCR) Enable */ +#define PMC_PCR_GCLKEN (0x1u << 29) /**< \brief (PMC_PCR) Generic Clock Enable */ +/* -------- PMC_OCR : (PMC Offset: 0x0110) Oscillator Calibration Register -------- */ +#define PMC_OCR_CAL4_Pos 0 +#define PMC_OCR_CAL4_Msk (0x7fu << PMC_OCR_CAL4_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 4 MHz */ +#define PMC_OCR_CAL4(value) ((PMC_OCR_CAL4_Msk & ((value) << PMC_OCR_CAL4_Pos))) +#define PMC_OCR_SEL4 (0x1u << 7) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 4 MHz */ +#define PMC_OCR_CAL8_Pos 8 +#define PMC_OCR_CAL8_Msk (0x7fu << PMC_OCR_CAL8_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 8 MHz */ +#define PMC_OCR_CAL8(value) ((PMC_OCR_CAL8_Msk & ((value) << PMC_OCR_CAL8_Pos))) +#define PMC_OCR_SEL8 (0x1u << 15) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 8 MHz */ +#define PMC_OCR_CAL12_Pos 16 +#define PMC_OCR_CAL12_Msk (0x7fu << PMC_OCR_CAL12_Pos) /**< \brief (PMC_OCR) RC Oscillator Calibration bits for 12 MHz */ +#define PMC_OCR_CAL12(value) ((PMC_OCR_CAL12_Msk & ((value) << PMC_OCR_CAL12_Pos))) +#define PMC_OCR_SEL12 (0x1u << 23) /**< \brief (PMC_OCR) Selection of RC Oscillator Calibration bits for 12 MHz */ +/* -------- PMC_SLPWK_ER0 : (PMC Offset: 0x0114) SleepWalking Enable Register 0 -------- */ +#define PMC_SLPWK_ER0_PID7 (0x1u << 7) /**< \brief (PMC_SLPWK_ER0) Peripheral 7 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID8 (0x1u << 8) /**< \brief (PMC_SLPWK_ER0) Peripheral 8 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID9 (0x1u << 9) /**< \brief (PMC_SLPWK_ER0) Peripheral 9 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID10 (0x1u << 10) /**< \brief (PMC_SLPWK_ER0) Peripheral 10 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID11 (0x1u << 11) /**< \brief (PMC_SLPWK_ER0) Peripheral 11 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID12 (0x1u << 12) /**< \brief (PMC_SLPWK_ER0) Peripheral 12 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID13 (0x1u << 13) /**< \brief (PMC_SLPWK_ER0) Peripheral 13 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID14 (0x1u << 14) /**< \brief (PMC_SLPWK_ER0) Peripheral 14 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID15 (0x1u << 15) /**< \brief (PMC_SLPWK_ER0) Peripheral 15 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID16 (0x1u << 16) /**< \brief (PMC_SLPWK_ER0) Peripheral 16 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID17 (0x1u << 17) /**< \brief (PMC_SLPWK_ER0) Peripheral 17 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID18 (0x1u << 18) /**< \brief (PMC_SLPWK_ER0) Peripheral 18 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID19 (0x1u << 19) /**< \brief (PMC_SLPWK_ER0) Peripheral 19 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID20 (0x1u << 20) /**< \brief (PMC_SLPWK_ER0) Peripheral 20 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID21 (0x1u << 21) /**< \brief (PMC_SLPWK_ER0) Peripheral 21 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID22 (0x1u << 22) /**< \brief (PMC_SLPWK_ER0) Peripheral 22 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID23 (0x1u << 23) /**< \brief (PMC_SLPWK_ER0) Peripheral 23 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID24 (0x1u << 24) /**< \brief (PMC_SLPWK_ER0) Peripheral 24 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID25 (0x1u << 25) /**< \brief (PMC_SLPWK_ER0) Peripheral 25 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID26 (0x1u << 26) /**< \brief (PMC_SLPWK_ER0) Peripheral 26 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID27 (0x1u << 27) /**< \brief (PMC_SLPWK_ER0) Peripheral 27 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID28 (0x1u << 28) /**< \brief (PMC_SLPWK_ER0) Peripheral 28 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID29 (0x1u << 29) /**< \brief (PMC_SLPWK_ER0) Peripheral 29 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID30 (0x1u << 30) /**< \brief (PMC_SLPWK_ER0) Peripheral 30 SleepWalking Enable */ +#define PMC_SLPWK_ER0_PID31 (0x1u << 31) /**< \brief (PMC_SLPWK_ER0) Peripheral 31 SleepWalking Enable */ +/* -------- PMC_SLPWK_DR0 : (PMC Offset: 0x0118) SleepWalking Disable Register 0 -------- */ +#define PMC_SLPWK_DR0_PID7 (0x1u << 7) /**< \brief (PMC_SLPWK_DR0) Peripheral 7 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID8 (0x1u << 8) /**< \brief (PMC_SLPWK_DR0) Peripheral 8 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID9 (0x1u << 9) /**< \brief (PMC_SLPWK_DR0) Peripheral 9 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID10 (0x1u << 10) /**< \brief (PMC_SLPWK_DR0) Peripheral 10 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID11 (0x1u << 11) /**< \brief (PMC_SLPWK_DR0) Peripheral 11 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID12 (0x1u << 12) /**< \brief (PMC_SLPWK_DR0) Peripheral 12 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID13 (0x1u << 13) /**< \brief (PMC_SLPWK_DR0) Peripheral 13 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID14 (0x1u << 14) /**< \brief (PMC_SLPWK_DR0) Peripheral 14 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID15 (0x1u << 15) /**< \brief (PMC_SLPWK_DR0) Peripheral 15 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID16 (0x1u << 16) /**< \brief (PMC_SLPWK_DR0) Peripheral 16 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID17 (0x1u << 17) /**< \brief (PMC_SLPWK_DR0) Peripheral 17 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID18 (0x1u << 18) /**< \brief (PMC_SLPWK_DR0) Peripheral 18 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID19 (0x1u << 19) /**< \brief (PMC_SLPWK_DR0) Peripheral 19 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID20 (0x1u << 20) /**< \brief (PMC_SLPWK_DR0) Peripheral 20 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID21 (0x1u << 21) /**< \brief (PMC_SLPWK_DR0) Peripheral 21 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID22 (0x1u << 22) /**< \brief (PMC_SLPWK_DR0) Peripheral 22 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID23 (0x1u << 23) /**< \brief (PMC_SLPWK_DR0) Peripheral 23 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID24 (0x1u << 24) /**< \brief (PMC_SLPWK_DR0) Peripheral 24 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID25 (0x1u << 25) /**< \brief (PMC_SLPWK_DR0) Peripheral 25 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID26 (0x1u << 26) /**< \brief (PMC_SLPWK_DR0) Peripheral 26 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID27 (0x1u << 27) /**< \brief (PMC_SLPWK_DR0) Peripheral 27 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID28 (0x1u << 28) /**< \brief (PMC_SLPWK_DR0) Peripheral 28 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID29 (0x1u << 29) /**< \brief (PMC_SLPWK_DR0) Peripheral 29 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID30 (0x1u << 30) /**< \brief (PMC_SLPWK_DR0) Peripheral 30 SleepWalking Disable */ +#define PMC_SLPWK_DR0_PID31 (0x1u << 31) /**< \brief (PMC_SLPWK_DR0) Peripheral 31 SleepWalking Disable */ +/* -------- PMC_SLPWK_SR0 : (PMC Offset: 0x011C) SleepWalking Status Register 0 -------- */ +#define PMC_SLPWK_SR0_PID7 (0x1u << 7) /**< \brief (PMC_SLPWK_SR0) Peripheral 7 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID8 (0x1u << 8) /**< \brief (PMC_SLPWK_SR0) Peripheral 8 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID9 (0x1u << 9) /**< \brief (PMC_SLPWK_SR0) Peripheral 9 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID10 (0x1u << 10) /**< \brief (PMC_SLPWK_SR0) Peripheral 10 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID11 (0x1u << 11) /**< \brief (PMC_SLPWK_SR0) Peripheral 11 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID12 (0x1u << 12) /**< \brief (PMC_SLPWK_SR0) Peripheral 12 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID13 (0x1u << 13) /**< \brief (PMC_SLPWK_SR0) Peripheral 13 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID14 (0x1u << 14) /**< \brief (PMC_SLPWK_SR0) Peripheral 14 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID15 (0x1u << 15) /**< \brief (PMC_SLPWK_SR0) Peripheral 15 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID16 (0x1u << 16) /**< \brief (PMC_SLPWK_SR0) Peripheral 16 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID17 (0x1u << 17) /**< \brief (PMC_SLPWK_SR0) Peripheral 17 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID18 (0x1u << 18) /**< \brief (PMC_SLPWK_SR0) Peripheral 18 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID19 (0x1u << 19) /**< \brief (PMC_SLPWK_SR0) Peripheral 19 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID20 (0x1u << 20) /**< \brief (PMC_SLPWK_SR0) Peripheral 20 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID21 (0x1u << 21) /**< \brief (PMC_SLPWK_SR0) Peripheral 21 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID22 (0x1u << 22) /**< \brief (PMC_SLPWK_SR0) Peripheral 22 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID23 (0x1u << 23) /**< \brief (PMC_SLPWK_SR0) Peripheral 23 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID24 (0x1u << 24) /**< \brief (PMC_SLPWK_SR0) Peripheral 24 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID25 (0x1u << 25) /**< \brief (PMC_SLPWK_SR0) Peripheral 25 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID26 (0x1u << 26) /**< \brief (PMC_SLPWK_SR0) Peripheral 26 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID27 (0x1u << 27) /**< \brief (PMC_SLPWK_SR0) Peripheral 27 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID28 (0x1u << 28) /**< \brief (PMC_SLPWK_SR0) Peripheral 28 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID29 (0x1u << 29) /**< \brief (PMC_SLPWK_SR0) Peripheral 29 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID30 (0x1u << 30) /**< \brief (PMC_SLPWK_SR0) Peripheral 30 SleepWalking Status */ +#define PMC_SLPWK_SR0_PID31 (0x1u << 31) /**< \brief (PMC_SLPWK_SR0) Peripheral 31 SleepWalking Status */ +/* -------- PMC_SLPWK_ASR0 : (PMC Offset: 0x0120) SleepWalking Activity Status Register 0 -------- */ +#define PMC_SLPWK_ASR0_PID7 (0x1u << 7) /**< \brief (PMC_SLPWK_ASR0) Peripheral 7 Activity Status */ +#define PMC_SLPWK_ASR0_PID8 (0x1u << 8) /**< \brief (PMC_SLPWK_ASR0) Peripheral 8 Activity Status */ +#define PMC_SLPWK_ASR0_PID9 (0x1u << 9) /**< \brief (PMC_SLPWK_ASR0) Peripheral 9 Activity Status */ +#define PMC_SLPWK_ASR0_PID10 (0x1u << 10) /**< \brief (PMC_SLPWK_ASR0) Peripheral 10 Activity Status */ +#define PMC_SLPWK_ASR0_PID11 (0x1u << 11) /**< \brief (PMC_SLPWK_ASR0) Peripheral 11 Activity Status */ +#define PMC_SLPWK_ASR0_PID12 (0x1u << 12) /**< \brief (PMC_SLPWK_ASR0) Peripheral 12 Activity Status */ +#define PMC_SLPWK_ASR0_PID13 (0x1u << 13) /**< \brief (PMC_SLPWK_ASR0) Peripheral 13 Activity Status */ +#define PMC_SLPWK_ASR0_PID14 (0x1u << 14) /**< \brief (PMC_SLPWK_ASR0) Peripheral 14 Activity Status */ +#define PMC_SLPWK_ASR0_PID15 (0x1u << 15) /**< \brief (PMC_SLPWK_ASR0) Peripheral 15 Activity Status */ +#define PMC_SLPWK_ASR0_PID16 (0x1u << 16) /**< \brief (PMC_SLPWK_ASR0) Peripheral 16 Activity Status */ +#define PMC_SLPWK_ASR0_PID17 (0x1u << 17) /**< \brief (PMC_SLPWK_ASR0) Peripheral 17 Activity Status */ +#define PMC_SLPWK_ASR0_PID18 (0x1u << 18) /**< \brief (PMC_SLPWK_ASR0) Peripheral 18 Activity Status */ +#define PMC_SLPWK_ASR0_PID19 (0x1u << 19) /**< \brief (PMC_SLPWK_ASR0) Peripheral 19 Activity Status */ +#define PMC_SLPWK_ASR0_PID20 (0x1u << 20) /**< \brief (PMC_SLPWK_ASR0) Peripheral 20 Activity Status */ +#define PMC_SLPWK_ASR0_PID21 (0x1u << 21) /**< \brief (PMC_SLPWK_ASR0) Peripheral 21 Activity Status */ +#define PMC_SLPWK_ASR0_PID22 (0x1u << 22) /**< \brief (PMC_SLPWK_ASR0) Peripheral 22 Activity Status */ +#define PMC_SLPWK_ASR0_PID23 (0x1u << 23) /**< \brief (PMC_SLPWK_ASR0) Peripheral 23 Activity Status */ +#define PMC_SLPWK_ASR0_PID24 (0x1u << 24) /**< \brief (PMC_SLPWK_ASR0) Peripheral 24 Activity Status */ +#define PMC_SLPWK_ASR0_PID25 (0x1u << 25) /**< \brief (PMC_SLPWK_ASR0) Peripheral 25 Activity Status */ +#define PMC_SLPWK_ASR0_PID26 (0x1u << 26) /**< \brief (PMC_SLPWK_ASR0) Peripheral 26 Activity Status */ +#define PMC_SLPWK_ASR0_PID27 (0x1u << 27) /**< \brief (PMC_SLPWK_ASR0) Peripheral 27 Activity Status */ +#define PMC_SLPWK_ASR0_PID28 (0x1u << 28) /**< \brief (PMC_SLPWK_ASR0) Peripheral 28 Activity Status */ +#define PMC_SLPWK_ASR0_PID29 (0x1u << 29) /**< \brief (PMC_SLPWK_ASR0) Peripheral 29 Activity Status */ +#define PMC_SLPWK_ASR0_PID30 (0x1u << 30) /**< \brief (PMC_SLPWK_ASR0) Peripheral 30 Activity Status */ +#define PMC_SLPWK_ASR0_PID31 (0x1u << 31) /**< \brief (PMC_SLPWK_ASR0) Peripheral 31 Activity Status */ +/* -------- PMC_PMMR : (PMC Offset: 0x0130) PLL Maximum Multiplier Value Register -------- */ +#define PMC_PMMR_PLLA_MMAX_Pos 0 +#define PMC_PMMR_PLLA_MMAX_Msk (0x7ffu << PMC_PMMR_PLLA_MMAX_Pos) /**< \brief (PMC_PMMR) PLLA Maximum Allowed Multiplier Value */ +#define PMC_PMMR_PLLA_MMAX(value) ((PMC_PMMR_PLLA_MMAX_Msk & ((value) << PMC_PMMR_PLLA_MMAX_Pos))) +/* -------- PMC_SLPWK_ER1 : (PMC Offset: 0x0134) SleepWalking Enable Register 1 -------- */ +#define PMC_SLPWK_ER1_PID32 (0x1u << 0) /**< \brief (PMC_SLPWK_ER1) Peripheral 32 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID33 (0x1u << 1) /**< \brief (PMC_SLPWK_ER1) Peripheral 33 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID34 (0x1u << 2) /**< \brief (PMC_SLPWK_ER1) Peripheral 34 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID35 (0x1u << 3) /**< \brief (PMC_SLPWK_ER1) Peripheral 35 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID37 (0x1u << 5) /**< \brief (PMC_SLPWK_ER1) Peripheral 37 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID39 (0x1u << 7) /**< \brief (PMC_SLPWK_ER1) Peripheral 39 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID40 (0x1u << 8) /**< \brief (PMC_SLPWK_ER1) Peripheral 40 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID41 (0x1u << 9) /**< \brief (PMC_SLPWK_ER1) Peripheral 41 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID42 (0x1u << 10) /**< \brief (PMC_SLPWK_ER1) Peripheral 42 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID43 (0x1u << 11) /**< \brief (PMC_SLPWK_ER1) Peripheral 43 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID44 (0x1u << 12) /**< \brief (PMC_SLPWK_ER1) Peripheral 44 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID45 (0x1u << 13) /**< \brief (PMC_SLPWK_ER1) Peripheral 45 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID46 (0x1u << 14) /**< \brief (PMC_SLPWK_ER1) Peripheral 46 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID47 (0x1u << 15) /**< \brief (PMC_SLPWK_ER1) Peripheral 47 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID48 (0x1u << 16) /**< \brief (PMC_SLPWK_ER1) Peripheral 48 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID49 (0x1u << 17) /**< \brief (PMC_SLPWK_ER1) Peripheral 49 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID50 (0x1u << 18) /**< \brief (PMC_SLPWK_ER1) Peripheral 50 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID51 (0x1u << 19) /**< \brief (PMC_SLPWK_ER1) Peripheral 51 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID52 (0x1u << 20) /**< \brief (PMC_SLPWK_ER1) Peripheral 52 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID53 (0x1u << 21) /**< \brief (PMC_SLPWK_ER1) Peripheral 53 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID56 (0x1u << 24) /**< \brief (PMC_SLPWK_ER1) Peripheral 56 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID57 (0x1u << 25) /**< \brief (PMC_SLPWK_ER1) Peripheral 57 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID58 (0x1u << 26) /**< \brief (PMC_SLPWK_ER1) Peripheral 58 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID59 (0x1u << 27) /**< \brief (PMC_SLPWK_ER1) Peripheral 59 SleepWalking Enable */ +#define PMC_SLPWK_ER1_PID60 (0x1u << 28) /**< \brief (PMC_SLPWK_ER1) Peripheral 60 SleepWalking Enable */ +/* -------- PMC_SLPWK_DR1 : (PMC Offset: 0x0138) SleepWalking Disable Register 1 -------- */ +#define PMC_SLPWK_DR1_PID32 (0x1u << 0) /**< \brief (PMC_SLPWK_DR1) Peripheral 32 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID33 (0x1u << 1) /**< \brief (PMC_SLPWK_DR1) Peripheral 33 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID34 (0x1u << 2) /**< \brief (PMC_SLPWK_DR1) Peripheral 34 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID35 (0x1u << 3) /**< \brief (PMC_SLPWK_DR1) Peripheral 35 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID37 (0x1u << 5) /**< \brief (PMC_SLPWK_DR1) Peripheral 37 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID39 (0x1u << 7) /**< \brief (PMC_SLPWK_DR1) Peripheral 39 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID40 (0x1u << 8) /**< \brief (PMC_SLPWK_DR1) Peripheral 40 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID41 (0x1u << 9) /**< \brief (PMC_SLPWK_DR1) Peripheral 41 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID42 (0x1u << 10) /**< \brief (PMC_SLPWK_DR1) Peripheral 42 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID43 (0x1u << 11) /**< \brief (PMC_SLPWK_DR1) Peripheral 43 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID44 (0x1u << 12) /**< \brief (PMC_SLPWK_DR1) Peripheral 44 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID45 (0x1u << 13) /**< \brief (PMC_SLPWK_DR1) Peripheral 45 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID46 (0x1u << 14) /**< \brief (PMC_SLPWK_DR1) Peripheral 46 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID47 (0x1u << 15) /**< \brief (PMC_SLPWK_DR1) Peripheral 47 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID48 (0x1u << 16) /**< \brief (PMC_SLPWK_DR1) Peripheral 48 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID49 (0x1u << 17) /**< \brief (PMC_SLPWK_DR1) Peripheral 49 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID50 (0x1u << 18) /**< \brief (PMC_SLPWK_DR1) Peripheral 50 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID51 (0x1u << 19) /**< \brief (PMC_SLPWK_DR1) Peripheral 51 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID52 (0x1u << 20) /**< \brief (PMC_SLPWK_DR1) Peripheral 52 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID53 (0x1u << 21) /**< \brief (PMC_SLPWK_DR1) Peripheral 53 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID56 (0x1u << 24) /**< \brief (PMC_SLPWK_DR1) Peripheral 56 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID57 (0x1u << 25) /**< \brief (PMC_SLPWK_DR1) Peripheral 57 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID58 (0x1u << 26) /**< \brief (PMC_SLPWK_DR1) Peripheral 58 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID59 (0x1u << 27) /**< \brief (PMC_SLPWK_DR1) Peripheral 59 SleepWalking Disable */ +#define PMC_SLPWK_DR1_PID60 (0x1u << 28) /**< \brief (PMC_SLPWK_DR1) Peripheral 60 SleepWalking Disable */ +/* -------- PMC_SLPWK_SR1 : (PMC Offset: 0x013C) SleepWalking Status Register 1 -------- */ +#define PMC_SLPWK_SR1_PID32 (0x1u << 0) /**< \brief (PMC_SLPWK_SR1) Peripheral 32 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID33 (0x1u << 1) /**< \brief (PMC_SLPWK_SR1) Peripheral 33 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID34 (0x1u << 2) /**< \brief (PMC_SLPWK_SR1) Peripheral 34 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID35 (0x1u << 3) /**< \brief (PMC_SLPWK_SR1) Peripheral 35 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID37 (0x1u << 5) /**< \brief (PMC_SLPWK_SR1) Peripheral 37 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID39 (0x1u << 7) /**< \brief (PMC_SLPWK_SR1) Peripheral 39 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID40 (0x1u << 8) /**< \brief (PMC_SLPWK_SR1) Peripheral 40 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID41 (0x1u << 9) /**< \brief (PMC_SLPWK_SR1) Peripheral 41 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID42 (0x1u << 10) /**< \brief (PMC_SLPWK_SR1) Peripheral 42 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID43 (0x1u << 11) /**< \brief (PMC_SLPWK_SR1) Peripheral 43 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID44 (0x1u << 12) /**< \brief (PMC_SLPWK_SR1) Peripheral 44 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID45 (0x1u << 13) /**< \brief (PMC_SLPWK_SR1) Peripheral 45 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID46 (0x1u << 14) /**< \brief (PMC_SLPWK_SR1) Peripheral 46 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID47 (0x1u << 15) /**< \brief (PMC_SLPWK_SR1) Peripheral 47 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID48 (0x1u << 16) /**< \brief (PMC_SLPWK_SR1) Peripheral 48 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID49 (0x1u << 17) /**< \brief (PMC_SLPWK_SR1) Peripheral 49 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID50 (0x1u << 18) /**< \brief (PMC_SLPWK_SR1) Peripheral 50 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID51 (0x1u << 19) /**< \brief (PMC_SLPWK_SR1) Peripheral 51 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID52 (0x1u << 20) /**< \brief (PMC_SLPWK_SR1) Peripheral 52 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID53 (0x1u << 21) /**< \brief (PMC_SLPWK_SR1) Peripheral 53 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID56 (0x1u << 24) /**< \brief (PMC_SLPWK_SR1) Peripheral 56 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID57 (0x1u << 25) /**< \brief (PMC_SLPWK_SR1) Peripheral 57 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID58 (0x1u << 26) /**< \brief (PMC_SLPWK_SR1) Peripheral 58 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID59 (0x1u << 27) /**< \brief (PMC_SLPWK_SR1) Peripheral 59 SleepWalking Status */ +#define PMC_SLPWK_SR1_PID60 (0x1u << 28) /**< \brief (PMC_SLPWK_SR1) Peripheral 60 SleepWalking Status */ +/* -------- PMC_SLPWK_ASR1 : (PMC Offset: 0x0140) SleepWalking Activity Status Register 1 -------- */ +#define PMC_SLPWK_ASR1_PID32 (0x1u << 0) /**< \brief (PMC_SLPWK_ASR1) Peripheral 32 Activity Status */ +#define PMC_SLPWK_ASR1_PID33 (0x1u << 1) /**< \brief (PMC_SLPWK_ASR1) Peripheral 33 Activity Status */ +#define PMC_SLPWK_ASR1_PID34 (0x1u << 2) /**< \brief (PMC_SLPWK_ASR1) Peripheral 34 Activity Status */ +#define PMC_SLPWK_ASR1_PID35 (0x1u << 3) /**< \brief (PMC_SLPWK_ASR1) Peripheral 35 Activity Status */ +#define PMC_SLPWK_ASR1_PID37 (0x1u << 5) /**< \brief (PMC_SLPWK_ASR1) Peripheral 37 Activity Status */ +#define PMC_SLPWK_ASR1_PID39 (0x1u << 7) /**< \brief (PMC_SLPWK_ASR1) Peripheral 39 Activity Status */ +#define PMC_SLPWK_ASR1_PID40 (0x1u << 8) /**< \brief (PMC_SLPWK_ASR1) Peripheral 40 Activity Status */ +#define PMC_SLPWK_ASR1_PID41 (0x1u << 9) /**< \brief (PMC_SLPWK_ASR1) Peripheral 41 Activity Status */ +#define PMC_SLPWK_ASR1_PID42 (0x1u << 10) /**< \brief (PMC_SLPWK_ASR1) Peripheral 42 Activity Status */ +#define PMC_SLPWK_ASR1_PID43 (0x1u << 11) /**< \brief (PMC_SLPWK_ASR1) Peripheral 43 Activity Status */ +#define PMC_SLPWK_ASR1_PID44 (0x1u << 12) /**< \brief (PMC_SLPWK_ASR1) Peripheral 44 Activity Status */ +#define PMC_SLPWK_ASR1_PID45 (0x1u << 13) /**< \brief (PMC_SLPWK_ASR1) Peripheral 45 Activity Status */ +#define PMC_SLPWK_ASR1_PID46 (0x1u << 14) /**< \brief (PMC_SLPWK_ASR1) Peripheral 46 Activity Status */ +#define PMC_SLPWK_ASR1_PID47 (0x1u << 15) /**< \brief (PMC_SLPWK_ASR1) Peripheral 47 Activity Status */ +#define PMC_SLPWK_ASR1_PID48 (0x1u << 16) /**< \brief (PMC_SLPWK_ASR1) Peripheral 48 Activity Status */ +#define PMC_SLPWK_ASR1_PID49 (0x1u << 17) /**< \brief (PMC_SLPWK_ASR1) Peripheral 49 Activity Status */ +#define PMC_SLPWK_ASR1_PID50 (0x1u << 18) /**< \brief (PMC_SLPWK_ASR1) Peripheral 50 Activity Status */ +#define PMC_SLPWK_ASR1_PID51 (0x1u << 19) /**< \brief (PMC_SLPWK_ASR1) Peripheral 51 Activity Status */ +#define PMC_SLPWK_ASR1_PID52 (0x1u << 20) /**< \brief (PMC_SLPWK_ASR1) Peripheral 52 Activity Status */ +#define PMC_SLPWK_ASR1_PID53 (0x1u << 21) /**< \brief (PMC_SLPWK_ASR1) Peripheral 53 Activity Status */ +#define PMC_SLPWK_ASR1_PID56 (0x1u << 24) /**< \brief (PMC_SLPWK_ASR1) Peripheral 56 Activity Status */ +#define PMC_SLPWK_ASR1_PID57 (0x1u << 25) /**< \brief (PMC_SLPWK_ASR1) Peripheral 57 Activity Status */ +#define PMC_SLPWK_ASR1_PID58 (0x1u << 26) /**< \brief (PMC_SLPWK_ASR1) Peripheral 58 Activity Status */ +#define PMC_SLPWK_ASR1_PID59 (0x1u << 27) /**< \brief (PMC_SLPWK_ASR1) Peripheral 59 Activity Status */ +#define PMC_SLPWK_ASR1_PID60 (0x1u << 28) /**< \brief (PMC_SLPWK_ASR1) Peripheral 60 Activity Status */ +/* -------- PMC_SLPWK_AIPR : (PMC Offset: 0x0144) SleepWalking Activity In Progress Register -------- */ +#define PMC_SLPWK_AIPR_AIP (0x1u << 0) /**< \brief (PMC_SLPWK_AIPR) Activity In Progress */ +/* -------- PMC_APLLACR : (PMC Offset: 0x0158) Audio PLL Analog Configuration Register -------- */ +#define PMC_APLLACR_DCOFLTSEL_Pos 0 +#define PMC_APLLACR_DCOFLTSEL_Msk (0xfu << PMC_APLLACR_DCOFLTSEL_Pos) /**< \brief (PMC_APLLACR) DCO Filter Selection */ +#define PMC_APLLACR_DCOFLTSEL(value) ((PMC_APLLACR_DCOFLTSEL_Msk & ((value) << PMC_APLLACR_DCOFLTSEL_Pos))) +#define PMC_APLLACR_FLTSEL_Pos 4 +#define PMC_APLLACR_FLTSEL_Msk (0xfu << PMC_APLLACR_FLTSEL_Pos) /**< \brief (PMC_APLLACR) PLL Filter Selection */ +#define PMC_APLLACR_FLTSEL(value) ((PMC_APLLACR_FLTSEL_Msk & ((value) << PMC_APLLACR_FLTSEL_Pos))) +#define PMC_APLLACR_BIAS_Pos 8 +#define PMC_APLLACR_BIAS_Msk (0x3u << PMC_APLLACR_BIAS_Pos) /**< \brief (PMC_APLLACR) Bias Voltage Selection */ +#define PMC_APLLACR_BIAS(value) ((PMC_APLLACR_BIAS_Msk & ((value) << PMC_APLLACR_BIAS_Pos))) +/* -------- PMC_WMST : (PMC Offset: 0x015C) Wait Mode Startup Time Register -------- */ +#define PMC_WMST_WMST_Pos 0 +#define PMC_WMST_WMST_Msk (0xffu << PMC_WMST_WMST_Pos) /**< \brief (PMC_WMST) Wait Mode Startup Time */ +#define PMC_WMST_WMST(value) ((PMC_WMST_WMST_Msk & ((value) << PMC_WMST_WMST_Pos))) +#define PMC_WMST_KEY_Pos 24 +#define PMC_WMST_KEY_Msk (0xffu << PMC_WMST_KEY_Pos) /**< \brief (PMC_WMST) Write Access Password */ +#define PMC_WMST_KEY(value) ((PMC_WMST_KEY_Msk & ((value) << PMC_WMST_KEY_Pos))) +#define PMC_WMST_KEY_PASSWD (0x5Au << 24) /**< \brief (PMC_WMST) Writing any other value in this field aborts the write operation.Always reads as 0. */ + +/*@}*/ + + +#endif /* _SAME70_PMC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h new file mode 100644 index 00000000..f9dbdcd2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h @@ -0,0 +1,656 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PWM_COMPONENT_ +#define _SAME70_PWM_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_PWM Pulse Width Modulation Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief PwmCh_num hardware registers */ +typedef struct { + __IO uint32_t PWM_CMR; /**< \brief (PwmCh_num Offset: 0x0) PWM Channel Mode Register */ + __IO uint32_t PWM_CDTY; /**< \brief (PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register */ + __O uint32_t PWM_CDTYUPD; /**< \brief (PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register */ + __IO uint32_t PWM_CPRD; /**< \brief (PwmCh_num Offset: 0xC) PWM Channel Period Register */ + __O uint32_t PWM_CPRDUPD; /**< \brief (PwmCh_num Offset: 0x10) PWM Channel Period Update Register */ + __I uint32_t PWM_CCNT; /**< \brief (PwmCh_num Offset: 0x14) PWM Channel Counter Register */ + __IO uint32_t PWM_DT; /**< \brief (PwmCh_num Offset: 0x18) PWM Channel Dead Time Register */ + __O uint32_t PWM_DTUPD; /**< \brief (PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register */ +} PwmCh_num; +/** \brief PwmCmp hardware registers */ +typedef struct { + __IO uint32_t PWM_CMPV; /**< \brief (PwmCmp Offset: 0x0) PWM Comparison 0 Value Register */ + __O uint32_t PWM_CMPVUPD; /**< \brief (PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register */ + __IO uint32_t PWM_CMPM; /**< \brief (PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register */ + __O uint32_t PWM_CMPMUPD; /**< \brief (PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register */ +} PwmCmp; +/** \brief Pwm hardware registers */ +#define PWMCMP_NUMBER 8 +#define PWMCH_NUM_NUMBER 4 +typedef struct { + __IO uint32_t PWM_CLK; /**< \brief (Pwm Offset: 0x00) PWM Clock Register */ + __O uint32_t PWM_ENA; /**< \brief (Pwm Offset: 0x04) PWM Enable Register */ + __O uint32_t PWM_DIS; /**< \brief (Pwm Offset: 0x08) PWM Disable Register */ + __I uint32_t PWM_SR; /**< \brief (Pwm Offset: 0x0C) PWM Status Register */ + __O uint32_t PWM_IER1; /**< \brief (Pwm Offset: 0x10) PWM Interrupt Enable Register 1 */ + __O uint32_t PWM_IDR1; /**< \brief (Pwm Offset: 0x14) PWM Interrupt Disable Register 1 */ + __I uint32_t PWM_IMR1; /**< \brief (Pwm Offset: 0x18) PWM Interrupt Mask Register 1 */ + __I uint32_t PWM_ISR1; /**< \brief (Pwm Offset: 0x1C) PWM Interrupt Status Register 1 */ + __IO uint32_t PWM_SCM; /**< \brief (Pwm Offset: 0x20) PWM Sync Channels Mode Register */ + __O uint32_t PWM_DMAR; /**< \brief (Pwm Offset: 0x24) PWM DMA Register */ + __IO uint32_t PWM_SCUC; /**< \brief (Pwm Offset: 0x28) PWM Sync Channels Update Control Register */ + __IO uint32_t PWM_SCUP; /**< \brief (Pwm Offset: 0x2C) PWM Sync Channels Update Period Register */ + __O uint32_t PWM_SCUPUPD; /**< \brief (Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register */ + __O uint32_t PWM_IER2; /**< \brief (Pwm Offset: 0x34) PWM Interrupt Enable Register 2 */ + __O uint32_t PWM_IDR2; /**< \brief (Pwm Offset: 0x38) PWM Interrupt Disable Register 2 */ + __I uint32_t PWM_IMR2; /**< \brief (Pwm Offset: 0x3C) PWM Interrupt Mask Register 2 */ + __I uint32_t PWM_ISR2; /**< \brief (Pwm Offset: 0x40) PWM Interrupt Status Register 2 */ + __IO uint32_t PWM_OOV; /**< \brief (Pwm Offset: 0x44) PWM Output Override Value Register */ + __IO uint32_t PWM_OS; /**< \brief (Pwm Offset: 0x48) PWM Output Selection Register */ + __O uint32_t PWM_OSS; /**< \brief (Pwm Offset: 0x4C) PWM Output Selection Set Register */ + __O uint32_t PWM_OSC; /**< \brief (Pwm Offset: 0x50) PWM Output Selection Clear Register */ + __O uint32_t PWM_OSSUPD; /**< \brief (Pwm Offset: 0x54) PWM Output Selection Set Update Register */ + __O uint32_t PWM_OSCUPD; /**< \brief (Pwm Offset: 0x58) PWM Output Selection Clear Update Register */ + __IO uint32_t PWM_FMR; /**< \brief (Pwm Offset: 0x5C) PWM Fault Mode Register */ + __I uint32_t PWM_FSR; /**< \brief (Pwm Offset: 0x60) PWM Fault Status Register */ + __O uint32_t PWM_FCR; /**< \brief (Pwm Offset: 0x64) PWM Fault Clear Register */ + __IO uint32_t PWM_FPV1; /**< \brief (Pwm Offset: 0x68) PWM Fault Protection Value Register 1 */ + __IO uint32_t PWM_FPE; /**< \brief (Pwm Offset: 0x6C) PWM Fault Protection Enable Register */ + __I uint32_t Reserved1[3]; + __IO uint32_t PWM_ELMR[8]; /**< \brief (Pwm Offset: 0x7C) PWM Event Line 0 Mode Register */ + __I uint32_t Reserved2[1]; + __IO uint32_t PWM_SSPR; /**< \brief (Pwm Offset: 0xA0) PWM Spread Spectrum Register */ + __O uint32_t PWM_SSPUP; /**< \brief (Pwm Offset: 0xA4) PWM Spread Spectrum Update Register */ + __I uint32_t Reserved3[2]; + __IO uint32_t PWM_SMMR; /**< \brief (Pwm Offset: 0xB0) PWM Stepper Motor Mode Register */ + __I uint32_t Reserved4[3]; + __IO uint32_t PWM_FPV2; /**< \brief (Pwm Offset: 0xC0) PWM Fault Protection Value 2 Register */ + __I uint32_t Reserved5[8]; + __O uint32_t PWM_WPCR; /**< \brief (Pwm Offset: 0xE4) PWM Write Protection Control Register */ + __I uint32_t PWM_WPSR; /**< \brief (Pwm Offset: 0xE8) PWM Write Protection Status Register */ + __I uint32_t Reserved6[4]; + __I uint32_t PWM_VERSION; /**< \brief (Pwm Offset: 0xFC) Version Register */ + __I uint32_t Reserved7[12]; + PwmCmp PWM_CMP[PWMCMP_NUMBER]; /**< \brief (Pwm Offset: 0x130) 0 .. 7 */ + __I uint32_t Reserved8[20]; + PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]; /**< \brief (Pwm Offset: 0x200) ch_num = 0 .. 3 */ + __I uint32_t Reserved9[96]; + __O uint32_t PWM_CMUPD0; /**< \brief (Pwm Offset: 0x400) PWM Channel Mode Update Register (ch_num = 0) */ + __I uint32_t Reserved10[7]; + __O uint32_t PWM_CMUPD1; /**< \brief (Pwm Offset: 0x420) PWM Channel Mode Update Register (ch_num = 1) */ + __I uint32_t Reserved11[2]; + __IO uint32_t PWM_ETRG1; /**< \brief (Pwm Offset: 0x42C) PWM External Trigger Register (trg_num = 1) */ + __IO uint32_t PWM_LEBR1; /**< \brief (Pwm Offset: 0x430) PWM Leading-Edge Blanking Register (trg_num = 1) */ + __I uint32_t Reserved12[3]; + __O uint32_t PWM_CMUPD2; /**< \brief (Pwm Offset: 0x440) PWM Channel Mode Update Register (ch_num = 2) */ + __I uint32_t Reserved13[2]; + __IO uint32_t PWM_ETRG2; /**< \brief (Pwm Offset: 0x44C) PWM External Trigger Register (trg_num = 2) */ + __IO uint32_t PWM_LEBR2; /**< \brief (Pwm Offset: 0x450) PWM Leading-Edge Blanking Register (trg_num = 2) */ + __I uint32_t Reserved14[3]; + __O uint32_t PWM_CMUPD3; /**< \brief (Pwm Offset: 0x460) PWM Channel Mode Update Register (ch_num = 3) */ +} Pwm; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- PWM_CLK : (PWM Offset: 0x00) PWM Clock Register -------- */ +#define PWM_CLK_DIVA_Pos 0 +#define PWM_CLK_DIVA_Msk (0xffu << PWM_CLK_DIVA_Pos) /**< \brief (PWM_CLK) CLKA Divide Factor */ +#define PWM_CLK_DIVA(value) ((PWM_CLK_DIVA_Msk & ((value) << PWM_CLK_DIVA_Pos))) +#define PWM_CLK_DIVA_CLKA_POFF (0x0u << 0) /**< \brief (PWM_CLK) CLKA clock is turned off */ +#define PWM_CLK_DIVA_PREA (0x1u << 0) /**< \brief (PWM_CLK) CLKA clock is clock selected by PREA */ +#define PWM_CLK_PREA_Pos 8 +#define PWM_CLK_PREA_Msk (0xfu << PWM_CLK_PREA_Pos) /**< \brief (PWM_CLK) CLKA Source Clock Selection */ +#define PWM_CLK_PREA(value) ((PWM_CLK_PREA_Msk & ((value) << PWM_CLK_PREA_Pos))) +#define PWM_CLK_PREA_CLK (0x0u << 8) /**< \brief (PWM_CLK) Peripheral clock */ +#define PWM_CLK_PREA_CLK_DIV2 (0x1u << 8) /**< \brief (PWM_CLK) Peripheral clock/2 */ +#define PWM_CLK_PREA_CLK_DIV4 (0x2u << 8) /**< \brief (PWM_CLK) Peripheral clock/4 */ +#define PWM_CLK_PREA_CLK_DIV8 (0x3u << 8) /**< \brief (PWM_CLK) Peripheral clock/8 */ +#define PWM_CLK_PREA_CLK_DIV16 (0x4u << 8) /**< \brief (PWM_CLK) Peripheral clock/16 */ +#define PWM_CLK_PREA_CLK_DIV32 (0x5u << 8) /**< \brief (PWM_CLK) Peripheral clock/32 */ +#define PWM_CLK_PREA_CLK_DIV64 (0x6u << 8) /**< \brief (PWM_CLK) Peripheral clock/64 */ +#define PWM_CLK_PREA_CLK_DIV128 (0x7u << 8) /**< \brief (PWM_CLK) Peripheral clock/128 */ +#define PWM_CLK_PREA_CLK_DIV256 (0x8u << 8) /**< \brief (PWM_CLK) Peripheral clock/256 */ +#define PWM_CLK_PREA_CLK_DIV512 (0x9u << 8) /**< \brief (PWM_CLK) Peripheral clock/512 */ +#define PWM_CLK_PREA_CLK_DIV1024 (0xAu << 8) /**< \brief (PWM_CLK) Peripheral clock/1024 */ +#define PWM_CLK_DIVB_Pos 16 +#define PWM_CLK_DIVB_Msk (0xffu << PWM_CLK_DIVB_Pos) /**< \brief (PWM_CLK) CLKB Divide Factor */ +#define PWM_CLK_DIVB(value) ((PWM_CLK_DIVB_Msk & ((value) << PWM_CLK_DIVB_Pos))) +#define PWM_CLK_DIVB_CLKB_POFF (0x0u << 16) /**< \brief (PWM_CLK) CLKB clock is turned off */ +#define PWM_CLK_DIVB_PREB (0x1u << 16) /**< \brief (PWM_CLK) CLKB clock is clock selected by PREB */ +#define PWM_CLK_PREB_Pos 24 +#define PWM_CLK_PREB_Msk (0xfu << PWM_CLK_PREB_Pos) /**< \brief (PWM_CLK) CLKB Source Clock Selection */ +#define PWM_CLK_PREB(value) ((PWM_CLK_PREB_Msk & ((value) << PWM_CLK_PREB_Pos))) +#define PWM_CLK_PREB_CLK (0x0u << 24) /**< \brief (PWM_CLK) Peripheral clock */ +#define PWM_CLK_PREB_CLK_DIV2 (0x1u << 24) /**< \brief (PWM_CLK) Peripheral clock/2 */ +#define PWM_CLK_PREB_CLK_DIV4 (0x2u << 24) /**< \brief (PWM_CLK) Peripheral clock/4 */ +#define PWM_CLK_PREB_CLK_DIV8 (0x3u << 24) /**< \brief (PWM_CLK) Peripheral clock/8 */ +#define PWM_CLK_PREB_CLK_DIV16 (0x4u << 24) /**< \brief (PWM_CLK) Peripheral clock/16 */ +#define PWM_CLK_PREB_CLK_DIV32 (0x5u << 24) /**< \brief (PWM_CLK) Peripheral clock/32 */ +#define PWM_CLK_PREB_CLK_DIV64 (0x6u << 24) /**< \brief (PWM_CLK) Peripheral clock/64 */ +#define PWM_CLK_PREB_CLK_DIV128 (0x7u << 24) /**< \brief (PWM_CLK) Peripheral clock/128 */ +#define PWM_CLK_PREB_CLK_DIV256 (0x8u << 24) /**< \brief (PWM_CLK) Peripheral clock/256 */ +#define PWM_CLK_PREB_CLK_DIV512 (0x9u << 24) /**< \brief (PWM_CLK) Peripheral clock/512 */ +#define PWM_CLK_PREB_CLK_DIV1024 (0xAu << 24) /**< \brief (PWM_CLK) Peripheral clock/1024 */ +/* -------- PWM_ENA : (PWM Offset: 0x04) PWM Enable Register -------- */ +#define PWM_ENA_CHID0 (0x1u << 0) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID1 (0x1u << 1) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID2 (0x1u << 2) /**< \brief (PWM_ENA) Channel ID */ +#define PWM_ENA_CHID3 (0x1u << 3) /**< \brief (PWM_ENA) Channel ID */ +/* -------- PWM_DIS : (PWM Offset: 0x08) PWM Disable Register -------- */ +#define PWM_DIS_CHID0 (0x1u << 0) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID1 (0x1u << 1) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID2 (0x1u << 2) /**< \brief (PWM_DIS) Channel ID */ +#define PWM_DIS_CHID3 (0x1u << 3) /**< \brief (PWM_DIS) Channel ID */ +/* -------- PWM_SR : (PWM Offset: 0x0C) PWM Status Register -------- */ +#define PWM_SR_CHID0 (0x1u << 0) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID1 (0x1u << 1) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID2 (0x1u << 2) /**< \brief (PWM_SR) Channel ID */ +#define PWM_SR_CHID3 (0x1u << 3) /**< \brief (PWM_SR) Channel ID */ +/* -------- PWM_IER1 : (PWM Offset: 0x10) PWM Interrupt Enable Register 1 -------- */ +#define PWM_IER1_CHID0 (0x1u << 0) /**< \brief (PWM_IER1) Counter Event on Channel 0 Interrupt Enable */ +#define PWM_IER1_CHID1 (0x1u << 1) /**< \brief (PWM_IER1) Counter Event on Channel 1 Interrupt Enable */ +#define PWM_IER1_CHID2 (0x1u << 2) /**< \brief (PWM_IER1) Counter Event on Channel 2 Interrupt Enable */ +#define PWM_IER1_CHID3 (0x1u << 3) /**< \brief (PWM_IER1) Counter Event on Channel 3 Interrupt Enable */ +#define PWM_IER1_FCHID0 (0x1u << 16) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 0 Interrupt Enable */ +#define PWM_IER1_FCHID1 (0x1u << 17) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 1 Interrupt Enable */ +#define PWM_IER1_FCHID2 (0x1u << 18) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 2 Interrupt Enable */ +#define PWM_IER1_FCHID3 (0x1u << 19) /**< \brief (PWM_IER1) Fault Protection Trigger on Channel 3 Interrupt Enable */ +/* -------- PWM_IDR1 : (PWM Offset: 0x14) PWM Interrupt Disable Register 1 -------- */ +#define PWM_IDR1_CHID0 (0x1u << 0) /**< \brief (PWM_IDR1) Counter Event on Channel 0 Interrupt Disable */ +#define PWM_IDR1_CHID1 (0x1u << 1) /**< \brief (PWM_IDR1) Counter Event on Channel 1 Interrupt Disable */ +#define PWM_IDR1_CHID2 (0x1u << 2) /**< \brief (PWM_IDR1) Counter Event on Channel 2 Interrupt Disable */ +#define PWM_IDR1_CHID3 (0x1u << 3) /**< \brief (PWM_IDR1) Counter Event on Channel 3 Interrupt Disable */ +#define PWM_IDR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 0 Interrupt Disable */ +#define PWM_IDR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 1 Interrupt Disable */ +#define PWM_IDR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 2 Interrupt Disable */ +#define PWM_IDR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IDR1) Fault Protection Trigger on Channel 3 Interrupt Disable */ +/* -------- PWM_IMR1 : (PWM Offset: 0x18) PWM Interrupt Mask Register 1 -------- */ +#define PWM_IMR1_CHID0 (0x1u << 0) /**< \brief (PWM_IMR1) Counter Event on Channel 0 Interrupt Mask */ +#define PWM_IMR1_CHID1 (0x1u << 1) /**< \brief (PWM_IMR1) Counter Event on Channel 1 Interrupt Mask */ +#define PWM_IMR1_CHID2 (0x1u << 2) /**< \brief (PWM_IMR1) Counter Event on Channel 2 Interrupt Mask */ +#define PWM_IMR1_CHID3 (0x1u << 3) /**< \brief (PWM_IMR1) Counter Event on Channel 3 Interrupt Mask */ +#define PWM_IMR1_FCHID0 (0x1u << 16) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 0 Interrupt Mask */ +#define PWM_IMR1_FCHID1 (0x1u << 17) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 1 Interrupt Mask */ +#define PWM_IMR1_FCHID2 (0x1u << 18) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 2 Interrupt Mask */ +#define PWM_IMR1_FCHID3 (0x1u << 19) /**< \brief (PWM_IMR1) Fault Protection Trigger on Channel 3 Interrupt Mask */ +/* -------- PWM_ISR1 : (PWM Offset: 0x1C) PWM Interrupt Status Register 1 -------- */ +#define PWM_ISR1_CHID0 (0x1u << 0) /**< \brief (PWM_ISR1) Counter Event on Channel 0 */ +#define PWM_ISR1_CHID1 (0x1u << 1) /**< \brief (PWM_ISR1) Counter Event on Channel 1 */ +#define PWM_ISR1_CHID2 (0x1u << 2) /**< \brief (PWM_ISR1) Counter Event on Channel 2 */ +#define PWM_ISR1_CHID3 (0x1u << 3) /**< \brief (PWM_ISR1) Counter Event on Channel 3 */ +#define PWM_ISR1_FCHID0 (0x1u << 16) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 0 */ +#define PWM_ISR1_FCHID1 (0x1u << 17) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 1 */ +#define PWM_ISR1_FCHID2 (0x1u << 18) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 2 */ +#define PWM_ISR1_FCHID3 (0x1u << 19) /**< \brief (PWM_ISR1) Fault Protection Trigger on Channel 3 */ +/* -------- PWM_SCM : (PWM Offset: 0x20) PWM Sync Channels Mode Register -------- */ +#define PWM_SCM_SYNC0 (0x1u << 0) /**< \brief (PWM_SCM) Synchronous Channel 0 */ +#define PWM_SCM_SYNC1 (0x1u << 1) /**< \brief (PWM_SCM) Synchronous Channel 1 */ +#define PWM_SCM_SYNC2 (0x1u << 2) /**< \brief (PWM_SCM) Synchronous Channel 2 */ +#define PWM_SCM_SYNC3 (0x1u << 3) /**< \brief (PWM_SCM) Synchronous Channel 3 */ +#define PWM_SCM_UPDM_Pos 16 +#define PWM_SCM_UPDM_Msk (0x3u << PWM_SCM_UPDM_Pos) /**< \brief (PWM_SCM) Synchronous Channels Update Mode */ +#define PWM_SCM_UPDM(value) ((PWM_SCM_UPDM_Msk & ((value) << PWM_SCM_UPDM_Pos))) +#define PWM_SCM_UPDM_MODE0 (0x0u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels */ +#define PWM_SCM_UPDM_MODE1 (0x1u << 16) /**< \brief (PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels */ +#define PWM_SCM_UPDM_MODE2 (0x2u << 16) /**< \brief (PWM_SCM) Automatic write of duty-cycle update registers by the DMA and automatic update of synchronous channels */ +#define PWM_SCM_PTRM (0x1u << 20) /**< \brief (PWM_SCM) DMA Transfer Request Mode */ +#define PWM_SCM_PTRCS_Pos 21 +#define PWM_SCM_PTRCS_Msk (0x7u << PWM_SCM_PTRCS_Pos) /**< \brief (PWM_SCM) DMA Transfer Request Comparison Selection */ +#define PWM_SCM_PTRCS(value) ((PWM_SCM_PTRCS_Msk & ((value) << PWM_SCM_PTRCS_Pos))) +/* -------- PWM_DMAR : (PWM Offset: 0x24) PWM DMA Register -------- */ +#define PWM_DMAR_DMADUTY_Pos 0 +#define PWM_DMAR_DMADUTY_Msk (0xffffffu << PWM_DMAR_DMADUTY_Pos) /**< \brief (PWM_DMAR) Duty-Cycle Holding Register for DMA Access */ +#define PWM_DMAR_DMADUTY(value) ((PWM_DMAR_DMADUTY_Msk & ((value) << PWM_DMAR_DMADUTY_Pos))) +/* -------- PWM_SCUC : (PWM Offset: 0x28) PWM Sync Channels Update Control Register -------- */ +#define PWM_SCUC_UPDULOCK (0x1u << 0) /**< \brief (PWM_SCUC) Synchronous Channels Update Unlock */ +/* -------- PWM_SCUP : (PWM Offset: 0x2C) PWM Sync Channels Update Period Register -------- */ +#define PWM_SCUP_UPR_Pos 0 +#define PWM_SCUP_UPR_Msk (0xfu << PWM_SCUP_UPR_Pos) /**< \brief (PWM_SCUP) Update Period */ +#define PWM_SCUP_UPR(value) ((PWM_SCUP_UPR_Msk & ((value) << PWM_SCUP_UPR_Pos))) +#define PWM_SCUP_UPRCNT_Pos 4 +#define PWM_SCUP_UPRCNT_Msk (0xfu << PWM_SCUP_UPRCNT_Pos) /**< \brief (PWM_SCUP) Update Period Counter */ +#define PWM_SCUP_UPRCNT(value) ((PWM_SCUP_UPRCNT_Msk & ((value) << PWM_SCUP_UPRCNT_Pos))) +/* -------- PWM_SCUPUPD : (PWM Offset: 0x30) PWM Sync Channels Update Period Update Register -------- */ +#define PWM_SCUPUPD_UPRUPD_Pos 0 +#define PWM_SCUPUPD_UPRUPD_Msk (0xfu << PWM_SCUPUPD_UPRUPD_Pos) /**< \brief (PWM_SCUPUPD) Update Period Update */ +#define PWM_SCUPUPD_UPRUPD(value) ((PWM_SCUPUPD_UPRUPD_Msk & ((value) << PWM_SCUPUPD_UPRUPD_Pos))) +/* -------- PWM_IER2 : (PWM Offset: 0x34) PWM Interrupt Enable Register 2 -------- */ +#define PWM_IER2_WRDY (0x1u << 0) /**< \brief (PWM_IER2) Write Ready for Synchronous Channels Update Interrupt Enable */ +#define PWM_IER2_UNRE (0x1u << 3) /**< \brief (PWM_IER2) Synchronous Channels Update Underrun Error Interrupt Enable */ +#define PWM_IER2_CMPM0 (0x1u << 8) /**< \brief (PWM_IER2) Comparison 0 Match Interrupt Enable */ +#define PWM_IER2_CMPM1 (0x1u << 9) /**< \brief (PWM_IER2) Comparison 1 Match Interrupt Enable */ +#define PWM_IER2_CMPM2 (0x1u << 10) /**< \brief (PWM_IER2) Comparison 2 Match Interrupt Enable */ +#define PWM_IER2_CMPM3 (0x1u << 11) /**< \brief (PWM_IER2) Comparison 3 Match Interrupt Enable */ +#define PWM_IER2_CMPM4 (0x1u << 12) /**< \brief (PWM_IER2) Comparison 4 Match Interrupt Enable */ +#define PWM_IER2_CMPM5 (0x1u << 13) /**< \brief (PWM_IER2) Comparison 5 Match Interrupt Enable */ +#define PWM_IER2_CMPM6 (0x1u << 14) /**< \brief (PWM_IER2) Comparison 6 Match Interrupt Enable */ +#define PWM_IER2_CMPM7 (0x1u << 15) /**< \brief (PWM_IER2) Comparison 7 Match Interrupt Enable */ +#define PWM_IER2_CMPU0 (0x1u << 16) /**< \brief (PWM_IER2) Comparison 0 Update Interrupt Enable */ +#define PWM_IER2_CMPU1 (0x1u << 17) /**< \brief (PWM_IER2) Comparison 1 Update Interrupt Enable */ +#define PWM_IER2_CMPU2 (0x1u << 18) /**< \brief (PWM_IER2) Comparison 2 Update Interrupt Enable */ +#define PWM_IER2_CMPU3 (0x1u << 19) /**< \brief (PWM_IER2) Comparison 3 Update Interrupt Enable */ +#define PWM_IER2_CMPU4 (0x1u << 20) /**< \brief (PWM_IER2) Comparison 4 Update Interrupt Enable */ +#define PWM_IER2_CMPU5 (0x1u << 21) /**< \brief (PWM_IER2) Comparison 5 Update Interrupt Enable */ +#define PWM_IER2_CMPU6 (0x1u << 22) /**< \brief (PWM_IER2) Comparison 6 Update Interrupt Enable */ +#define PWM_IER2_CMPU7 (0x1u << 23) /**< \brief (PWM_IER2) Comparison 7 Update Interrupt Enable */ +/* -------- PWM_IDR2 : (PWM Offset: 0x38) PWM Interrupt Disable Register 2 -------- */ +#define PWM_IDR2_WRDY (0x1u << 0) /**< \brief (PWM_IDR2) Write Ready for Synchronous Channels Update Interrupt Disable */ +#define PWM_IDR2_UNRE (0x1u << 3) /**< \brief (PWM_IDR2) Synchronous Channels Update Underrun Error Interrupt Disable */ +#define PWM_IDR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IDR2) Comparison 0 Match Interrupt Disable */ +#define PWM_IDR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IDR2) Comparison 1 Match Interrupt Disable */ +#define PWM_IDR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IDR2) Comparison 2 Match Interrupt Disable */ +#define PWM_IDR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IDR2) Comparison 3 Match Interrupt Disable */ +#define PWM_IDR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IDR2) Comparison 4 Match Interrupt Disable */ +#define PWM_IDR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IDR2) Comparison 5 Match Interrupt Disable */ +#define PWM_IDR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IDR2) Comparison 6 Match Interrupt Disable */ +#define PWM_IDR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IDR2) Comparison 7 Match Interrupt Disable */ +#define PWM_IDR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IDR2) Comparison 0 Update Interrupt Disable */ +#define PWM_IDR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IDR2) Comparison 1 Update Interrupt Disable */ +#define PWM_IDR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IDR2) Comparison 2 Update Interrupt Disable */ +#define PWM_IDR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IDR2) Comparison 3 Update Interrupt Disable */ +#define PWM_IDR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IDR2) Comparison 4 Update Interrupt Disable */ +#define PWM_IDR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IDR2) Comparison 5 Update Interrupt Disable */ +#define PWM_IDR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IDR2) Comparison 6 Update Interrupt Disable */ +#define PWM_IDR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IDR2) Comparison 7 Update Interrupt Disable */ +/* -------- PWM_IMR2 : (PWM Offset: 0x3C) PWM Interrupt Mask Register 2 -------- */ +#define PWM_IMR2_WRDY (0x1u << 0) /**< \brief (PWM_IMR2) Write Ready for Synchronous Channels Update Interrupt Mask */ +#define PWM_IMR2_UNRE (0x1u << 3) /**< \brief (PWM_IMR2) Synchronous Channels Update Underrun Error Interrupt Mask */ +#define PWM_IMR2_CMPM0 (0x1u << 8) /**< \brief (PWM_IMR2) Comparison 0 Match Interrupt Mask */ +#define PWM_IMR2_CMPM1 (0x1u << 9) /**< \brief (PWM_IMR2) Comparison 1 Match Interrupt Mask */ +#define PWM_IMR2_CMPM2 (0x1u << 10) /**< \brief (PWM_IMR2) Comparison 2 Match Interrupt Mask */ +#define PWM_IMR2_CMPM3 (0x1u << 11) /**< \brief (PWM_IMR2) Comparison 3 Match Interrupt Mask */ +#define PWM_IMR2_CMPM4 (0x1u << 12) /**< \brief (PWM_IMR2) Comparison 4 Match Interrupt Mask */ +#define PWM_IMR2_CMPM5 (0x1u << 13) /**< \brief (PWM_IMR2) Comparison 5 Match Interrupt Mask */ +#define PWM_IMR2_CMPM6 (0x1u << 14) /**< \brief (PWM_IMR2) Comparison 6 Match Interrupt Mask */ +#define PWM_IMR2_CMPM7 (0x1u << 15) /**< \brief (PWM_IMR2) Comparison 7 Match Interrupt Mask */ +#define PWM_IMR2_CMPU0 (0x1u << 16) /**< \brief (PWM_IMR2) Comparison 0 Update Interrupt Mask */ +#define PWM_IMR2_CMPU1 (0x1u << 17) /**< \brief (PWM_IMR2) Comparison 1 Update Interrupt Mask */ +#define PWM_IMR2_CMPU2 (0x1u << 18) /**< \brief (PWM_IMR2) Comparison 2 Update Interrupt Mask */ +#define PWM_IMR2_CMPU3 (0x1u << 19) /**< \brief (PWM_IMR2) Comparison 3 Update Interrupt Mask */ +#define PWM_IMR2_CMPU4 (0x1u << 20) /**< \brief (PWM_IMR2) Comparison 4 Update Interrupt Mask */ +#define PWM_IMR2_CMPU5 (0x1u << 21) /**< \brief (PWM_IMR2) Comparison 5 Update Interrupt Mask */ +#define PWM_IMR2_CMPU6 (0x1u << 22) /**< \brief (PWM_IMR2) Comparison 6 Update Interrupt Mask */ +#define PWM_IMR2_CMPU7 (0x1u << 23) /**< \brief (PWM_IMR2) Comparison 7 Update Interrupt Mask */ +/* -------- PWM_ISR2 : (PWM Offset: 0x40) PWM Interrupt Status Register 2 -------- */ +#define PWM_ISR2_WRDY (0x1u << 0) /**< \brief (PWM_ISR2) Write Ready for Synchronous Channels Update */ +#define PWM_ISR2_UNRE (0x1u << 3) /**< \brief (PWM_ISR2) Synchronous Channels Update Underrun Error */ +#define PWM_ISR2_CMPM0 (0x1u << 8) /**< \brief (PWM_ISR2) Comparison 0 Match */ +#define PWM_ISR2_CMPM1 (0x1u << 9) /**< \brief (PWM_ISR2) Comparison 1 Match */ +#define PWM_ISR2_CMPM2 (0x1u << 10) /**< \brief (PWM_ISR2) Comparison 2 Match */ +#define PWM_ISR2_CMPM3 (0x1u << 11) /**< \brief (PWM_ISR2) Comparison 3 Match */ +#define PWM_ISR2_CMPM4 (0x1u << 12) /**< \brief (PWM_ISR2) Comparison 4 Match */ +#define PWM_ISR2_CMPM5 (0x1u << 13) /**< \brief (PWM_ISR2) Comparison 5 Match */ +#define PWM_ISR2_CMPM6 (0x1u << 14) /**< \brief (PWM_ISR2) Comparison 6 Match */ +#define PWM_ISR2_CMPM7 (0x1u << 15) /**< \brief (PWM_ISR2) Comparison 7 Match */ +#define PWM_ISR2_CMPU0 (0x1u << 16) /**< \brief (PWM_ISR2) Comparison 0 Update */ +#define PWM_ISR2_CMPU1 (0x1u << 17) /**< \brief (PWM_ISR2) Comparison 1 Update */ +#define PWM_ISR2_CMPU2 (0x1u << 18) /**< \brief (PWM_ISR2) Comparison 2 Update */ +#define PWM_ISR2_CMPU3 (0x1u << 19) /**< \brief (PWM_ISR2) Comparison 3 Update */ +#define PWM_ISR2_CMPU4 (0x1u << 20) /**< \brief (PWM_ISR2) Comparison 4 Update */ +#define PWM_ISR2_CMPU5 (0x1u << 21) /**< \brief (PWM_ISR2) Comparison 5 Update */ +#define PWM_ISR2_CMPU6 (0x1u << 22) /**< \brief (PWM_ISR2) Comparison 6 Update */ +#define PWM_ISR2_CMPU7 (0x1u << 23) /**< \brief (PWM_ISR2) Comparison 7 Update */ +/* -------- PWM_OOV : (PWM Offset: 0x44) PWM Output Override Value Register -------- */ +#define PWM_OOV_OOVH0 (0x1u << 0) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 0 */ +#define PWM_OOV_OOVH1 (0x1u << 1) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 1 */ +#define PWM_OOV_OOVH2 (0x1u << 2) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 2 */ +#define PWM_OOV_OOVH3 (0x1u << 3) /**< \brief (PWM_OOV) Output Override Value for PWMH output of the channel 3 */ +#define PWM_OOV_OOVL0 (0x1u << 16) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 0 */ +#define PWM_OOV_OOVL1 (0x1u << 17) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 1 */ +#define PWM_OOV_OOVL2 (0x1u << 18) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 2 */ +#define PWM_OOV_OOVL3 (0x1u << 19) /**< \brief (PWM_OOV) Output Override Value for PWML output of the channel 3 */ +/* -------- PWM_OS : (PWM Offset: 0x48) PWM Output Selection Register -------- */ +#define PWM_OS_OSH0 (0x1u << 0) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 0 */ +#define PWM_OS_OSH1 (0x1u << 1) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 1 */ +#define PWM_OS_OSH2 (0x1u << 2) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 2 */ +#define PWM_OS_OSH3 (0x1u << 3) /**< \brief (PWM_OS) Output Selection for PWMH output of the channel 3 */ +#define PWM_OS_OSL0 (0x1u << 16) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 0 */ +#define PWM_OS_OSL1 (0x1u << 17) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 1 */ +#define PWM_OS_OSL2 (0x1u << 18) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 2 */ +#define PWM_OS_OSL3 (0x1u << 19) /**< \brief (PWM_OS) Output Selection for PWML output of the channel 3 */ +/* -------- PWM_OSS : (PWM Offset: 0x4C) PWM Output Selection Set Register -------- */ +#define PWM_OSS_OSSH0 (0x1u << 0) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSS_OSSH1 (0x1u << 1) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSS_OSSH2 (0x1u << 2) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSS_OSSH3 (0x1u << 3) /**< \brief (PWM_OSS) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSS_OSSL0 (0x1u << 16) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSS_OSSL1 (0x1u << 17) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSS_OSSL2 (0x1u << 18) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSS_OSSL3 (0x1u << 19) /**< \brief (PWM_OSS) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSC : (PWM Offset: 0x50) PWM Output Selection Clear Register -------- */ +#define PWM_OSC_OSCH0 (0x1u << 0) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSC_OSCH1 (0x1u << 1) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSC_OSCH2 (0x1u << 2) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSC_OSCH3 (0x1u << 3) /**< \brief (PWM_OSC) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSC_OSCL0 (0x1u << 16) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSC_OSCL1 (0x1u << 17) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSC_OSCL2 (0x1u << 18) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSC_OSCL3 (0x1u << 19) /**< \brief (PWM_OSC) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_OSSUPD : (PWM Offset: 0x54) PWM Output Selection Set Update Register -------- */ +#define PWM_OSSUPD_OSSUPH0 (0x1u << 0) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 0 */ +#define PWM_OSSUPD_OSSUPH1 (0x1u << 1) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 1 */ +#define PWM_OSSUPD_OSSUPH2 (0x1u << 2) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 2 */ +#define PWM_OSSUPD_OSSUPH3 (0x1u << 3) /**< \brief (PWM_OSSUPD) Output Selection Set for PWMH output of the channel 3 */ +#define PWM_OSSUPD_OSSUPL0 (0x1u << 16) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 0 */ +#define PWM_OSSUPD_OSSUPL1 (0x1u << 17) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 1 */ +#define PWM_OSSUPD_OSSUPL2 (0x1u << 18) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 2 */ +#define PWM_OSSUPD_OSSUPL3 (0x1u << 19) /**< \brief (PWM_OSSUPD) Output Selection Set for PWML output of the channel 3 */ +/* -------- PWM_OSCUPD : (PWM Offset: 0x58) PWM Output Selection Clear Update Register -------- */ +#define PWM_OSCUPD_OSCUPH0 (0x1u << 0) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 0 */ +#define PWM_OSCUPD_OSCUPH1 (0x1u << 1) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 1 */ +#define PWM_OSCUPD_OSCUPH2 (0x1u << 2) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 2 */ +#define PWM_OSCUPD_OSCUPH3 (0x1u << 3) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWMH output of the channel 3 */ +#define PWM_OSCUPD_OSCUPL0 (0x1u << 16) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 0 */ +#define PWM_OSCUPD_OSCUPL1 (0x1u << 17) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 1 */ +#define PWM_OSCUPD_OSCUPL2 (0x1u << 18) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 2 */ +#define PWM_OSCUPD_OSCUPL3 (0x1u << 19) /**< \brief (PWM_OSCUPD) Output Selection Clear for PWML output of the channel 3 */ +/* -------- PWM_FMR : (PWM Offset: 0x5C) PWM Fault Mode Register -------- */ +#define PWM_FMR_FPOL_Pos 0 +#define PWM_FMR_FPOL_Msk (0xffu << PWM_FMR_FPOL_Pos) /**< \brief (PWM_FMR) Fault Polarity */ +#define PWM_FMR_FPOL(value) ((PWM_FMR_FPOL_Msk & ((value) << PWM_FMR_FPOL_Pos))) +#define PWM_FMR_FMOD_Pos 8 +#define PWM_FMR_FMOD_Msk (0xffu << PWM_FMR_FMOD_Pos) /**< \brief (PWM_FMR) Fault Activation Mode */ +#define PWM_FMR_FMOD(value) ((PWM_FMR_FMOD_Msk & ((value) << PWM_FMR_FMOD_Pos))) +#define PWM_FMR_FFIL_Pos 16 +#define PWM_FMR_FFIL_Msk (0xffu << PWM_FMR_FFIL_Pos) /**< \brief (PWM_FMR) Fault Filtering */ +#define PWM_FMR_FFIL(value) ((PWM_FMR_FFIL_Msk & ((value) << PWM_FMR_FFIL_Pos))) +/* -------- PWM_FSR : (PWM Offset: 0x60) PWM Fault Status Register -------- */ +#define PWM_FSR_FIV_Pos 0 +#define PWM_FSR_FIV_Msk (0xffu << PWM_FSR_FIV_Pos) /**< \brief (PWM_FSR) Fault Input Value */ +#define PWM_FSR_FS_Pos 8 +#define PWM_FSR_FS_Msk (0xffu << PWM_FSR_FS_Pos) /**< \brief (PWM_FSR) Fault Status */ +/* -------- PWM_FCR : (PWM Offset: 0x64) PWM Fault Clear Register -------- */ +#define PWM_FCR_FCLR_Pos 0 +#define PWM_FCR_FCLR_Msk (0xffu << PWM_FCR_FCLR_Pos) /**< \brief (PWM_FCR) Fault Clear */ +#define PWM_FCR_FCLR(value) ((PWM_FCR_FCLR_Msk & ((value) << PWM_FCR_FCLR_Pos))) +/* -------- PWM_FPV1 : (PWM Offset: 0x68) PWM Fault Protection Value Register 1 -------- */ +#define PWM_FPV1_FPVH0 (0x1u << 0) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 0 */ +#define PWM_FPV1_FPVH1 (0x1u << 1) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 1 */ +#define PWM_FPV1_FPVH2 (0x1u << 2) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 2 */ +#define PWM_FPV1_FPVH3 (0x1u << 3) /**< \brief (PWM_FPV1) Fault Protection Value for PWMH output on channel 3 */ +#define PWM_FPV1_FPVL0 (0x1u << 16) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 0 */ +#define PWM_FPV1_FPVL1 (0x1u << 17) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 1 */ +#define PWM_FPV1_FPVL2 (0x1u << 18) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 2 */ +#define PWM_FPV1_FPVL3 (0x1u << 19) /**< \brief (PWM_FPV1) Fault Protection Value for PWML output on channel 3 */ +/* -------- PWM_FPE : (PWM Offset: 0x6C) PWM Fault Protection Enable Register -------- */ +#define PWM_FPE_FPE0_Pos 0 +#define PWM_FPE_FPE0_Msk (0xffu << PWM_FPE_FPE0_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 0 */ +#define PWM_FPE_FPE0(value) ((PWM_FPE_FPE0_Msk & ((value) << PWM_FPE_FPE0_Pos))) +#define PWM_FPE_FPE1_Pos 8 +#define PWM_FPE_FPE1_Msk (0xffu << PWM_FPE_FPE1_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 1 */ +#define PWM_FPE_FPE1(value) ((PWM_FPE_FPE1_Msk & ((value) << PWM_FPE_FPE1_Pos))) +#define PWM_FPE_FPE2_Pos 16 +#define PWM_FPE_FPE2_Msk (0xffu << PWM_FPE_FPE2_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 2 */ +#define PWM_FPE_FPE2(value) ((PWM_FPE_FPE2_Msk & ((value) << PWM_FPE_FPE2_Pos))) +#define PWM_FPE_FPE3_Pos 24 +#define PWM_FPE_FPE3_Msk (0xffu << PWM_FPE_FPE3_Pos) /**< \brief (PWM_FPE) Fault Protection Enable for channel 3 */ +#define PWM_FPE_FPE3(value) ((PWM_FPE_FPE3_Msk & ((value) << PWM_FPE_FPE3_Pos))) +/* -------- PWM_ELMR[8] : (PWM Offset: 0x7C) PWM Event Line 0 Mode Register -------- */ +#define PWM_ELMR_CSEL0 (0x1u << 0) /**< \brief (PWM_ELMR[8]) Comparison 0 Selection */ +#define PWM_ELMR_CSEL1 (0x1u << 1) /**< \brief (PWM_ELMR[8]) Comparison 1 Selection */ +#define PWM_ELMR_CSEL2 (0x1u << 2) /**< \brief (PWM_ELMR[8]) Comparison 2 Selection */ +#define PWM_ELMR_CSEL3 (0x1u << 3) /**< \brief (PWM_ELMR[8]) Comparison 3 Selection */ +#define PWM_ELMR_CSEL4 (0x1u << 4) /**< \brief (PWM_ELMR[8]) Comparison 4 Selection */ +#define PWM_ELMR_CSEL5 (0x1u << 5) /**< \brief (PWM_ELMR[8]) Comparison 5 Selection */ +#define PWM_ELMR_CSEL6 (0x1u << 6) /**< \brief (PWM_ELMR[8]) Comparison 6 Selection */ +#define PWM_ELMR_CSEL7 (0x1u << 7) /**< \brief (PWM_ELMR[8]) Comparison 7 Selection */ +/* -------- PWM_SSPR : (PWM Offset: 0xA0) PWM Spread Spectrum Register -------- */ +#define PWM_SSPR_SPRD_Pos 0 +#define PWM_SSPR_SPRD_Msk (0xffffffu << PWM_SSPR_SPRD_Pos) /**< \brief (PWM_SSPR) Spread Spectrum Limit Value */ +#define PWM_SSPR_SPRD(value) ((PWM_SSPR_SPRD_Msk & ((value) << PWM_SSPR_SPRD_Pos))) +#define PWM_SSPR_SPRDM (0x1u << 24) /**< \brief (PWM_SSPR) Spread Spectrum Counter Mode */ +/* -------- PWM_SSPUP : (PWM Offset: 0xA4) PWM Spread Spectrum Update Register -------- */ +#define PWM_SSPUP_SPRDUP_Pos 0 +#define PWM_SSPUP_SPRDUP_Msk (0xffffffu << PWM_SSPUP_SPRDUP_Pos) /**< \brief (PWM_SSPUP) Spread Spectrum Limit Value Update */ +#define PWM_SSPUP_SPRDUP(value) ((PWM_SSPUP_SPRDUP_Msk & ((value) << PWM_SSPUP_SPRDUP_Pos))) +/* -------- PWM_SMMR : (PWM Offset: 0xB0) PWM Stepper Motor Mode Register -------- */ +#define PWM_SMMR_GCEN0 (0x1u << 0) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_GCEN1 (0x1u << 1) /**< \brief (PWM_SMMR) Gray Count ENable */ +#define PWM_SMMR_DOWN0 (0x1u << 16) /**< \brief (PWM_SMMR) DOWN Count */ +#define PWM_SMMR_DOWN1 (0x1u << 17) /**< \brief (PWM_SMMR) DOWN Count */ +/* -------- PWM_FPV2 : (PWM Offset: 0xC0) PWM Fault Protection Value 2 Register -------- */ +#define PWM_FPV2_FPZH0 (0x1u << 0) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 0 */ +#define PWM_FPV2_FPZH1 (0x1u << 1) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 1 */ +#define PWM_FPV2_FPZH2 (0x1u << 2) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 2 */ +#define PWM_FPV2_FPZH3 (0x1u << 3) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWMH output on channel 3 */ +#define PWM_FPV2_FPZL0 (0x1u << 16) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 0 */ +#define PWM_FPV2_FPZL1 (0x1u << 17) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 1 */ +#define PWM_FPV2_FPZL2 (0x1u << 18) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 2 */ +#define PWM_FPV2_FPZL3 (0x1u << 19) /**< \brief (PWM_FPV2) Fault Protection to Hi-Z for PWML output on channel 3 */ +/* -------- PWM_WPCR : (PWM Offset: 0xE4) PWM Write Protection Control Register -------- */ +#define PWM_WPCR_WPCMD_Pos 0 +#define PWM_WPCR_WPCMD_Msk (0x3u << PWM_WPCR_WPCMD_Pos) /**< \brief (PWM_WPCR) Write Protection Command */ +#define PWM_WPCR_WPCMD(value) ((PWM_WPCR_WPCMD_Msk & ((value) << PWM_WPCR_WPCMD_Pos))) +#define PWM_WPCR_WPCMD_DISABLE_SW_PROT (0x0u << 0) /**< \brief (PWM_WPCR) Disables the software write protection of the register groups of which the bit WPRGx is at '1'. */ +#define PWM_WPCR_WPCMD_ENABLE_SW_PROT (0x1u << 0) /**< \brief (PWM_WPCR) Enables the software write protection of the register groups of which the bit WPRGx is at '1'. */ +#define PWM_WPCR_WPCMD_ENABLE_HW_PROT (0x2u << 0) /**< \brief (PWM_WPCR) Enables the hardware write protection of the register groups of which the bit WPRGx is at '1'. Only a hardware reset of the PWM controller can disable the hardware write protection. Moreover, to meet security requirements, the PIO lines associated with the PWM can not be configured through the PIO interface. */ +#define PWM_WPCR_WPRG0 (0x1u << 2) /**< \brief (PWM_WPCR) Write Protection Register Group 0 */ +#define PWM_WPCR_WPRG1 (0x1u << 3) /**< \brief (PWM_WPCR) Write Protection Register Group 1 */ +#define PWM_WPCR_WPRG2 (0x1u << 4) /**< \brief (PWM_WPCR) Write Protection Register Group 2 */ +#define PWM_WPCR_WPRG3 (0x1u << 5) /**< \brief (PWM_WPCR) Write Protection Register Group 3 */ +#define PWM_WPCR_WPRG4 (0x1u << 6) /**< \brief (PWM_WPCR) Write Protection Register Group 4 */ +#define PWM_WPCR_WPRG5 (0x1u << 7) /**< \brief (PWM_WPCR) Write Protection Register Group 5 */ +#define PWM_WPCR_WPKEY_Pos 8 +#define PWM_WPCR_WPKEY_Msk (0xffffffu << PWM_WPCR_WPKEY_Pos) /**< \brief (PWM_WPCR) Write Protection Key */ +#define PWM_WPCR_WPKEY(value) ((PWM_WPCR_WPKEY_Msk & ((value) << PWM_WPCR_WPKEY_Pos))) +#define PWM_WPCR_WPKEY_PASSWD (0x50574Du << 8) /**< \brief (PWM_WPCR) Writing any other value in this field aborts the write operation of the WPCMD field.Always reads as 0 */ +/* -------- PWM_WPSR : (PWM Offset: 0xE8) PWM Write Protection Status Register -------- */ +#define PWM_WPSR_WPSWS0 (0x1u << 0) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS1 (0x1u << 1) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS2 (0x1u << 2) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS3 (0x1u << 3) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS4 (0x1u << 4) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPSWS5 (0x1u << 5) /**< \brief (PWM_WPSR) Write Protect SW Status */ +#define PWM_WPSR_WPVS (0x1u << 7) /**< \brief (PWM_WPSR) Write Protect Violation Status */ +#define PWM_WPSR_WPHWS0 (0x1u << 8) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS1 (0x1u << 9) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS2 (0x1u << 10) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS3 (0x1u << 11) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS4 (0x1u << 12) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPHWS5 (0x1u << 13) /**< \brief (PWM_WPSR) Write Protect HW Status */ +#define PWM_WPSR_WPVSRC_Pos 16 +#define PWM_WPSR_WPVSRC_Msk (0xffffu << PWM_WPSR_WPVSRC_Pos) /**< \brief (PWM_WPSR) Write Protect Violation Source */ +/* -------- PWM_VERSION : (PWM Offset: 0xFC) Version Register -------- */ +#define PWM_VERSION_VERSION_Pos 0 +#define PWM_VERSION_VERSION_Msk (0xfffu << PWM_VERSION_VERSION_Pos) /**< \brief (PWM_VERSION) Version of the Hardware Module */ +#define PWM_VERSION_MFN_Pos 16 +#define PWM_VERSION_MFN_Msk (0x7u << PWM_VERSION_MFN_Pos) /**< \brief (PWM_VERSION) Metal Fix Number */ +/* -------- PWM_CMPV : (PWM Offset: N/A) PWM Comparison 0 Value Register -------- */ +#define PWM_CMPV_CV_Pos 0 +#define PWM_CMPV_CV_Msk (0xffffffu << PWM_CMPV_CV_Pos) /**< \brief (PWM_CMPV) Comparison x Value */ +#define PWM_CMPV_CV(value) ((PWM_CMPV_CV_Msk & ((value) << PWM_CMPV_CV_Pos))) +#define PWM_CMPV_CVM (0x1u << 24) /**< \brief (PWM_CMPV) Comparison x Value Mode */ +/* -------- PWM_CMPVUPD : (PWM Offset: N/A) PWM Comparison 0 Value Update Register -------- */ +#define PWM_CMPVUPD_CVUPD_Pos 0 +#define PWM_CMPVUPD_CVUPD_Msk (0xffffffu << PWM_CMPVUPD_CVUPD_Pos) /**< \brief (PWM_CMPVUPD) Comparison x Value Update */ +#define PWM_CMPVUPD_CVUPD(value) ((PWM_CMPVUPD_CVUPD_Msk & ((value) << PWM_CMPVUPD_CVUPD_Pos))) +#define PWM_CMPVUPD_CVMUPD (0x1u << 24) /**< \brief (PWM_CMPVUPD) Comparison x Value Mode Update */ +/* -------- PWM_CMPM : (PWM Offset: N/A) PWM Comparison 0 Mode Register -------- */ +#define PWM_CMPM_CEN (0x1u << 0) /**< \brief (PWM_CMPM) Comparison x Enable */ +#define PWM_CMPM_CTR_Pos 4 +#define PWM_CMPM_CTR_Msk (0xfu << PWM_CMPM_CTR_Pos) /**< \brief (PWM_CMPM) Comparison x Trigger */ +#define PWM_CMPM_CTR(value) ((PWM_CMPM_CTR_Msk & ((value) << PWM_CMPM_CTR_Pos))) +#define PWM_CMPM_CPR_Pos 8 +#define PWM_CMPM_CPR_Msk (0xfu << PWM_CMPM_CPR_Pos) /**< \brief (PWM_CMPM) Comparison x Period */ +#define PWM_CMPM_CPR(value) ((PWM_CMPM_CPR_Msk & ((value) << PWM_CMPM_CPR_Pos))) +#define PWM_CMPM_CPRCNT_Pos 12 +#define PWM_CMPM_CPRCNT_Msk (0xfu << PWM_CMPM_CPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Period Counter */ +#define PWM_CMPM_CPRCNT(value) ((PWM_CMPM_CPRCNT_Msk & ((value) << PWM_CMPM_CPRCNT_Pos))) +#define PWM_CMPM_CUPR_Pos 16 +#define PWM_CMPM_CUPR_Msk (0xfu << PWM_CMPM_CUPR_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period */ +#define PWM_CMPM_CUPR(value) ((PWM_CMPM_CUPR_Msk & ((value) << PWM_CMPM_CUPR_Pos))) +#define PWM_CMPM_CUPRCNT_Pos 20 +#define PWM_CMPM_CUPRCNT_Msk (0xfu << PWM_CMPM_CUPRCNT_Pos) /**< \brief (PWM_CMPM) Comparison x Update Period Counter */ +#define PWM_CMPM_CUPRCNT(value) ((PWM_CMPM_CUPRCNT_Msk & ((value) << PWM_CMPM_CUPRCNT_Pos))) +/* -------- PWM_CMPMUPD : (PWM Offset: N/A) PWM Comparison 0 Mode Update Register -------- */ +#define PWM_CMPMUPD_CENUPD (0x1u << 0) /**< \brief (PWM_CMPMUPD) Comparison x Enable Update */ +#define PWM_CMPMUPD_CTRUPD_Pos 4 +#define PWM_CMPMUPD_CTRUPD_Msk (0xfu << PWM_CMPMUPD_CTRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Trigger Update */ +#define PWM_CMPMUPD_CTRUPD(value) ((PWM_CMPMUPD_CTRUPD_Msk & ((value) << PWM_CMPMUPD_CTRUPD_Pos))) +#define PWM_CMPMUPD_CPRUPD_Pos 8 +#define PWM_CMPMUPD_CPRUPD_Msk (0xfu << PWM_CMPMUPD_CPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Period Update */ +#define PWM_CMPMUPD_CPRUPD(value) ((PWM_CMPMUPD_CPRUPD_Msk & ((value) << PWM_CMPMUPD_CPRUPD_Pos))) +#define PWM_CMPMUPD_CUPRUPD_Pos 16 +#define PWM_CMPMUPD_CUPRUPD_Msk (0xfu << PWM_CMPMUPD_CUPRUPD_Pos) /**< \brief (PWM_CMPMUPD) Comparison x Update Period Update */ +#define PWM_CMPMUPD_CUPRUPD(value) ((PWM_CMPMUPD_CUPRUPD_Msk & ((value) << PWM_CMPMUPD_CUPRUPD_Pos))) +/* -------- PWM_CMR : (PWM Offset: N/A) PWM Channel Mode Register -------- */ +#define PWM_CMR_CPRE_Pos 0 +#define PWM_CMR_CPRE_Msk (0xfu << PWM_CMR_CPRE_Pos) /**< \brief (PWM_CMR) Channel Pre-scaler */ +#define PWM_CMR_CPRE(value) ((PWM_CMR_CPRE_Msk & ((value) << PWM_CMR_CPRE_Pos))) +#define PWM_CMR_CPRE_MCK (0x0u << 0) /**< \brief (PWM_CMR) Peripheral clock */ +#define PWM_CMR_CPRE_MCK_DIV_2 (0x1u << 0) /**< \brief (PWM_CMR) Peripheral clock/2 */ +#define PWM_CMR_CPRE_MCK_DIV_4 (0x2u << 0) /**< \brief (PWM_CMR) Peripheral clock/4 */ +#define PWM_CMR_CPRE_MCK_DIV_8 (0x3u << 0) /**< \brief (PWM_CMR) Peripheral clock/8 */ +#define PWM_CMR_CPRE_MCK_DIV_16 (0x4u << 0) /**< \brief (PWM_CMR) Peripheral clock/16 */ +#define PWM_CMR_CPRE_MCK_DIV_32 (0x5u << 0) /**< \brief (PWM_CMR) Peripheral clock/32 */ +#define PWM_CMR_CPRE_MCK_DIV_64 (0x6u << 0) /**< \brief (PWM_CMR) Peripheral clock/64 */ +#define PWM_CMR_CPRE_MCK_DIV_128 (0x7u << 0) /**< \brief (PWM_CMR) Peripheral clock/128 */ +#define PWM_CMR_CPRE_MCK_DIV_256 (0x8u << 0) /**< \brief (PWM_CMR) Peripheral clock/256 */ +#define PWM_CMR_CPRE_MCK_DIV_512 (0x9u << 0) /**< \brief (PWM_CMR) Peripheral clock/512 */ +#define PWM_CMR_CPRE_MCK_DIV_1024 (0xAu << 0) /**< \brief (PWM_CMR) Peripheral clock/1024 */ +#define PWM_CMR_CPRE_CLKA (0xBu << 0) /**< \brief (PWM_CMR) Clock A */ +#define PWM_CMR_CPRE_CLKB (0xCu << 0) /**< \brief (PWM_CMR) Clock B */ +#define PWM_CMR_CALG (0x1u << 8) /**< \brief (PWM_CMR) Channel Alignment */ +#define PWM_CMR_CPOL (0x1u << 9) /**< \brief (PWM_CMR) Channel Polarity */ +#define PWM_CMR_CES (0x1u << 10) /**< \brief (PWM_CMR) Counter Event Selection */ +#define PWM_CMR_UPDS (0x1u << 11) /**< \brief (PWM_CMR) Update Selection */ +#define PWM_CMR_DPOLI (0x1u << 12) /**< \brief (PWM_CMR) Disabled Polarity Inverted */ +#define PWM_CMR_TCTS (0x1u << 13) /**< \brief (PWM_CMR) Timer Counter Trigger Selection */ +#define PWM_CMR_DTE (0x1u << 16) /**< \brief (PWM_CMR) Dead-Time Generator Enable */ +#define PWM_CMR_DTHI (0x1u << 17) /**< \brief (PWM_CMR) Dead-Time PWMHx Output Inverted */ +#define PWM_CMR_DTLI (0x1u << 18) /**< \brief (PWM_CMR) Dead-Time PWMLx Output Inverted */ +#define PWM_CMR_PPM (0x1u << 19) /**< \brief (PWM_CMR) Push-Pull Mode */ +/* -------- PWM_CDTY : (PWM Offset: N/A) PWM Channel Duty Cycle Register -------- */ +#define PWM_CDTY_CDTY_Pos 0 +#define PWM_CDTY_CDTY_Msk (0xffffffu << PWM_CDTY_CDTY_Pos) /**< \brief (PWM_CDTY) Channel Duty-Cycle */ +#define PWM_CDTY_CDTY(value) ((PWM_CDTY_CDTY_Msk & ((value) << PWM_CDTY_CDTY_Pos))) +/* -------- PWM_CDTYUPD : (PWM Offset: N/A) PWM Channel Duty Cycle Update Register -------- */ +#define PWM_CDTYUPD_CDTYUPD_Pos 0 +#define PWM_CDTYUPD_CDTYUPD_Msk (0xffffffu << PWM_CDTYUPD_CDTYUPD_Pos) /**< \brief (PWM_CDTYUPD) Channel Duty-Cycle Update */ +#define PWM_CDTYUPD_CDTYUPD(value) ((PWM_CDTYUPD_CDTYUPD_Msk & ((value) << PWM_CDTYUPD_CDTYUPD_Pos))) +/* -------- PWM_CPRD : (PWM Offset: N/A) PWM Channel Period Register -------- */ +#define PWM_CPRD_CPRD_Pos 0 +#define PWM_CPRD_CPRD_Msk (0xffffffu << PWM_CPRD_CPRD_Pos) /**< \brief (PWM_CPRD) Channel Period */ +#define PWM_CPRD_CPRD(value) ((PWM_CPRD_CPRD_Msk & ((value) << PWM_CPRD_CPRD_Pos))) +/* -------- PWM_CPRDUPD : (PWM Offset: N/A) PWM Channel Period Update Register -------- */ +#define PWM_CPRDUPD_CPRDUPD_Pos 0 +#define PWM_CPRDUPD_CPRDUPD_Msk (0xffffffu << PWM_CPRDUPD_CPRDUPD_Pos) /**< \brief (PWM_CPRDUPD) Channel Period Update */ +#define PWM_CPRDUPD_CPRDUPD(value) ((PWM_CPRDUPD_CPRDUPD_Msk & ((value) << PWM_CPRDUPD_CPRDUPD_Pos))) +/* -------- PWM_CCNT : (PWM Offset: N/A) PWM Channel Counter Register -------- */ +#define PWM_CCNT_CNT_Pos 0 +#define PWM_CCNT_CNT_Msk (0xffffffu << PWM_CCNT_CNT_Pos) /**< \brief (PWM_CCNT) Channel Counter Register */ +/* -------- PWM_DT : (PWM Offset: N/A) PWM Channel Dead Time Register -------- */ +#define PWM_DT_DTH_Pos 0 +#define PWM_DT_DTH_Msk (0xffffu << PWM_DT_DTH_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMHx Output */ +#define PWM_DT_DTH(value) ((PWM_DT_DTH_Msk & ((value) << PWM_DT_DTH_Pos))) +#define PWM_DT_DTL_Pos 16 +#define PWM_DT_DTL_Msk (0xffffu << PWM_DT_DTL_Pos) /**< \brief (PWM_DT) Dead-Time Value for PWMLx Output */ +#define PWM_DT_DTL(value) ((PWM_DT_DTL_Msk & ((value) << PWM_DT_DTL_Pos))) +/* -------- PWM_DTUPD : (PWM Offset: N/A) PWM Channel Dead Time Update Register -------- */ +#define PWM_DTUPD_DTHUPD_Pos 0 +#define PWM_DTUPD_DTHUPD_Msk (0xffffu << PWM_DTUPD_DTHUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMHx Output */ +#define PWM_DTUPD_DTHUPD(value) ((PWM_DTUPD_DTHUPD_Msk & ((value) << PWM_DTUPD_DTHUPD_Pos))) +#define PWM_DTUPD_DTLUPD_Pos 16 +#define PWM_DTUPD_DTLUPD_Msk (0xffffu << PWM_DTUPD_DTLUPD_Pos) /**< \brief (PWM_DTUPD) Dead-Time Value Update for PWMLx Output */ +#define PWM_DTUPD_DTLUPD(value) ((PWM_DTUPD_DTLUPD_Msk & ((value) << PWM_DTUPD_DTLUPD_Pos))) +/* -------- PWM_CMUPD0 : (PWM Offset: 0x400) PWM Channel Mode Update Register (ch_num = 0) -------- */ +#define PWM_CMUPD0_CPOLUP (0x1u << 9) /**< \brief (PWM_CMUPD0) Channel Polarity Update */ +#define PWM_CMUPD0_CPOLINVUP (0x1u << 13) /**< \brief (PWM_CMUPD0) Channel Polarity Inversion Update */ +/* -------- PWM_CMUPD1 : (PWM Offset: 0x420) PWM Channel Mode Update Register (ch_num = 1) -------- */ +#define PWM_CMUPD1_CPOLUP (0x1u << 9) /**< \brief (PWM_CMUPD1) Channel Polarity Update */ +#define PWM_CMUPD1_CPOLINVUP (0x1u << 13) /**< \brief (PWM_CMUPD1) Channel Polarity Inversion Update */ +/* -------- PWM_ETRG1 : (PWM Offset: 0x42C) PWM External Trigger Register (trg_num = 1) -------- */ +#define PWM_ETRG1_MAXCNT_Pos 0 +#define PWM_ETRG1_MAXCNT_Msk (0xffffffu << PWM_ETRG1_MAXCNT_Pos) /**< \brief (PWM_ETRG1) Maximum Counter value */ +#define PWM_ETRG1_MAXCNT(value) ((PWM_ETRG1_MAXCNT_Msk & ((value) << PWM_ETRG1_MAXCNT_Pos))) +#define PWM_ETRG1_TRGMODE_Pos 24 +#define PWM_ETRG1_TRGMODE_Msk (0x3u << PWM_ETRG1_TRGMODE_Pos) /**< \brief (PWM_ETRG1) External Trigger Mode */ +#define PWM_ETRG1_TRGMODE(value) ((PWM_ETRG1_TRGMODE_Msk & ((value) << PWM_ETRG1_TRGMODE_Pos))) +#define PWM_ETRG1_TRGMODE_OFF (0x0u << 24) /**< \brief (PWM_ETRG1) External trigger is not enabled. */ +#define PWM_ETRG1_TRGMODE_MODE1 (0x1u << 24) /**< \brief (PWM_ETRG1) External PWM Reset Mode */ +#define PWM_ETRG1_TRGMODE_MODE2 (0x2u << 24) /**< \brief (PWM_ETRG1) External PWM Start Mode */ +#define PWM_ETRG1_TRGMODE_MODE3 (0x3u << 24) /**< \brief (PWM_ETRG1) Cycle-by-cycle Duty Mode */ +#define PWM_ETRG1_TRGEDGE (0x1u << 28) /**< \brief (PWM_ETRG1) Edge Selection */ +#define PWM_ETRG1_TRGEDGE_FALLING_ZERO (0x0u << 28) /**< \brief (PWM_ETRG1) TRGMODE = 1: TRGINx event detection on falling edge.TRGMODE = 2, 3: TRGINx active level is 0 */ +#define PWM_ETRG1_TRGEDGE_RISING_ONE (0x1u << 28) /**< \brief (PWM_ETRG1) TRGMODE = 1: TRGINx event detection on rising edge.TRGMODE = 2, 3: TRGINx active level is 1 */ +#define PWM_ETRG1_TRGFILT (0x1u << 29) /**< \brief (PWM_ETRG1) Filtered input */ +#define PWM_ETRG1_TRGSRC (0x1u << 30) /**< \brief (PWM_ETRG1) Trigger Source */ +#define PWM_ETRG1_RFEN (0x1u << 31) /**< \brief (PWM_ETRG1) Recoverable Fault Enable */ +/* -------- PWM_LEBR1 : (PWM Offset: 0x430) PWM Leading-Edge Blanking Register (trg_num = 1) -------- */ +#define PWM_LEBR1_LEBDELAY_Pos 0 +#define PWM_LEBR1_LEBDELAY_Msk (0x7fu << PWM_LEBR1_LEBDELAY_Pos) /**< \brief (PWM_LEBR1) Leading-Edge Blanking Delay for TRGINx */ +#define PWM_LEBR1_LEBDELAY(value) ((PWM_LEBR1_LEBDELAY_Msk & ((value) << PWM_LEBR1_LEBDELAY_Pos))) +#define PWM_LEBR1_PWMLFEN (0x1u << 16) /**< \brief (PWM_LEBR1) PWML Falling Edge Enable */ +#define PWM_LEBR1_PWMLREN (0x1u << 17) /**< \brief (PWM_LEBR1) PWML Rising Edge Enable */ +#define PWM_LEBR1_PWMHFEN (0x1u << 18) /**< \brief (PWM_LEBR1) PWMH Falling Edge Enable */ +#define PWM_LEBR1_PWMHREN (0x1u << 19) /**< \brief (PWM_LEBR1) PWMH Rising Edge Enable */ +/* -------- PWM_CMUPD2 : (PWM Offset: 0x440) PWM Channel Mode Update Register (ch_num = 2) -------- */ +#define PWM_CMUPD2_CPOLUP (0x1u << 9) /**< \brief (PWM_CMUPD2) Channel Polarity Update */ +#define PWM_CMUPD2_CPOLINVUP (0x1u << 13) /**< \brief (PWM_CMUPD2) Channel Polarity Inversion Update */ +/* -------- PWM_ETRG2 : (PWM Offset: 0x44C) PWM External Trigger Register (trg_num = 2) -------- */ +#define PWM_ETRG2_MAXCNT_Pos 0 +#define PWM_ETRG2_MAXCNT_Msk (0xffffffu << PWM_ETRG2_MAXCNT_Pos) /**< \brief (PWM_ETRG2) Maximum Counter value */ +#define PWM_ETRG2_MAXCNT(value) ((PWM_ETRG2_MAXCNT_Msk & ((value) << PWM_ETRG2_MAXCNT_Pos))) +#define PWM_ETRG2_TRGMODE_Pos 24 +#define PWM_ETRG2_TRGMODE_Msk (0x3u << PWM_ETRG2_TRGMODE_Pos) /**< \brief (PWM_ETRG2) External Trigger Mode */ +#define PWM_ETRG2_TRGMODE(value) ((PWM_ETRG2_TRGMODE_Msk & ((value) << PWM_ETRG2_TRGMODE_Pos))) +#define PWM_ETRG2_TRGMODE_OFF (0x0u << 24) /**< \brief (PWM_ETRG2) External trigger is not enabled. */ +#define PWM_ETRG2_TRGMODE_MODE1 (0x1u << 24) /**< \brief (PWM_ETRG2) External PWM Reset Mode */ +#define PWM_ETRG2_TRGMODE_MODE2 (0x2u << 24) /**< \brief (PWM_ETRG2) External PWM Start Mode */ +#define PWM_ETRG2_TRGMODE_MODE3 (0x3u << 24) /**< \brief (PWM_ETRG2) Cycle-by-cycle Duty Mode */ +#define PWM_ETRG2_TRGEDGE (0x1u << 28) /**< \brief (PWM_ETRG2) Edge Selection */ +#define PWM_ETRG2_TRGEDGE_FALLING_ZERO (0x0u << 28) /**< \brief (PWM_ETRG2) TRGMODE = 1: TRGINx event detection on falling edge.TRGMODE = 2, 3: TRGINx active level is 0 */ +#define PWM_ETRG2_TRGEDGE_RISING_ONE (0x1u << 28) /**< \brief (PWM_ETRG2) TRGMODE = 1: TRGINx event detection on rising edge.TRGMODE = 2, 3: TRGINx active level is 1 */ +#define PWM_ETRG2_TRGFILT (0x1u << 29) /**< \brief (PWM_ETRG2) Filtered input */ +#define PWM_ETRG2_TRGSRC (0x1u << 30) /**< \brief (PWM_ETRG2) Trigger Source */ +#define PWM_ETRG2_RFEN (0x1u << 31) /**< \brief (PWM_ETRG2) Recoverable Fault Enable */ +/* -------- PWM_LEBR2 : (PWM Offset: 0x450) PWM Leading-Edge Blanking Register (trg_num = 2) -------- */ +#define PWM_LEBR2_LEBDELAY_Pos 0 +#define PWM_LEBR2_LEBDELAY_Msk (0x7fu << PWM_LEBR2_LEBDELAY_Pos) /**< \brief (PWM_LEBR2) Leading-Edge Blanking Delay for TRGINx */ +#define PWM_LEBR2_LEBDELAY(value) ((PWM_LEBR2_LEBDELAY_Msk & ((value) << PWM_LEBR2_LEBDELAY_Pos))) +#define PWM_LEBR2_PWMLFEN (0x1u << 16) /**< \brief (PWM_LEBR2) PWML Falling Edge Enable */ +#define PWM_LEBR2_PWMLREN (0x1u << 17) /**< \brief (PWM_LEBR2) PWML Rising Edge Enable */ +#define PWM_LEBR2_PWMHFEN (0x1u << 18) /**< \brief (PWM_LEBR2) PWMH Falling Edge Enable */ +#define PWM_LEBR2_PWMHREN (0x1u << 19) /**< \brief (PWM_LEBR2) PWMH Rising Edge Enable */ +/* -------- PWM_CMUPD3 : (PWM Offset: 0x460) PWM Channel Mode Update Register (ch_num = 3) -------- */ +#define PWM_CMUPD3_CPOLUP (0x1u << 9) /**< \brief (PWM_CMUPD3) Channel Polarity Update */ +#define PWM_CMUPD3_CPOLINVUP (0x1u << 13) /**< \brief (PWM_CMUPD3) Channel Polarity Inversion Update */ + +/*@}*/ + + +#endif /* _SAME70_PWM_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h new file mode 100644 index 00000000..f10534c5 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h @@ -0,0 +1,235 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_QSPI_COMPONENT_ +#define _SAME70_QSPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Quad Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAME70_QSPI Quad Serial Peripheral Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Qspi hardware registers */ +typedef struct { + __O uint32_t QSPI_CR; /**< \brief (Qspi Offset: 0x00) Control Register */ + __IO uint32_t QSPI_MR; /**< \brief (Qspi Offset: 0x04) Mode Register */ + __I uint32_t QSPI_RDR; /**< \brief (Qspi Offset: 0x08) Receive Data Register */ + __O uint32_t QSPI_TDR; /**< \brief (Qspi Offset: 0x0C) Transmit Data Register */ + __I uint32_t QSPI_SR; /**< \brief (Qspi Offset: 0x10) Status Register */ + __O uint32_t QSPI_IER; /**< \brief (Qspi Offset: 0x14) Interrupt Enable Register */ + __O uint32_t QSPI_IDR; /**< \brief (Qspi Offset: 0x18) Interrupt Disable Register */ + __I uint32_t QSPI_IMR; /**< \brief (Qspi Offset: 0x1C) Interrupt Mask Register */ + __IO uint32_t QSPI_SCR; /**< \brief (Qspi Offset: 0x20) Serial Clock Register */ + __I uint32_t Reserved1[3]; + __IO uint32_t QSPI_IAR; /**< \brief (Qspi Offset: 0x30) Instruction Address Register */ + __IO uint32_t QSPI_ICR; /**< \brief (Qspi Offset: 0x34) Instruction Code Register */ + __IO uint32_t QSPI_IFR; /**< \brief (Qspi Offset: 0x38) Instruction Frame Register */ + __I uint32_t Reserved2[1]; + __IO uint32_t QSPI_SMR; /**< \brief (Qspi Offset: 0x40) Scrambling Mode Register */ + __O uint32_t QSPI_SKR; /**< \brief (Qspi Offset: 0x44) Scrambling Key Register */ + __I uint32_t Reserved3[39]; + __IO uint32_t QSPI_WPMR; /**< \brief (Qspi Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t QSPI_WPSR; /**< \brief (Qspi Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved4[4]; + __I uint32_t QSPI_VERSION; /**< \brief (Qspi Offset: 0x00FC) Version Register */ +} Qspi; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- QSPI_CR : (QSPI Offset: 0x00) Control Register -------- */ +#define QSPI_CR_QSPIEN (0x1u << 0) /**< \brief (QSPI_CR) QSPI Enable */ +#define QSPI_CR_QSPIDIS (0x1u << 1) /**< \brief (QSPI_CR) QSPI Disable */ +#define QSPI_CR_SWRST (0x1u << 7) /**< \brief (QSPI_CR) QSPI Software Reset */ +#define QSPI_CR_LASTXFER (0x1u << 24) /**< \brief (QSPI_CR) Last Transfer */ +/* -------- QSPI_MR : (QSPI Offset: 0x04) Mode Register -------- */ +#define QSPI_MR_SMM (0x1u << 0) /**< \brief (QSPI_MR) Serial Memory Mode */ +#define QSPI_MR_SMM_SPI (0x0u << 0) /**< \brief (QSPI_MR) The QSPI is in SPI mode. */ +#define QSPI_MR_SMM_MEMORY (0x1u << 0) /**< \brief (QSPI_MR) The QSPI is in Serial Memory mode. */ +#define QSPI_MR_LLB (0x1u << 1) /**< \brief (QSPI_MR) Local Loopback Enable */ +#define QSPI_MR_LLB_DISABLED (0x0u << 1) /**< \brief (QSPI_MR) Local loopback path disabled. */ +#define QSPI_MR_LLB_ENABLED (0x1u << 1) /**< \brief (QSPI_MR) Local loopback path enabled. */ +#define QSPI_MR_WDRBT (0x1u << 2) /**< \brief (QSPI_MR) Wait Data Read Before Transfer */ +#define QSPI_MR_WDRBT_DISABLED (0x0u << 2) /**< \brief (QSPI_MR) No effect. In SPI mode, a transfer can be initiated whatever the state of the QSPI_RDR is. */ +#define QSPI_MR_WDRBT_ENABLED (0x1u << 2) /**< \brief (QSPI_MR) In SPI mode, a transfer can start only if the QSPI_RDR is empty, i.e., does not contain any unread data. This mode prevents overrun error in reception. */ +#define QSPI_MR_CSMODE_Pos 4 +#define QSPI_MR_CSMODE_Msk (0x3u << QSPI_MR_CSMODE_Pos) /**< \brief (QSPI_MR) Chip Select Mode */ +#define QSPI_MR_CSMODE(value) ((QSPI_MR_CSMODE_Msk & ((value) << QSPI_MR_CSMODE_Pos))) +#define QSPI_MR_CSMODE_NOT_RELOADED (0x0u << 4) /**< \brief (QSPI_MR) The chip select is deasserted if TD has not been reloaded before the end of the current transfer. */ +#define QSPI_MR_CSMODE_LASTXFER (0x1u << 4) /**< \brief (QSPI_MR) The chip select is deasserted when the bit LASTXFER is written at 1 and the character written in TD has been transferred. */ +#define QSPI_MR_CSMODE_SYSTEMATICALLY (0x2u << 4) /**< \brief (QSPI_MR) The chip select is deasserted systematically after each transfer. */ +#define QSPI_MR_NBBITS_Pos 8 +#define QSPI_MR_NBBITS_Msk (0xfu << QSPI_MR_NBBITS_Pos) /**< \brief (QSPI_MR) Number Of Bits Per Transfer */ +#define QSPI_MR_NBBITS(value) ((QSPI_MR_NBBITS_Msk & ((value) << QSPI_MR_NBBITS_Pos))) +#define QSPI_MR_NBBITS_8_BIT (0x0u << 8) /**< \brief (QSPI_MR) 8 bits for transfer */ +#define QSPI_MR_NBBITS_9_BIT (0x1u << 8) /**< \brief (QSPI_MR) 9 bits for transfer */ +#define QSPI_MR_NBBITS_10_BIT (0x2u << 8) /**< \brief (QSPI_MR) 10 bits for transfer */ +#define QSPI_MR_NBBITS_11_BIT (0x3u << 8) /**< \brief (QSPI_MR) 11 bits for transfer */ +#define QSPI_MR_NBBITS_12_BIT (0x4u << 8) /**< \brief (QSPI_MR) 12 bits for transfer */ +#define QSPI_MR_NBBITS_13_BIT (0x5u << 8) /**< \brief (QSPI_MR) 13 bits for transfer */ +#define QSPI_MR_NBBITS_14_BIT (0x6u << 8) /**< \brief (QSPI_MR) 14 bits for transfer */ +#define QSPI_MR_NBBITS_15_BIT (0x7u << 8) /**< \brief (QSPI_MR) 15 bits for transfer */ +#define QSPI_MR_NBBITS_16_BIT (0x8u << 8) /**< \brief (QSPI_MR) 16 bits for transfer */ +#define QSPI_MR_DLYBCT_Pos 16 +#define QSPI_MR_DLYBCT_Msk (0xffu << QSPI_MR_DLYBCT_Pos) /**< \brief (QSPI_MR) Delay Between Consecutive Transfers */ +#define QSPI_MR_DLYBCT(value) ((QSPI_MR_DLYBCT_Msk & ((value) << QSPI_MR_DLYBCT_Pos))) +#define QSPI_MR_DLYCS_Pos 24 +#define QSPI_MR_DLYCS_Msk (0xffu << QSPI_MR_DLYCS_Pos) /**< \brief (QSPI_MR) Minimum Inactive QCS Delay */ +#define QSPI_MR_DLYCS(value) ((QSPI_MR_DLYCS_Msk & ((value) << QSPI_MR_DLYCS_Pos))) +/* -------- QSPI_RDR : (QSPI Offset: 0x08) Receive Data Register -------- */ +#define QSPI_RDR_RD_Pos 0 +#define QSPI_RDR_RD_Msk (0xffffu << QSPI_RDR_RD_Pos) /**< \brief (QSPI_RDR) Receive Data */ +/* -------- QSPI_TDR : (QSPI Offset: 0x0C) Transmit Data Register -------- */ +#define QSPI_TDR_TD_Pos 0 +#define QSPI_TDR_TD_Msk (0xffffu << QSPI_TDR_TD_Pos) /**< \brief (QSPI_TDR) Transmit Data */ +#define QSPI_TDR_TD(value) ((QSPI_TDR_TD_Msk & ((value) << QSPI_TDR_TD_Pos))) +/* -------- QSPI_SR : (QSPI Offset: 0x10) Status Register -------- */ +#define QSPI_SR_RDRF (0x1u << 0) /**< \brief (QSPI_SR) Receive Data Register Full (cleared by reading SPI_RDR) */ +#define QSPI_SR_TDRE (0x1u << 1) /**< \brief (QSPI_SR) Transmit Data Register Empty (cleared by writing SPI_TDR) */ +#define QSPI_SR_TXEMPTY (0x1u << 2) /**< \brief (QSPI_SR) Transmission Registers Empty (cleared by writing SPI_TDR) */ +#define QSPI_SR_OVRES (0x1u << 3) /**< \brief (QSPI_SR) Overrun Error Status (cleared on read) */ +#define QSPI_SR_CSR (0x1u << 8) /**< \brief (QSPI_SR) Chip Select Rise */ +#define QSPI_SR_CSS (0x1u << 9) /**< \brief (QSPI_SR) Chip Select Status */ +#define QSPI_SR_INSTRE (0x1u << 10) /**< \brief (QSPI_SR) Instruction End Status */ +#define QSPI_SR_QSPIENS (0x1u << 24) /**< \brief (QSPI_SR) QSPI Enable Status */ +/* -------- QSPI_IER : (QSPI Offset: 0x14) Interrupt Enable Register -------- */ +#define QSPI_IER_RDRF (0x1u << 0) /**< \brief (QSPI_IER) Receive Data Register Full Interrupt Enable */ +#define QSPI_IER_TDRE (0x1u << 1) /**< \brief (QSPI_IER) Transmit Data Register Empty Interrupt Enable */ +#define QSPI_IER_TXEMPTY (0x1u << 2) /**< \brief (QSPI_IER) Transmission Registers Empty Enable */ +#define QSPI_IER_OVRES (0x1u << 3) /**< \brief (QSPI_IER) Overrun Error Interrupt Enable */ +#define QSPI_IER_CSR (0x1u << 8) /**< \brief (QSPI_IER) Chip Select Rise Interrupt Enable */ +#define QSPI_IER_CSS (0x1u << 9) /**< \brief (QSPI_IER) Chip Select Status Interrupt Enable */ +#define QSPI_IER_INSTRE (0x1u << 10) /**< \brief (QSPI_IER) Instruction End Interrupt Enable */ +/* -------- QSPI_IDR : (QSPI Offset: 0x18) Interrupt Disable Register -------- */ +#define QSPI_IDR_RDRF (0x1u << 0) /**< \brief (QSPI_IDR) Receive Data Register Full Interrupt Disable */ +#define QSPI_IDR_TDRE (0x1u << 1) /**< \brief (QSPI_IDR) Transmit Data Register Empty Interrupt Disable */ +#define QSPI_IDR_TXEMPTY (0x1u << 2) /**< \brief (QSPI_IDR) Transmission Registers Empty Disable */ +#define QSPI_IDR_OVRES (0x1u << 3) /**< \brief (QSPI_IDR) Overrun Error Interrupt Disable */ +#define QSPI_IDR_CSR (0x1u << 8) /**< \brief (QSPI_IDR) Chip Select Rise Interrupt Disable */ +#define QSPI_IDR_CSS (0x1u << 9) /**< \brief (QSPI_IDR) Chip Select Status Interrupt Disable */ +#define QSPI_IDR_INSTRE (0x1u << 10) /**< \brief (QSPI_IDR) Instruction End Interrupt Disable */ +/* -------- QSPI_IMR : (QSPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define QSPI_IMR_RDRF (0x1u << 0) /**< \brief (QSPI_IMR) Receive Data Register Full Interrupt Mask */ +#define QSPI_IMR_TDRE (0x1u << 1) /**< \brief (QSPI_IMR) Transmit Data Register Empty Interrupt Mask */ +#define QSPI_IMR_TXEMPTY (0x1u << 2) /**< \brief (QSPI_IMR) Transmission Registers Empty Mask */ +#define QSPI_IMR_OVRES (0x1u << 3) /**< \brief (QSPI_IMR) Overrun Error Interrupt Mask */ +#define QSPI_IMR_CSR (0x1u << 8) /**< \brief (QSPI_IMR) Chip Select Rise Interrupt Mask */ +#define QSPI_IMR_CSS (0x1u << 9) /**< \brief (QSPI_IMR) Chip Select Status Interrupt Mask */ +#define QSPI_IMR_INSTRE (0x1u << 10) /**< \brief (QSPI_IMR) Instruction End Interrupt Mask */ +/* -------- QSPI_SCR : (QSPI Offset: 0x20) Serial Clock Register -------- */ +#define QSPI_SCR_CPOL (0x1u << 0) /**< \brief (QSPI_SCR) Clock Polarity */ +#define QSPI_SCR_CPHA (0x1u << 1) /**< \brief (QSPI_SCR) Clock Phase */ +#define QSPI_SCR_SCBR_Pos 8 +#define QSPI_SCR_SCBR_Msk (0xffu << QSPI_SCR_SCBR_Pos) /**< \brief (QSPI_SCR) Serial Clock Baud Rate */ +#define QSPI_SCR_SCBR(value) ((QSPI_SCR_SCBR_Msk & ((value) << QSPI_SCR_SCBR_Pos))) +#define QSPI_SCR_DLYBS_Pos 16 +#define QSPI_SCR_DLYBS_Msk (0xffu << QSPI_SCR_DLYBS_Pos) /**< \brief (QSPI_SCR) Delay Before QSCK */ +#define QSPI_SCR_DLYBS(value) ((QSPI_SCR_DLYBS_Msk & ((value) << QSPI_SCR_DLYBS_Pos))) +/* -------- QSPI_IAR : (QSPI Offset: 0x30) Instruction Address Register -------- */ +#define QSPI_IAR_ADDR_Pos 0 +#define QSPI_IAR_ADDR_Msk (0xffffffffu << QSPI_IAR_ADDR_Pos) /**< \brief (QSPI_IAR) Address */ +#define QSPI_IAR_ADDR(value) ((QSPI_IAR_ADDR_Msk & ((value) << QSPI_IAR_ADDR_Pos))) +/* -------- QSPI_ICR : (QSPI Offset: 0x34) Instruction Code Register -------- */ +#define QSPI_ICR_INST_Pos 0 +#define QSPI_ICR_INST_Msk (0xffu << QSPI_ICR_INST_Pos) /**< \brief (QSPI_ICR) Instruction Code */ +#define QSPI_ICR_INST(value) ((QSPI_ICR_INST_Msk & ((value) << QSPI_ICR_INST_Pos))) +#define QSPI_ICR_OPT_Pos 16 +#define QSPI_ICR_OPT_Msk (0xffu << QSPI_ICR_OPT_Pos) /**< \brief (QSPI_ICR) Option Code */ +#define QSPI_ICR_OPT(value) ((QSPI_ICR_OPT_Msk & ((value) << QSPI_ICR_OPT_Pos))) +/* -------- QSPI_IFR : (QSPI Offset: 0x38) Instruction Frame Register -------- */ +#define QSPI_IFR_WIDTH_Pos 0 +#define QSPI_IFR_WIDTH_Msk (0x7u << QSPI_IFR_WIDTH_Pos) /**< \brief (QSPI_IFR) Width of Instruction Code, Address, Option Code and Data */ +#define QSPI_IFR_WIDTH(value) ((QSPI_IFR_WIDTH_Msk & ((value) << QSPI_IFR_WIDTH_Pos))) +#define QSPI_IFR_WIDTH_SINGLE_BIT_SPI (0x0u << 0) /**< \brief (QSPI_IFR) Instruction: Single-bit SPI / Address-Option: Single-bit SPI / Data: Single-bit SPI */ +#define QSPI_IFR_WIDTH_DUAL_OUTPUT (0x1u << 0) /**< \brief (QSPI_IFR) Instruction: Single-bit SPI / Address-Option: Single-bit SPI / Data: Dual SPI */ +#define QSPI_IFR_WIDTH_QUAD_OUTPUT (0x2u << 0) /**< \brief (QSPI_IFR) Instruction: Single-bit SPI / Address-Option: Single-bit SPI / Data: Quad SPI */ +#define QSPI_IFR_WIDTH_DUAL_IO (0x3u << 0) /**< \brief (QSPI_IFR) Instruction: Single-bit SPI / Address-Option: Dual SPI / Data: Dual SPI */ +#define QSPI_IFR_WIDTH_QUAD_IO (0x4u << 0) /**< \brief (QSPI_IFR) Instruction: Single-bit SPI / Address-Option: Quad SPI / Data: Quad SPI */ +#define QSPI_IFR_WIDTH_DUAL_CMD (0x5u << 0) /**< \brief (QSPI_IFR) Instruction: Dual SPI / Address-Option: Dual SPI / Data: Dual SPI */ +#define QSPI_IFR_WIDTH_QUAD_CMD (0x6u << 0) /**< \brief (QSPI_IFR) Instruction: Quad SPI / Address-Option: Quad SPI / Data: Quad SPI */ +#define QSPI_IFR_INSTEN (0x1u << 4) /**< \brief (QSPI_IFR) Instruction Enable */ +#define QSPI_IFR_ADDREN (0x1u << 5) /**< \brief (QSPI_IFR) Address Enable */ +#define QSPI_IFR_OPTEN (0x1u << 6) /**< \brief (QSPI_IFR) Option Enable */ +#define QSPI_IFR_DATAEN (0x1u << 7) /**< \brief (QSPI_IFR) Data Enable */ +#define QSPI_IFR_OPTL_Pos 8 +#define QSPI_IFR_OPTL_Msk (0x3u << QSPI_IFR_OPTL_Pos) /**< \brief (QSPI_IFR) Option Code Length */ +#define QSPI_IFR_OPTL(value) ((QSPI_IFR_OPTL_Msk & ((value) << QSPI_IFR_OPTL_Pos))) +#define QSPI_IFR_OPTL_OPTION_1BIT (0x0u << 8) /**< \brief (QSPI_IFR) The option code is 1 bit long. */ +#define QSPI_IFR_OPTL_OPTION_2BIT (0x1u << 8) /**< \brief (QSPI_IFR) The option code is 2 bits long. */ +#define QSPI_IFR_OPTL_OPTION_4BIT (0x2u << 8) /**< \brief (QSPI_IFR) The option code is 4 bits long. */ +#define QSPI_IFR_OPTL_OPTION_8BIT (0x3u << 8) /**< \brief (QSPI_IFR) The option code is 8 bits long. */ +#define QSPI_IFR_ADDRL (0x1u << 10) /**< \brief (QSPI_IFR) Address Length */ +#define QSPI_IFR_ADDRL_24_BIT (0x0u << 10) /**< \brief (QSPI_IFR) The address is 24 bits long. */ +#define QSPI_IFR_ADDRL_32_BIT (0x1u << 10) /**< \brief (QSPI_IFR) The address is 32 bits long. */ +#define QSPI_IFR_TFRTYP_Pos 12 +#define QSPI_IFR_TFRTYP_Msk (0x3u << QSPI_IFR_TFRTYP_Pos) /**< \brief (QSPI_IFR) Data Transfer Type */ +#define QSPI_IFR_TFRTYP(value) ((QSPI_IFR_TFRTYP_Msk & ((value) << QSPI_IFR_TFRTYP_Pos))) +#define QSPI_IFR_TFRTYP_TRSFR_READ (0x0u << 12) /**< \brief (QSPI_IFR) Read transfer from the serial memory.Scrambling is not performed.Read at random location (fetch) in the serial Flash memory is not possible. */ +#define QSPI_IFR_TFRTYP_TRSFR_READ_MEMORY (0x1u << 12) /**< \brief (QSPI_IFR) Read data transfer from the serial memory.If enabled, scrambling is performed.Read at random location (fetch) in the serial Flash memory is possible. */ +#define QSPI_IFR_TFRTYP_TRSFR_WRITE (0x2u << 12) /**< \brief (QSPI_IFR) Write transfer into the serial memory.Scrambling is not performed. */ +#define QSPI_IFR_TFRTYP_TRSFR_WRITE_MEMORY (0x3u << 12) /**< \brief (QSPI_IFR) Write data transfer into the serial memory.If enabled, scrambling is performed. */ +#define QSPI_IFR_CRM (0x1u << 14) /**< \brief (QSPI_IFR) Continuous Read Mode */ +#define QSPI_IFR_CRM_DISABLED (0x0u << 14) /**< \brief (QSPI_IFR) The Continuous Read mode is disabled. */ +#define QSPI_IFR_CRM_ENABLED (0x1u << 14) /**< \brief (QSPI_IFR) The Continuous Read mode is enabled. */ +#define QSPI_IFR_NBDUM_Pos 16 +#define QSPI_IFR_NBDUM_Msk (0x1fu << QSPI_IFR_NBDUM_Pos) /**< \brief (QSPI_IFR) Number Of Dummy Cycles */ +#define QSPI_IFR_NBDUM(value) ((QSPI_IFR_NBDUM_Msk & ((value) << QSPI_IFR_NBDUM_Pos))) +/* -------- QSPI_SMR : (QSPI Offset: 0x40) Scrambling Mode Register -------- */ +#define QSPI_SMR_SCREN (0x1u << 0) /**< \brief (QSPI_SMR) Scrambling/Unscrambling Enable */ +#define QSPI_SMR_SCREN_DISABLED (0x0u << 0) /**< \brief (QSPI_SMR) The scrambling/unscrambling is disabled. */ +#define QSPI_SMR_SCREN_ENABLED (0x1u << 0) /**< \brief (QSPI_SMR) The scrambling/unscrambling is enabled. */ +#define QSPI_SMR_RVDIS (0x1u << 1) /**< \brief (QSPI_SMR) Scrambling/Unscrambling Random Value Disable */ +/* -------- QSPI_SKR : (QSPI Offset: 0x44) Scrambling Key Register -------- */ +#define QSPI_SKR_USRK_Pos 0 +#define QSPI_SKR_USRK_Msk (0xffffffffu << QSPI_SKR_USRK_Pos) /**< \brief (QSPI_SKR) Scrambling User Key */ +#define QSPI_SKR_USRK(value) ((QSPI_SKR_USRK_Msk & ((value) << QSPI_SKR_USRK_Pos))) +/* -------- QSPI_WPMR : (QSPI Offset: 0xE4) Write Protection Mode Register -------- */ +#define QSPI_WPMR_WPEN (0x1u << 0) /**< \brief (QSPI_WPMR) Write Protection Enable */ +#define QSPI_WPMR_WPKEY_Pos 8 +#define QSPI_WPMR_WPKEY_Msk (0xffffffu << QSPI_WPMR_WPKEY_Pos) /**< \brief (QSPI_WPMR) Write Protection Key */ +#define QSPI_WPMR_WPKEY(value) ((QSPI_WPMR_WPKEY_Msk & ((value) << QSPI_WPMR_WPKEY_Pos))) +#define QSPI_WPMR_WPKEY_PASSWD (0x515350u << 8) /**< \brief (QSPI_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- QSPI_WPSR : (QSPI Offset: 0xE8) Write Protection Status Register -------- */ +#define QSPI_WPSR_WPVS (0x1u << 0) /**< \brief (QSPI_WPSR) Write Protection Violation Status */ +#define QSPI_WPSR_WPVSRC_Pos 8 +#define QSPI_WPSR_WPVSRC_Msk (0xffu << QSPI_WPSR_WPVSRC_Pos) /**< \brief (QSPI_WPSR) Write Protection Violation Source */ +/* -------- QSPI_VERSION : (QSPI Offset: 0x00FC) Version Register -------- */ +#define QSPI_VERSION_VERSION_Pos 0 +#define QSPI_VERSION_VERSION_Msk (0xfffu << QSPI_VERSION_VERSION_Pos) /**< \brief (QSPI_VERSION) Hardware Module Version */ +#define QSPI_VERSION_MFN_Pos 16 +#define QSPI_VERSION_MFN_Msk (0x7u << QSPI_VERSION_MFN_Pos) /**< \brief (QSPI_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_QSPI_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h new file mode 100644 index 00000000..bd639b9c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h @@ -0,0 +1,84 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RSTC_COMPONENT_ +#define _SAME70_RSTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reset Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_RSTC Reset Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rstc hardware registers */ +typedef struct { + __O uint32_t RSTC_CR; /**< \brief (Rstc Offset: 0x00) Control Register */ + __I uint32_t RSTC_SR; /**< \brief (Rstc Offset: 0x04) Status Register */ + __IO uint32_t RSTC_MR; /**< \brief (Rstc Offset: 0x08) Mode Register */ +} Rstc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RSTC_CR : (RSTC Offset: 0x00) Control Register -------- */ +#define RSTC_CR_PROCRST (0x1u << 0) /**< \brief (RSTC_CR) Processor Reset */ +#define RSTC_CR_EXTRST (0x1u << 3) /**< \brief (RSTC_CR) External Reset */ +#define RSTC_CR_KEY_Pos 24 +#define RSTC_CR_KEY_Msk (0xffu << RSTC_CR_KEY_Pos) /**< \brief (RSTC_CR) System Reset Key */ +#define RSTC_CR_KEY(value) ((RSTC_CR_KEY_Msk & ((value) << RSTC_CR_KEY_Pos))) +#define RSTC_CR_KEY_PASSWD (0xA5u << 24) /**< \brief (RSTC_CR) Writing any other value in this field aborts the write operation. */ +/* -------- RSTC_SR : (RSTC Offset: 0x04) Status Register -------- */ +#define RSTC_SR_URSTS (0x1u << 0) /**< \brief (RSTC_SR) User Reset Status */ +#define RSTC_SR_RSTTYP_Pos 8 +#define RSTC_SR_RSTTYP_Msk (0x7u << RSTC_SR_RSTTYP_Pos) /**< \brief (RSTC_SR) Reset Type */ +#define RSTC_SR_RSTTYP_GENERAL_RST (0x0u << 8) /**< \brief (RSTC_SR) First power-up reset */ +#define RSTC_SR_RSTTYP_BACKUP_RST (0x1u << 8) /**< \brief (RSTC_SR) Return from Backup Mode */ +#define RSTC_SR_RSTTYP_WDT_RST (0x2u << 8) /**< \brief (RSTC_SR) Watchdog fault occurred */ +#define RSTC_SR_RSTTYP_SOFT_RST (0x3u << 8) /**< \brief (RSTC_SR) Processor reset required by the software */ +#define RSTC_SR_RSTTYP_USER_RST (0x4u << 8) /**< \brief (RSTC_SR) NRST pin detected low */ +#define RSTC_SR_NRSTL (0x1u << 16) /**< \brief (RSTC_SR) NRST Pin Level */ +#define RSTC_SR_SRCMP (0x1u << 17) /**< \brief (RSTC_SR) Software Reset Command in Progress */ +/* -------- RSTC_MR : (RSTC Offset: 0x08) Mode Register -------- */ +#define RSTC_MR_URSTEN (0x1u << 0) /**< \brief (RSTC_MR) User Reset Enable */ +#define RSTC_MR_URSTIEN (0x1u << 4) /**< \brief (RSTC_MR) User Reset Interrupt Enable */ +#define RSTC_MR_ERSTL_Pos 8 +#define RSTC_MR_ERSTL_Msk (0xfu << RSTC_MR_ERSTL_Pos) /**< \brief (RSTC_MR) External Reset Length */ +#define RSTC_MR_ERSTL(value) ((RSTC_MR_ERSTL_Msk & ((value) << RSTC_MR_ERSTL_Pos))) +#define RSTC_MR_KEY_Pos 24 +#define RSTC_MR_KEY_Msk (0xffu << RSTC_MR_KEY_Pos) /**< \brief (RSTC_MR) Write Access Password */ +#define RSTC_MR_KEY(value) ((RSTC_MR_KEY_Msk & ((value) << RSTC_MR_KEY_Pos))) +#define RSTC_MR_KEY_PASSWD (0xA5u << 24) /**< \brief (RSTC_MR) Writing any other value in this field aborts the write operation.Always reads as 0. */ + +/*@}*/ + + +#endif /* _SAME70_RSTC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h new file mode 100644 index 00000000..129c659e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h @@ -0,0 +1,77 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RSWDT_COMPONENT_ +#define _SAME70_RSWDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Reinforced Safety Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAME70_RSWDT Reinforced Safety Watchdog Timer */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rswdt hardware registers */ +typedef struct { + __O uint32_t RSWDT_CR; /**< \brief (Rswdt Offset: 0x00) Control Register */ + __IO uint32_t RSWDT_MR; /**< \brief (Rswdt Offset: 0x04) Mode Register */ + __I uint32_t RSWDT_SR; /**< \brief (Rswdt Offset: 0x08) Status Register */ +} Rswdt; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RSWDT_CR : (RSWDT Offset: 0x00) Control Register -------- */ +#define RSWDT_CR_WDRSTT (0x1u << 0) /**< \brief (RSWDT_CR) Watchdog Restart */ +#define RSWDT_CR_KEY_Pos 24 +#define RSWDT_CR_KEY_Msk (0xffu << RSWDT_CR_KEY_Pos) /**< \brief (RSWDT_CR) Password */ +#define RSWDT_CR_KEY(value) ((RSWDT_CR_KEY_Msk & ((value) << RSWDT_CR_KEY_Pos))) +#define RSWDT_CR_KEY_PASSWD (0xC4u << 24) /**< \brief (RSWDT_CR) Writing any other value in this field aborts the write operation. */ +/* -------- RSWDT_MR : (RSWDT Offset: 0x04) Mode Register -------- */ +#define RSWDT_MR_WDV_Pos 0 +#define RSWDT_MR_WDV_Msk (0xfffu << RSWDT_MR_WDV_Pos) /**< \brief (RSWDT_MR) Watchdog Counter Value */ +#define RSWDT_MR_WDV(value) ((RSWDT_MR_WDV_Msk & ((value) << RSWDT_MR_WDV_Pos))) +#define RSWDT_MR_WDFIEN (0x1u << 12) /**< \brief (RSWDT_MR) Watchdog Fault Interrupt Enable */ +#define RSWDT_MR_WDRSTEN (0x1u << 13) /**< \brief (RSWDT_MR) Watchdog Reset Enable */ +#define RSWDT_MR_WDRPROC (0x1u << 14) /**< \brief (RSWDT_MR) Watchdog Reset Processor */ +#define RSWDT_MR_WDDIS (0x1u << 15) /**< \brief (RSWDT_MR) Watchdog Disable */ +#define RSWDT_MR_ALLONES_Pos 16 +#define RSWDT_MR_ALLONES_Msk (0xfffu << RSWDT_MR_ALLONES_Pos) /**< \brief (RSWDT_MR) Must Always Be Written with 0xFFF */ +#define RSWDT_MR_ALLONES(value) ((RSWDT_MR_ALLONES_Msk & ((value) << RSWDT_MR_ALLONES_Pos))) +#define RSWDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (RSWDT_MR) Watchdog Debug Halt */ +#define RSWDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (RSWDT_MR) Watchdog Idle Halt */ +/* -------- RSWDT_SR : (RSWDT Offset: 0x08) Status Register -------- */ +#define RSWDT_SR_WDUNF (0x1u << 0) /**< \brief (RSWDT_SR) Watchdog Underflow */ + +/*@}*/ + + +#endif /* _SAME70_RSWDT_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h new file mode 100644 index 00000000..bdf89283 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h @@ -0,0 +1,246 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RTC_COMPONENT_ +#define _SAME70_RTC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Clock */ +/* ============================================================================= */ +/** \addtogroup SAME70_RTC Real-time Clock */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rtc hardware registers */ +typedef struct { + __IO uint32_t RTC_CR; /**< \brief (Rtc Offset: 0x00) Control Register */ + __IO uint32_t RTC_MR; /**< \brief (Rtc Offset: 0x04) Mode Register */ + __IO uint32_t RTC_TIMR; /**< \brief (Rtc Offset: 0x08) Time Register */ + __IO uint32_t RTC_CALR; /**< \brief (Rtc Offset: 0x0C) Calendar Register */ + __IO uint32_t RTC_TIMALR; /**< \brief (Rtc Offset: 0x10) Time Alarm Register */ + __IO uint32_t RTC_CALALR; /**< \brief (Rtc Offset: 0x14) Calendar Alarm Register */ + __I uint32_t RTC_SR; /**< \brief (Rtc Offset: 0x18) Status Register */ + __O uint32_t RTC_SCCR; /**< \brief (Rtc Offset: 0x1C) Status Clear Command Register */ + __O uint32_t RTC_IER; /**< \brief (Rtc Offset: 0x20) Interrupt Enable Register */ + __O uint32_t RTC_IDR; /**< \brief (Rtc Offset: 0x24) Interrupt Disable Register */ + __I uint32_t RTC_IMR; /**< \brief (Rtc Offset: 0x28) Interrupt Mask Register */ + __I uint32_t RTC_VER; /**< \brief (Rtc Offset: 0x2C) Valid Entry Register */ + __I uint32_t Reserved1[45]; + __IO uint32_t RTC_WPMR; /**< \brief (Rtc Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t Reserved2[5]; + __I uint32_t RTC_VERSION; /**< \brief (Rtc Offset: 0xFC) Version Register */ +} Rtc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RTC_CR : (RTC Offset: 0x00) Control Register -------- */ +#define RTC_CR_UPDTIM (0x1u << 0) /**< \brief (RTC_CR) Update Request Time Register */ +#define RTC_CR_UPDCAL (0x1u << 1) /**< \brief (RTC_CR) Update Request Calendar Register */ +#define RTC_CR_TIMEVSEL_Pos 8 +#define RTC_CR_TIMEVSEL_Msk (0x3u << RTC_CR_TIMEVSEL_Pos) /**< \brief (RTC_CR) Time Event Selection */ +#define RTC_CR_TIMEVSEL(value) ((RTC_CR_TIMEVSEL_Msk & ((value) << RTC_CR_TIMEVSEL_Pos))) +#define RTC_CR_TIMEVSEL_MINUTE (0x0u << 8) /**< \brief (RTC_CR) Minute change */ +#define RTC_CR_TIMEVSEL_HOUR (0x1u << 8) /**< \brief (RTC_CR) Hour change */ +#define RTC_CR_TIMEVSEL_MIDNIGHT (0x2u << 8) /**< \brief (RTC_CR) Every day at midnight */ +#define RTC_CR_TIMEVSEL_NOON (0x3u << 8) /**< \brief (RTC_CR) Every day at noon */ +#define RTC_CR_CALEVSEL_Pos 16 +#define RTC_CR_CALEVSEL_Msk (0x3u << RTC_CR_CALEVSEL_Pos) /**< \brief (RTC_CR) Calendar Event Selection */ +#define RTC_CR_CALEVSEL(value) ((RTC_CR_CALEVSEL_Msk & ((value) << RTC_CR_CALEVSEL_Pos))) +#define RTC_CR_CALEVSEL_WEEK (0x0u << 16) /**< \brief (RTC_CR) Week change (every Monday at time 00:00:00) */ +#define RTC_CR_CALEVSEL_MONTH (0x1u << 16) /**< \brief (RTC_CR) Month change (every 01 of each month at time 00:00:00) */ +#define RTC_CR_CALEVSEL_YEAR (0x2u << 16) /**< \brief (RTC_CR) Year change (every January 1 at time 00:00:00) */ +/* -------- RTC_MR : (RTC Offset: 0x04) Mode Register -------- */ +#define RTC_MR_HRMOD (0x1u << 0) /**< \brief (RTC_MR) 12-/24-hour Mode */ +#define RTC_MR_PERSIAN (0x1u << 1) /**< \brief (RTC_MR) PERSIAN Calendar */ +#define RTC_MR_NEGPPM (0x1u << 4) /**< \brief (RTC_MR) NEGative PPM Correction */ +#define RTC_MR_CORRECTION_Pos 8 +#define RTC_MR_CORRECTION_Msk (0x7fu << RTC_MR_CORRECTION_Pos) /**< \brief (RTC_MR) Slow Clock Correction */ +#define RTC_MR_CORRECTION(value) ((RTC_MR_CORRECTION_Msk & ((value) << RTC_MR_CORRECTION_Pos))) +#define RTC_MR_HIGHPPM (0x1u << 15) /**< \brief (RTC_MR) HIGH PPM Correction */ +#define RTC_MR_OUT0_Pos 16 +#define RTC_MR_OUT0_Msk (0x7u << RTC_MR_OUT0_Pos) /**< \brief (RTC_MR) RTCOUT0 OutputSource Selection */ +#define RTC_MR_OUT0(value) ((RTC_MR_OUT0_Msk & ((value) << RTC_MR_OUT0_Pos))) +#define RTC_MR_OUT0_NO_WAVE (0x0u << 16) /**< \brief (RTC_MR) No waveform, stuck at '0' */ +#define RTC_MR_OUT0_FREQ1HZ (0x1u << 16) /**< \brief (RTC_MR) 1 Hz square wave */ +#define RTC_MR_OUT0_FREQ32HZ (0x2u << 16) /**< \brief (RTC_MR) 32 Hz square wave */ +#define RTC_MR_OUT0_FREQ64HZ (0x3u << 16) /**< \brief (RTC_MR) 64 Hz square wave */ +#define RTC_MR_OUT0_FREQ512HZ (0x4u << 16) /**< \brief (RTC_MR) 512 Hz square wave */ +#define RTC_MR_OUT0_ALARM_TOGGLE (0x5u << 16) /**< \brief (RTC_MR) Output toggles when alarm flag rises */ +#define RTC_MR_OUT0_ALARM_FLAG (0x6u << 16) /**< \brief (RTC_MR) Output is a copy of the alarm flag */ +#define RTC_MR_OUT0_PROG_PULSE (0x7u << 16) /**< \brief (RTC_MR) Duty cycle programmable pulse */ +#define RTC_MR_OUT1_Pos 20 +#define RTC_MR_OUT1_Msk (0x7u << RTC_MR_OUT1_Pos) /**< \brief (RTC_MR) RTCOUT1 Output Source Selection */ +#define RTC_MR_OUT1(value) ((RTC_MR_OUT1_Msk & ((value) << RTC_MR_OUT1_Pos))) +#define RTC_MR_OUT1_NO_WAVE (0x0u << 20) /**< \brief (RTC_MR) No waveform, stuck at '0' */ +#define RTC_MR_OUT1_FREQ1HZ (0x1u << 20) /**< \brief (RTC_MR) 1 Hz square wave */ +#define RTC_MR_OUT1_FREQ32HZ (0x2u << 20) /**< \brief (RTC_MR) 32 Hz square wave */ +#define RTC_MR_OUT1_FREQ64HZ (0x3u << 20) /**< \brief (RTC_MR) 64 Hz square wave */ +#define RTC_MR_OUT1_FREQ512HZ (0x4u << 20) /**< \brief (RTC_MR) 512 Hz square wave */ +#define RTC_MR_OUT1_ALARM_TOGGLE (0x5u << 20) /**< \brief (RTC_MR) Output toggles when alarm flag rises */ +#define RTC_MR_OUT1_ALARM_FLAG (0x6u << 20) /**< \brief (RTC_MR) Output is a copy of the alarm flag */ +#define RTC_MR_OUT1_PROG_PULSE (0x7u << 20) /**< \brief (RTC_MR) Duty cycle programmable pulse */ +#define RTC_MR_THIGH_Pos 24 +#define RTC_MR_THIGH_Msk (0x7u << RTC_MR_THIGH_Pos) /**< \brief (RTC_MR) High Duration of the Output Pulse */ +#define RTC_MR_THIGH(value) ((RTC_MR_THIGH_Msk & ((value) << RTC_MR_THIGH_Pos))) +#define RTC_MR_THIGH_H_31MS (0x0u << 24) /**< \brief (RTC_MR) 31.2 ms */ +#define RTC_MR_THIGH_H_16MS (0x1u << 24) /**< \brief (RTC_MR) 15.6 ms */ +#define RTC_MR_THIGH_H_4MS (0x2u << 24) /**< \brief (RTC_MR) 3.91 ms */ +#define RTC_MR_THIGH_H_976US (0x3u << 24) /**< \brief (RTC_MR) 976 us */ +#define RTC_MR_THIGH_H_488US (0x4u << 24) /**< \brief (RTC_MR) 488 us */ +#define RTC_MR_THIGH_H_122US (0x5u << 24) /**< \brief (RTC_MR) 122 us */ +#define RTC_MR_THIGH_H_30US (0x6u << 24) /**< \brief (RTC_MR) 30.5 us */ +#define RTC_MR_THIGH_H_15US (0x7u << 24) /**< \brief (RTC_MR) 15.2 us */ +#define RTC_MR_TPERIOD_Pos 28 +#define RTC_MR_TPERIOD_Msk (0x3u << RTC_MR_TPERIOD_Pos) /**< \brief (RTC_MR) Period of the Output Pulse */ +#define RTC_MR_TPERIOD(value) ((RTC_MR_TPERIOD_Msk & ((value) << RTC_MR_TPERIOD_Pos))) +#define RTC_MR_TPERIOD_P_1S (0x0u << 28) /**< \brief (RTC_MR) 1 second */ +#define RTC_MR_TPERIOD_P_500MS (0x1u << 28) /**< \brief (RTC_MR) 500 ms */ +#define RTC_MR_TPERIOD_P_250MS (0x2u << 28) /**< \brief (RTC_MR) 250 ms */ +#define RTC_MR_TPERIOD_P_125MS (0x3u << 28) /**< \brief (RTC_MR) 125 ms */ +/* -------- RTC_TIMR : (RTC Offset: 0x08) Time Register -------- */ +#define RTC_TIMR_SEC_Pos 0 +#define RTC_TIMR_SEC_Msk (0x7fu << RTC_TIMR_SEC_Pos) /**< \brief (RTC_TIMR) Current Second */ +#define RTC_TIMR_SEC(value) ((RTC_TIMR_SEC_Msk & ((value) << RTC_TIMR_SEC_Pos))) +#define RTC_TIMR_MIN_Pos 8 +#define RTC_TIMR_MIN_Msk (0x7fu << RTC_TIMR_MIN_Pos) /**< \brief (RTC_TIMR) Current Minute */ +#define RTC_TIMR_MIN(value) ((RTC_TIMR_MIN_Msk & ((value) << RTC_TIMR_MIN_Pos))) +#define RTC_TIMR_HOUR_Pos 16 +#define RTC_TIMR_HOUR_Msk (0x3fu << RTC_TIMR_HOUR_Pos) /**< \brief (RTC_TIMR) Current Hour */ +#define RTC_TIMR_HOUR(value) ((RTC_TIMR_HOUR_Msk & ((value) << RTC_TIMR_HOUR_Pos))) +#define RTC_TIMR_AMPM (0x1u << 22) /**< \brief (RTC_TIMR) Ante Meridiem Post Meridiem Indicator */ +/* -------- RTC_CALR : (RTC Offset: 0x0C) Calendar Register -------- */ +#define RTC_CALR_CENT_Pos 0 +#define RTC_CALR_CENT_Msk (0x7fu << RTC_CALR_CENT_Pos) /**< \brief (RTC_CALR) Current Century */ +#define RTC_CALR_CENT(value) ((RTC_CALR_CENT_Msk & ((value) << RTC_CALR_CENT_Pos))) +#define RTC_CALR_YEAR_Pos 8 +#define RTC_CALR_YEAR_Msk (0xffu << RTC_CALR_YEAR_Pos) /**< \brief (RTC_CALR) Current Year */ +#define RTC_CALR_YEAR(value) ((RTC_CALR_YEAR_Msk & ((value) << RTC_CALR_YEAR_Pos))) +#define RTC_CALR_MONTH_Pos 16 +#define RTC_CALR_MONTH_Msk (0x1fu << RTC_CALR_MONTH_Pos) /**< \brief (RTC_CALR) Current Month */ +#define RTC_CALR_MONTH(value) ((RTC_CALR_MONTH_Msk & ((value) << RTC_CALR_MONTH_Pos))) +#define RTC_CALR_DAY_Pos 21 +#define RTC_CALR_DAY_Msk (0x7u << RTC_CALR_DAY_Pos) /**< \brief (RTC_CALR) Current Day in Current Week */ +#define RTC_CALR_DAY(value) ((RTC_CALR_DAY_Msk & ((value) << RTC_CALR_DAY_Pos))) +#define RTC_CALR_DATE_Pos 24 +#define RTC_CALR_DATE_Msk (0x3fu << RTC_CALR_DATE_Pos) /**< \brief (RTC_CALR) Current Day in Current Month */ +#define RTC_CALR_DATE(value) ((RTC_CALR_DATE_Msk & ((value) << RTC_CALR_DATE_Pos))) +/* -------- RTC_TIMALR : (RTC Offset: 0x10) Time Alarm Register -------- */ +#define RTC_TIMALR_SEC_Pos 0 +#define RTC_TIMALR_SEC_Msk (0x7fu << RTC_TIMALR_SEC_Pos) /**< \brief (RTC_TIMALR) Second Alarm */ +#define RTC_TIMALR_SEC(value) ((RTC_TIMALR_SEC_Msk & ((value) << RTC_TIMALR_SEC_Pos))) +#define RTC_TIMALR_SECEN (0x1u << 7) /**< \brief (RTC_TIMALR) Second Alarm Enable */ +#define RTC_TIMALR_MIN_Pos 8 +#define RTC_TIMALR_MIN_Msk (0x7fu << RTC_TIMALR_MIN_Pos) /**< \brief (RTC_TIMALR) Minute Alarm */ +#define RTC_TIMALR_MIN(value) ((RTC_TIMALR_MIN_Msk & ((value) << RTC_TIMALR_MIN_Pos))) +#define RTC_TIMALR_MINEN (0x1u << 15) /**< \brief (RTC_TIMALR) Minute Alarm Enable */ +#define RTC_TIMALR_HOUR_Pos 16 +#define RTC_TIMALR_HOUR_Msk (0x3fu << RTC_TIMALR_HOUR_Pos) /**< \brief (RTC_TIMALR) Hour Alarm */ +#define RTC_TIMALR_HOUR(value) ((RTC_TIMALR_HOUR_Msk & ((value) << RTC_TIMALR_HOUR_Pos))) +#define RTC_TIMALR_AMPM (0x1u << 22) /**< \brief (RTC_TIMALR) AM/PM Indicator */ +#define RTC_TIMALR_HOUREN (0x1u << 23) /**< \brief (RTC_TIMALR) Hour Alarm Enable */ +/* -------- RTC_CALALR : (RTC Offset: 0x14) Calendar Alarm Register -------- */ +#define RTC_CALALR_MONTH_Pos 16 +#define RTC_CALALR_MONTH_Msk (0x1fu << RTC_CALALR_MONTH_Pos) /**< \brief (RTC_CALALR) Month Alarm */ +#define RTC_CALALR_MONTH(value) ((RTC_CALALR_MONTH_Msk & ((value) << RTC_CALALR_MONTH_Pos))) +#define RTC_CALALR_MTHEN (0x1u << 23) /**< \brief (RTC_CALALR) Month Alarm Enable */ +#define RTC_CALALR_DATE_Pos 24 +#define RTC_CALALR_DATE_Msk (0x3fu << RTC_CALALR_DATE_Pos) /**< \brief (RTC_CALALR) Date Alarm */ +#define RTC_CALALR_DATE(value) ((RTC_CALALR_DATE_Msk & ((value) << RTC_CALALR_DATE_Pos))) +#define RTC_CALALR_DATEEN (0x1u << 31) /**< \brief (RTC_CALALR) Date Alarm Enable */ +/* -------- RTC_SR : (RTC Offset: 0x18) Status Register -------- */ +#define RTC_SR_ACKUPD (0x1u << 0) /**< \brief (RTC_SR) Acknowledge for Update */ +#define RTC_SR_ACKUPD_FREERUN (0x0u << 0) /**< \brief (RTC_SR) Time and calendar registers cannot be updated. */ +#define RTC_SR_ACKUPD_UPDATE (0x1u << 0) /**< \brief (RTC_SR) Time and calendar registers can be updated. */ +#define RTC_SR_ALARM (0x1u << 1) /**< \brief (RTC_SR) Alarm Flag */ +#define RTC_SR_ALARM_NO_ALARMEVENT (0x0u << 1) /**< \brief (RTC_SR) No alarm matching condition occurred. */ +#define RTC_SR_ALARM_ALARMEVENT (0x1u << 1) /**< \brief (RTC_SR) An alarm matching condition has occurred. */ +#define RTC_SR_SEC (0x1u << 2) /**< \brief (RTC_SR) Second Event */ +#define RTC_SR_SEC_NO_SECEVENT (0x0u << 2) /**< \brief (RTC_SR) No second event has occurred since the last clear. */ +#define RTC_SR_SEC_SECEVENT (0x1u << 2) /**< \brief (RTC_SR) At least one second event has occurred since the last clear. */ +#define RTC_SR_TIMEV (0x1u << 3) /**< \brief (RTC_SR) Time Event */ +#define RTC_SR_TIMEV_NO_TIMEVENT (0x0u << 3) /**< \brief (RTC_SR) No time event has occurred since the last clear. */ +#define RTC_SR_TIMEV_TIMEVENT (0x1u << 3) /**< \brief (RTC_SR) At least one time event has occurred since the last clear. */ +#define RTC_SR_CALEV (0x1u << 4) /**< \brief (RTC_SR) Calendar Event */ +#define RTC_SR_CALEV_NO_CALEVENT (0x0u << 4) /**< \brief (RTC_SR) No calendar event has occurred since the last clear. */ +#define RTC_SR_CALEV_CALEVENT (0x1u << 4) /**< \brief (RTC_SR) At least one calendar event has occurred since the last clear. */ +#define RTC_SR_TDERR (0x1u << 5) /**< \brief (RTC_SR) Time and/or Date Free Running Error */ +#define RTC_SR_TDERR_CORRECT (0x0u << 5) /**< \brief (RTC_SR) The internal free running counters are carrying valid values since the last read of the Status Register (RTC_SR). */ +#define RTC_SR_TDERR_ERR_TIMEDATE (0x1u << 5) /**< \brief (RTC_SR) The internal free running counters have been corrupted (invalid date or time, non-BCD values) since the last read and/or they are still invalid. */ +/* -------- RTC_SCCR : (RTC Offset: 0x1C) Status Clear Command Register -------- */ +#define RTC_SCCR_ACKCLR (0x1u << 0) /**< \brief (RTC_SCCR) Acknowledge Clear */ +#define RTC_SCCR_ALRCLR (0x1u << 1) /**< \brief (RTC_SCCR) Alarm Clear */ +#define RTC_SCCR_SECCLR (0x1u << 2) /**< \brief (RTC_SCCR) Second Clear */ +#define RTC_SCCR_TIMCLR (0x1u << 3) /**< \brief (RTC_SCCR) Time Clear */ +#define RTC_SCCR_CALCLR (0x1u << 4) /**< \brief (RTC_SCCR) Calendar Clear */ +#define RTC_SCCR_TDERRCLR (0x1u << 5) /**< \brief (RTC_SCCR) Time and/or Date Free Running Error Clear */ +/* -------- RTC_IER : (RTC Offset: 0x20) Interrupt Enable Register -------- */ +#define RTC_IER_ACKEN (0x1u << 0) /**< \brief (RTC_IER) Acknowledge Update Interrupt Enable */ +#define RTC_IER_ALREN (0x1u << 1) /**< \brief (RTC_IER) Alarm Interrupt Enable */ +#define RTC_IER_SECEN (0x1u << 2) /**< \brief (RTC_IER) Second Event Interrupt Enable */ +#define RTC_IER_TIMEN (0x1u << 3) /**< \brief (RTC_IER) Time Event Interrupt Enable */ +#define RTC_IER_CALEN (0x1u << 4) /**< \brief (RTC_IER) Calendar Event Interrupt Enable */ +#define RTC_IER_TDERREN (0x1u << 5) /**< \brief (RTC_IER) Time and/or Date Error Interrupt Enable */ +/* -------- RTC_IDR : (RTC Offset: 0x24) Interrupt Disable Register -------- */ +#define RTC_IDR_ACKDIS (0x1u << 0) /**< \brief (RTC_IDR) Acknowledge Update Interrupt Disable */ +#define RTC_IDR_ALRDIS (0x1u << 1) /**< \brief (RTC_IDR) Alarm Interrupt Disable */ +#define RTC_IDR_SECDIS (0x1u << 2) /**< \brief (RTC_IDR) Second Event Interrupt Disable */ +#define RTC_IDR_TIMDIS (0x1u << 3) /**< \brief (RTC_IDR) Time Event Interrupt Disable */ +#define RTC_IDR_CALDIS (0x1u << 4) /**< \brief (RTC_IDR) Calendar Event Interrupt Disable */ +#define RTC_IDR_TDERRDIS (0x1u << 5) /**< \brief (RTC_IDR) Time and/or Date Error Interrupt Disable */ +/* -------- RTC_IMR : (RTC Offset: 0x28) Interrupt Mask Register -------- */ +#define RTC_IMR_ACK (0x1u << 0) /**< \brief (RTC_IMR) Acknowledge Update Interrupt Mask */ +#define RTC_IMR_ALR (0x1u << 1) /**< \brief (RTC_IMR) Alarm Interrupt Mask */ +#define RTC_IMR_SEC (0x1u << 2) /**< \brief (RTC_IMR) Second Event Interrupt Mask */ +#define RTC_IMR_TIM (0x1u << 3) /**< \brief (RTC_IMR) Time Event Interrupt Mask */ +#define RTC_IMR_CAL (0x1u << 4) /**< \brief (RTC_IMR) Calendar Event Interrupt Mask */ +#define RTC_IMR_TDERR (0x1u << 5) /**< \brief (RTC_IMR) Time and/or Date Error Mask */ +/* -------- RTC_VER : (RTC Offset: 0x2C) Valid Entry Register -------- */ +#define RTC_VER_NVTIM (0x1u << 0) /**< \brief (RTC_VER) Non-valid Time */ +#define RTC_VER_NVCAL (0x1u << 1) /**< \brief (RTC_VER) Non-valid Calendar */ +#define RTC_VER_NVTIMALR (0x1u << 2) /**< \brief (RTC_VER) Non-valid Time Alarm */ +#define RTC_VER_NVCALALR (0x1u << 3) /**< \brief (RTC_VER) Non-valid Calendar Alarm */ +/* -------- RTC_WPMR : (RTC Offset: 0xE4) Write Protection Mode Register -------- */ +#define RTC_WPMR_WPEN (0x1u << 0) /**< \brief (RTC_WPMR) Write Protection Enable */ +#define RTC_WPMR_WPKEY_Pos 8 +#define RTC_WPMR_WPKEY_Msk (0xffffffu << RTC_WPMR_WPKEY_Pos) /**< \brief (RTC_WPMR) Write Protection Key */ +#define RTC_WPMR_WPKEY(value) ((RTC_WPMR_WPKEY_Msk & ((value) << RTC_WPMR_WPKEY_Pos))) +#define RTC_WPMR_WPKEY_PASSWD (0x525443u << 8) /**< \brief (RTC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- RTC_VERSION : (RTC Offset: 0xFC) Version Register -------- */ +#define RTC_VERSION_VERSION_Pos 0 +#define RTC_VERSION_VERSION_Msk (0xfffu << RTC_VERSION_VERSION_Pos) /**< \brief (RTC_VERSION) Version of the Hardware Module */ +#define RTC_VERSION_MFN_Pos 16 +#define RTC_VERSION_MFN_Msk (0x7u << RTC_VERSION_MFN_Pos) /**< \brief (RTC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_RTC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h new file mode 100644 index 00000000..8ceea226 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h @@ -0,0 +1,76 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RTT_COMPONENT_ +#define _SAME70_RTT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Real-time Timer */ +/* ============================================================================= */ +/** \addtogroup SAME70_RTT Real-time Timer */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Rtt hardware registers */ +typedef struct { + __IO uint32_t RTT_MR; /**< \brief (Rtt Offset: 0x00) Mode Register */ + __IO uint32_t RTT_AR; /**< \brief (Rtt Offset: 0x04) Alarm Register */ + __I uint32_t RTT_VR; /**< \brief (Rtt Offset: 0x08) Value Register */ + __I uint32_t RTT_SR; /**< \brief (Rtt Offset: 0x0C) Status Register */ +} Rtt; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- RTT_MR : (RTT Offset: 0x00) Mode Register -------- */ +#define RTT_MR_RTPRES_Pos 0 +#define RTT_MR_RTPRES_Msk (0xffffu << RTT_MR_RTPRES_Pos) /**< \brief (RTT_MR) Real-time Timer Prescaler Value */ +#define RTT_MR_RTPRES(value) ((RTT_MR_RTPRES_Msk & ((value) << RTT_MR_RTPRES_Pos))) +#define RTT_MR_ALMIEN (0x1u << 16) /**< \brief (RTT_MR) Alarm Interrupt Enable */ +#define RTT_MR_RTTINCIEN (0x1u << 17) /**< \brief (RTT_MR) Real-time Timer Increment Interrupt Enable */ +#define RTT_MR_RTTRST (0x1u << 18) /**< \brief (RTT_MR) Real-time Timer Restart */ +#define RTT_MR_RTTDIS (0x1u << 20) /**< \brief (RTT_MR) Real-time Timer Disable */ +#define RTT_MR_RTC1HZ (0x1u << 24) /**< \brief (RTT_MR) Real-Time Clock 1Hz Clock Selection */ +/* -------- RTT_AR : (RTT Offset: 0x04) Alarm Register -------- */ +#define RTT_AR_ALMV_Pos 0 +#define RTT_AR_ALMV_Msk (0xffffffffu << RTT_AR_ALMV_Pos) /**< \brief (RTT_AR) Alarm Value */ +#define RTT_AR_ALMV(value) ((RTT_AR_ALMV_Msk & ((value) << RTT_AR_ALMV_Pos))) +/* -------- RTT_VR : (RTT Offset: 0x08) Value Register -------- */ +#define RTT_VR_CRTV_Pos 0 +#define RTT_VR_CRTV_Msk (0xffffffffu << RTT_VR_CRTV_Pos) /**< \brief (RTT_VR) Current Real-time Value */ +/* -------- RTT_SR : (RTT Offset: 0x0C) Status Register -------- */ +#define RTT_SR_ALMS (0x1u << 0) /**< \brief (RTT_SR) Real-time Alarm Status (cleared on read) */ +#define RTT_SR_RTTINC (0x1u << 1) /**< \brief (RTT_SR) Prescaler Roll-over Status (cleared on read) */ + +/*@}*/ + + +#endif /* _SAME70_RTT_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h new file mode 100644 index 00000000..e9d0e349 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h @@ -0,0 +1,185 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SDRAMC_COMPONENT_ +#define _SAME70_SDRAMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR SDRAM Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_SDRAMC SDRAM Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Sdramc hardware registers */ +typedef struct { + __IO uint32_t SDRAMC_MR; /**< \brief (Sdramc Offset: 0x00) SDRAMC Mode Register */ + __IO uint32_t SDRAMC_TR; /**< \brief (Sdramc Offset: 0x04) SDRAMC Refresh Timer Register */ + __IO uint32_t SDRAMC_CR; /**< \brief (Sdramc Offset: 0x08) SDRAMC Configuration Register */ + __I uint32_t Reserved1[1]; + __IO uint32_t SDRAMC_LPR; /**< \brief (Sdramc Offset: 0x10) SDRAMC Low Power Register */ + __O uint32_t SDRAMC_IER; /**< \brief (Sdramc Offset: 0x14) SDRAMC Interrupt Enable Register */ + __O uint32_t SDRAMC_IDR; /**< \brief (Sdramc Offset: 0x18) SDRAMC Interrupt Disable Register */ + __I uint32_t SDRAMC_IMR; /**< \brief (Sdramc Offset: 0x1C) SDRAMC Interrupt Mask Register */ + __I uint32_t SDRAMC_ISR; /**< \brief (Sdramc Offset: 0x20) SDRAMC Interrupt Status Register */ + __IO uint32_t SDRAMC_MDR; /**< \brief (Sdramc Offset: 0x24) SDRAMC Memory Device Register */ + __IO uint32_t SDRAMC_CFR1; /**< \brief (Sdramc Offset: 0x28) SDRAMC Configuration Register 1 */ + __IO uint32_t SDRAMC_OCMS; /**< \brief (Sdramc Offset: 0x2C) SDRAMC OCMS Register */ + __O uint32_t SDRAMC_OCMS_KEY1; /**< \brief (Sdramc Offset: 0x30) SDRAMC OCMS KEY1 Register */ + __O uint32_t SDRAMC_OCMS_KEY2; /**< \brief (Sdramc Offset: 0x34) SDRAMC OCMS KEY2 Register */ + __I uint32_t Reserved2[49]; + __I uint32_t SDRAMC_VERSION; /**< \brief (Sdramc Offset: 0xFC) SDRAMC Version Register */ +} Sdramc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SDRAMC_MR : (SDRAMC Offset: 0x00) SDRAMC Mode Register -------- */ +#define SDRAMC_MR_MODE_Pos 0 +#define SDRAMC_MR_MODE_Msk (0x7u << SDRAMC_MR_MODE_Pos) /**< \brief (SDRAMC_MR) SDRAMC Command Mode */ +#define SDRAMC_MR_MODE(value) ((SDRAMC_MR_MODE_Msk & ((value) << SDRAMC_MR_MODE_Pos))) +#define SDRAMC_MR_MODE_NORMAL (0x0u << 0) /**< \brief (SDRAMC_MR) Normal mode. Any access to the SDRAM is decoded normally. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_NOP (0x1u << 0) /**< \brief (SDRAMC_MR) The SDRAMC issues a NOP command when the SDRAM device is accessed regardless of the cycle. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_ALLBANKS_PRECHARGE (0x2u << 0) /**< \brief (SDRAMC_MR) The SDRAMC issues an "All Banks Precharge" command when the SDRAM device is accessed regardless of the cycle. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_LOAD_MODEREG (0x3u << 0) /**< \brief (SDRAMC_MR) The SDRAMC issues a "Load Mode Register" command when the SDRAM device is accessed regardless of the cycle. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_AUTO_REFRESH (0x4u << 0) /**< \brief (SDRAMC_MR) The SDRAMC issues an "Auto-Refresh" Command when the SDRAM device is accessed regardless of the cycle. Previously, an "All Banks Precharge" command must be issued. To activate this mode, command must be followed by a write to the SDRAM. */ +#define SDRAMC_MR_MODE_EXT_LOAD_MODEREG (0x5u << 0) /**< \brief (SDRAMC_MR) The SDRAMC issues an "Extended Load Mode Register" command when the SDRAM device is accessed regardless of the cycle. To activate this mode, the "Extended Load Mode Register" command must be followed by a write to the SDRAM. The write in the SDRAM must be done in the appropriate bank; most low-power SDRAM devices use the bank 1. */ +#define SDRAMC_MR_MODE_DEEP_POWERDOWN (0x6u << 0) /**< \brief (SDRAMC_MR) Deep power-down mode. Enters deep power-down mode. */ +/* -------- SDRAMC_TR : (SDRAMC Offset: 0x04) SDRAMC Refresh Timer Register -------- */ +#define SDRAMC_TR_COUNT_Pos 0 +#define SDRAMC_TR_COUNT_Msk (0xfffu << SDRAMC_TR_COUNT_Pos) /**< \brief (SDRAMC_TR) SDRAMC Refresh Timer Count */ +#define SDRAMC_TR_COUNT(value) ((SDRAMC_TR_COUNT_Msk & ((value) << SDRAMC_TR_COUNT_Pos))) +/* -------- SDRAMC_CR : (SDRAMC Offset: 0x08) SDRAMC Configuration Register -------- */ +#define SDRAMC_CR_NC_Pos 0 +#define SDRAMC_CR_NC_Msk (0x3u << SDRAMC_CR_NC_Pos) /**< \brief (SDRAMC_CR) Number of Column Bits */ +#define SDRAMC_CR_NC(value) ((SDRAMC_CR_NC_Msk & ((value) << SDRAMC_CR_NC_Pos))) +#define SDRAMC_CR_NC_COL8 (0x0u << 0) /**< \brief (SDRAMC_CR) 8 column bits */ +#define SDRAMC_CR_NC_COL9 (0x1u << 0) /**< \brief (SDRAMC_CR) 9 column bits */ +#define SDRAMC_CR_NC_COL10 (0x2u << 0) /**< \brief (SDRAMC_CR) 10 column bits */ +#define SDRAMC_CR_NC_COL11 (0x3u << 0) /**< \brief (SDRAMC_CR) 11 column bits */ +#define SDRAMC_CR_NR_Pos 2 +#define SDRAMC_CR_NR_Msk (0x3u << SDRAMC_CR_NR_Pos) /**< \brief (SDRAMC_CR) Number of Row Bits */ +#define SDRAMC_CR_NR(value) ((SDRAMC_CR_NR_Msk & ((value) << SDRAMC_CR_NR_Pos))) +#define SDRAMC_CR_NR_ROW11 (0x0u << 2) /**< \brief (SDRAMC_CR) 11 row bits */ +#define SDRAMC_CR_NR_ROW12 (0x1u << 2) /**< \brief (SDRAMC_CR) 12 row bits */ +#define SDRAMC_CR_NR_ROW13 (0x2u << 2) /**< \brief (SDRAMC_CR) 13 row bits */ +#define SDRAMC_CR_NB (0x1u << 4) /**< \brief (SDRAMC_CR) Number of Banks */ +#define SDRAMC_CR_NB_BANK2 (0x0u << 4) /**< \brief (SDRAMC_CR) 2 banks */ +#define SDRAMC_CR_NB_BANK4 (0x1u << 4) /**< \brief (SDRAMC_CR) 4 banks */ +#define SDRAMC_CR_CAS_Pos 5 +#define SDRAMC_CR_CAS_Msk (0x3u << SDRAMC_CR_CAS_Pos) /**< \brief (SDRAMC_CR) CAS Latency */ +#define SDRAMC_CR_CAS(value) ((SDRAMC_CR_CAS_Msk & ((value) << SDRAMC_CR_CAS_Pos))) +#define SDRAMC_CR_CAS_LATENCY1 (0x1u << 5) /**< \brief (SDRAMC_CR) 1 cycle CAS latency */ +#define SDRAMC_CR_CAS_LATENCY2 (0x2u << 5) /**< \brief (SDRAMC_CR) 2 cycle CAS latency */ +#define SDRAMC_CR_CAS_LATENCY3 (0x3u << 5) /**< \brief (SDRAMC_CR) 3 cycle CAS latency */ +#define SDRAMC_CR_DBW (0x1u << 7) /**< \brief (SDRAMC_CR) Data Bus Width */ +#define SDRAMC_CR_TWR_Pos 8 +#define SDRAMC_CR_TWR_Msk (0xfu << SDRAMC_CR_TWR_Pos) /**< \brief (SDRAMC_CR) Write Recovery Delay */ +#define SDRAMC_CR_TWR(value) ((SDRAMC_CR_TWR_Msk & ((value) << SDRAMC_CR_TWR_Pos))) +#define SDRAMC_CR_TRC_TRFC_Pos 12 +#define SDRAMC_CR_TRC_TRFC_Msk (0xfu << SDRAMC_CR_TRC_TRFC_Pos) /**< \brief (SDRAMC_CR) Row Cycle Delay and Row Refresh Cycle */ +#define SDRAMC_CR_TRC_TRFC(value) ((SDRAMC_CR_TRC_TRFC_Msk & ((value) << SDRAMC_CR_TRC_TRFC_Pos))) +#define SDRAMC_CR_TRP_Pos 16 +#define SDRAMC_CR_TRP_Msk (0xfu << SDRAMC_CR_TRP_Pos) /**< \brief (SDRAMC_CR) Row Precharge Delay */ +#define SDRAMC_CR_TRP(value) ((SDRAMC_CR_TRP_Msk & ((value) << SDRAMC_CR_TRP_Pos))) +#define SDRAMC_CR_TRCD_Pos 20 +#define SDRAMC_CR_TRCD_Msk (0xfu << SDRAMC_CR_TRCD_Pos) /**< \brief (SDRAMC_CR) Row to Column Delay */ +#define SDRAMC_CR_TRCD(value) ((SDRAMC_CR_TRCD_Msk & ((value) << SDRAMC_CR_TRCD_Pos))) +#define SDRAMC_CR_TRAS_Pos 24 +#define SDRAMC_CR_TRAS_Msk (0xfu << SDRAMC_CR_TRAS_Pos) /**< \brief (SDRAMC_CR) Active to Precharge Delay */ +#define SDRAMC_CR_TRAS(value) ((SDRAMC_CR_TRAS_Msk & ((value) << SDRAMC_CR_TRAS_Pos))) +#define SDRAMC_CR_TXSR_Pos 28 +#define SDRAMC_CR_TXSR_Msk (0xfu << SDRAMC_CR_TXSR_Pos) /**< \brief (SDRAMC_CR) Exit Self Refresh to Active Delay */ +#define SDRAMC_CR_TXSR(value) ((SDRAMC_CR_TXSR_Msk & ((value) << SDRAMC_CR_TXSR_Pos))) +/* -------- SDRAMC_LPR : (SDRAMC Offset: 0x10) SDRAMC Low Power Register -------- */ +#define SDRAMC_LPR_LPCB_Pos 0 +#define SDRAMC_LPR_LPCB_Msk (0x3u << SDRAMC_LPR_LPCB_Pos) /**< \brief (SDRAMC_LPR) Low-power Configuration Bits */ +#define SDRAMC_LPR_LPCB(value) ((SDRAMC_LPR_LPCB_Msk & ((value) << SDRAMC_LPR_LPCB_Pos))) +#define SDRAMC_LPR_LPCB_DISABLED (0x0u << 0) /**< \brief (SDRAMC_LPR) Low Power Feature is inhibited: no Power-down, Self-refresh or Deep Power-down command is issued to the SDRAM device. */ +#define SDRAMC_LPR_LPCB_SELF_REFRESH (0x1u << 0) /**< \brief (SDRAMC_LPR) The SDRAMC issues a Self-refresh command to the SDRAM device, the SDCK clock is deactivated and the SDCKE signal is set low. The SDRAM device leaves the Self Refresh Mode when accessed and enters it after the access. */ +#define SDRAMC_LPR_LPCB_POWER_DOWN (0x2u << 0) /**< \brief (SDRAMC_LPR) The SDRAMC issues a Power-down Command to the SDRAM device after each access, the SDCKE signal is set to low. The SDRAM device leaves the Power-down Mode when accessed and enters it after the access. */ +#define SDRAMC_LPR_LPCB_DEEP_POWER_DOWN (0x3u << 0) /**< \brief (SDRAMC_LPR) The SDRAMC issues a Deep Power-down command to the SDRAM device. This mode is unique to low-power SDRAM. */ +#define SDRAMC_LPR_PASR_Pos 4 +#define SDRAMC_LPR_PASR_Msk (0x7u << SDRAMC_LPR_PASR_Pos) /**< \brief (SDRAMC_LPR) Partial Array Self-refresh (only for low-power SDRAM) */ +#define SDRAMC_LPR_PASR(value) ((SDRAMC_LPR_PASR_Msk & ((value) << SDRAMC_LPR_PASR_Pos))) +#define SDRAMC_LPR_TCSR_Pos 8 +#define SDRAMC_LPR_TCSR_Msk (0x3u << SDRAMC_LPR_TCSR_Pos) /**< \brief (SDRAMC_LPR) Temperature Compensated Self-Refresh (only for low-power SDRAM) */ +#define SDRAMC_LPR_TCSR(value) ((SDRAMC_LPR_TCSR_Msk & ((value) << SDRAMC_LPR_TCSR_Pos))) +#define SDRAMC_LPR_DS_Pos 10 +#define SDRAMC_LPR_DS_Msk (0x3u << SDRAMC_LPR_DS_Pos) /**< \brief (SDRAMC_LPR) Drive Strength (only for low-power SDRAM) */ +#define SDRAMC_LPR_DS(value) ((SDRAMC_LPR_DS_Msk & ((value) << SDRAMC_LPR_DS_Pos))) +#define SDRAMC_LPR_TIMEOUT_Pos 12 +#define SDRAMC_LPR_TIMEOUT_Msk (0x3u << SDRAMC_LPR_TIMEOUT_Pos) /**< \brief (SDRAMC_LPR) Time to Define When Low-power Mode Is Enabled */ +#define SDRAMC_LPR_TIMEOUT(value) ((SDRAMC_LPR_TIMEOUT_Msk & ((value) << SDRAMC_LPR_TIMEOUT_Pos))) +#define SDRAMC_LPR_TIMEOUT_LP_LAST_XFER (0x0u << 12) /**< \brief (SDRAMC_LPR) The SDRAMC activates the SDRAM low-power mode immediately after the end of the last transfer. */ +#define SDRAMC_LPR_TIMEOUT_LP_LAST_XFER_64 (0x1u << 12) /**< \brief (SDRAMC_LPR) The SDRAMC activates the SDRAM low-power mode 64 clock cycles after the end of the last transfer. */ +#define SDRAMC_LPR_TIMEOUT_LP_LAST_XFER_128 (0x2u << 12) /**< \brief (SDRAMC_LPR) The SDRAMC activates the SDRAM low-power mode 128 clock cycles after the end of the last transfer. */ +/* -------- SDRAMC_IER : (SDRAMC Offset: 0x14) SDRAMC Interrupt Enable Register -------- */ +#define SDRAMC_IER_RES (0x1u << 0) /**< \brief (SDRAMC_IER) Refresh Error Status */ +/* -------- SDRAMC_IDR : (SDRAMC Offset: 0x18) SDRAMC Interrupt Disable Register -------- */ +#define SDRAMC_IDR_RES (0x1u << 0) /**< \brief (SDRAMC_IDR) Refresh Error Status */ +/* -------- SDRAMC_IMR : (SDRAMC Offset: 0x1C) SDRAMC Interrupt Mask Register -------- */ +#define SDRAMC_IMR_RES (0x1u << 0) /**< \brief (SDRAMC_IMR) Refresh Error Status */ +/* -------- SDRAMC_ISR : (SDRAMC Offset: 0x20) SDRAMC Interrupt Status Register -------- */ +#define SDRAMC_ISR_RES (0x1u << 0) /**< \brief (SDRAMC_ISR) Refresh Error Status (cleared on read) */ +/* -------- SDRAMC_MDR : (SDRAMC Offset: 0x24) SDRAMC Memory Device Register -------- */ +#define SDRAMC_MDR_MD_Pos 0 +#define SDRAMC_MDR_MD_Msk (0x3u << SDRAMC_MDR_MD_Pos) /**< \brief (SDRAMC_MDR) Memory Device Type */ +#define SDRAMC_MDR_MD(value) ((SDRAMC_MDR_MD_Msk & ((value) << SDRAMC_MDR_MD_Pos))) +#define SDRAMC_MDR_MD_SDRAM (0x0u << 0) /**< \brief (SDRAMC_MDR) SDRAM */ +#define SDRAMC_MDR_MD_LPSDRAM (0x1u << 0) /**< \brief (SDRAMC_MDR) Low-power SDRAM */ +/* -------- SDRAMC_CFR1 : (SDRAMC Offset: 0x28) SDRAMC Configuration Register 1 -------- */ +#define SDRAMC_CFR1_TMRD_Pos 0 +#define SDRAMC_CFR1_TMRD_Msk (0xfu << SDRAMC_CFR1_TMRD_Pos) /**< \brief (SDRAMC_CFR1) Load Mode Register Command to Active or Refresh Command */ +#define SDRAMC_CFR1_TMRD(value) ((SDRAMC_CFR1_TMRD_Msk & ((value) << SDRAMC_CFR1_TMRD_Pos))) +#define SDRAMC_CFR1_UNAL (0x1u << 8) /**< \brief (SDRAMC_CFR1) Support Unaligned Access */ +#define SDRAMC_CFR1_UNAL_UNSUPPORTED (0x0u << 8) /**< \brief (SDRAMC_CFR1) Unaligned access is not supported. */ +#define SDRAMC_CFR1_UNAL_SUPPORTED (0x1u << 8) /**< \brief (SDRAMC_CFR1) Unaligned access is supported. */ +/* -------- SDRAMC_OCMS : (SDRAMC Offset: 0x2C) SDRAMC OCMS Register -------- */ +#define SDRAMC_OCMS_SDR_SE (0x1u << 0) /**< \brief (SDRAMC_OCMS) SDRAM Memory Controller Scrambling Enable */ +/* -------- SDRAMC_OCMS_KEY1 : (SDRAMC Offset: 0x30) SDRAMC OCMS KEY1 Register -------- */ +#define SDRAMC_OCMS_KEY1_KEY1_Pos 0 +#define SDRAMC_OCMS_KEY1_KEY1_Msk (0xffffffffu << SDRAMC_OCMS_KEY1_KEY1_Pos) /**< \brief (SDRAMC_OCMS_KEY1) Off-chip Memory Scrambling (OCMS) Key Part 1 */ +#define SDRAMC_OCMS_KEY1_KEY1(value) ((SDRAMC_OCMS_KEY1_KEY1_Msk & ((value) << SDRAMC_OCMS_KEY1_KEY1_Pos))) +/* -------- SDRAMC_OCMS_KEY2 : (SDRAMC Offset: 0x34) SDRAMC OCMS KEY2 Register -------- */ +#define SDRAMC_OCMS_KEY2_KEY2_Pos 0 +#define SDRAMC_OCMS_KEY2_KEY2_Msk (0xffffffffu << SDRAMC_OCMS_KEY2_KEY2_Pos) /**< \brief (SDRAMC_OCMS_KEY2) Off-chip Memory Scrambling (OCMS) Key Part 2 */ +#define SDRAMC_OCMS_KEY2_KEY2(value) ((SDRAMC_OCMS_KEY2_KEY2_Msk & ((value) << SDRAMC_OCMS_KEY2_KEY2_Pos))) +/* -------- SDRAMC_VERSION : (SDRAMC Offset: 0xFC) SDRAMC Version Register -------- */ +#define SDRAMC_VERSION_VERSION_Pos 0 +#define SDRAMC_VERSION_VERSION_Msk (0xfffu << SDRAMC_VERSION_VERSION_Pos) /**< \brief (SDRAMC_VERSION) Version of the Hardware Module */ +#define SDRAMC_VERSION_MFN_Pos 16 +#define SDRAMC_VERSION_MFN_Msk (0x7u << SDRAMC_VERSION_MFN_Pos) /**< \brief (SDRAMC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_SDRAMC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h new file mode 100644 index 00000000..d71158d0 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h @@ -0,0 +1,160 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SMC_COMPONENT_ +#define _SAME70_SMC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Static Memory Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_SMC Static Memory Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief SmcCs_number hardware registers */ +typedef struct { + __IO uint32_t SMC_SETUP; /**< \brief (SmcCs_number Offset: 0x0) SMC Setup Register */ + __IO uint32_t SMC_PULSE; /**< \brief (SmcCs_number Offset: 0x4) SMC Pulse Register */ + __IO uint32_t SMC_CYCLE; /**< \brief (SmcCs_number Offset: 0x8) SMC Cycle Register */ + __IO uint32_t SMC_MODE; /**< \brief (SmcCs_number Offset: 0xC) SMC MODE Register */ +} SmcCs_number; +/** \brief Smc hardware registers */ +#define SMCCS_NUMBER_NUMBER 4 +typedef struct { + SmcCs_number SMC_CS_NUMBER[SMCCS_NUMBER_NUMBER]; /**< \brief (Smc Offset: 0x0) CS_number = 0 .. 3 */ + __I uint32_t Reserved1[16]; + __IO uint32_t SMC_OCMS; /**< \brief (Smc Offset: 0x80) SMC Off-Chip Memory Scrambling Register */ + __O uint32_t SMC_KEY1; /**< \brief (Smc Offset: 0x84) SMC Off-Chip Memory Scrambling KEY1 Register */ + __O uint32_t SMC_KEY2; /**< \brief (Smc Offset: 0x88) SMC Off-Chip Memory Scrambling KEY2 Register */ + __I uint32_t Reserved2[22]; + __IO uint32_t SMC_WPMR; /**< \brief (Smc Offset: 0xE4) SMC Write Protection Mode Register */ + __I uint32_t SMC_WPSR; /**< \brief (Smc Offset: 0xE8) SMC Write Protection Status Register */ + __I uint32_t Reserved3[4]; + __I uint32_t SMC_VERSION; /**< \brief (Smc Offset: 0xFC) SMC Version Register */ +} Smc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SMC_SETUP : (SMC Offset: N/A) SMC Setup Register -------- */ +#define SMC_SETUP_NWE_SETUP_Pos 0 +#define SMC_SETUP_NWE_SETUP_Msk (0x3fu << SMC_SETUP_NWE_SETUP_Pos) /**< \brief (SMC_SETUP) NWE Setup Length */ +#define SMC_SETUP_NWE_SETUP(value) ((SMC_SETUP_NWE_SETUP_Msk & ((value) << SMC_SETUP_NWE_SETUP_Pos))) +#define SMC_SETUP_NCS_WR_SETUP_Pos 8 +#define SMC_SETUP_NCS_WR_SETUP_Msk (0x3fu << SMC_SETUP_NCS_WR_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in WRITE Access */ +#define SMC_SETUP_NCS_WR_SETUP(value) ((SMC_SETUP_NCS_WR_SETUP_Msk & ((value) << SMC_SETUP_NCS_WR_SETUP_Pos))) +#define SMC_SETUP_NRD_SETUP_Pos 16 +#define SMC_SETUP_NRD_SETUP_Msk (0x3fu << SMC_SETUP_NRD_SETUP_Pos) /**< \brief (SMC_SETUP) NRD Setup Length */ +#define SMC_SETUP_NRD_SETUP(value) ((SMC_SETUP_NRD_SETUP_Msk & ((value) << SMC_SETUP_NRD_SETUP_Pos))) +#define SMC_SETUP_NCS_RD_SETUP_Pos 24 +#define SMC_SETUP_NCS_RD_SETUP_Msk (0x3fu << SMC_SETUP_NCS_RD_SETUP_Pos) /**< \brief (SMC_SETUP) NCS Setup Length in READ Access */ +#define SMC_SETUP_NCS_RD_SETUP(value) ((SMC_SETUP_NCS_RD_SETUP_Msk & ((value) << SMC_SETUP_NCS_RD_SETUP_Pos))) +/* -------- SMC_PULSE : (SMC Offset: N/A) SMC Pulse Register -------- */ +#define SMC_PULSE_NWE_PULSE_Pos 0 +#define SMC_PULSE_NWE_PULSE_Msk (0x7fu << SMC_PULSE_NWE_PULSE_Pos) /**< \brief (SMC_PULSE) NWE Pulse Length */ +#define SMC_PULSE_NWE_PULSE(value) ((SMC_PULSE_NWE_PULSE_Msk & ((value) << SMC_PULSE_NWE_PULSE_Pos))) +#define SMC_PULSE_NCS_WR_PULSE_Pos 8 +#define SMC_PULSE_NCS_WR_PULSE_Msk (0x7fu << SMC_PULSE_NCS_WR_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in WRITE Access */ +#define SMC_PULSE_NCS_WR_PULSE(value) ((SMC_PULSE_NCS_WR_PULSE_Msk & ((value) << SMC_PULSE_NCS_WR_PULSE_Pos))) +#define SMC_PULSE_NRD_PULSE_Pos 16 +#define SMC_PULSE_NRD_PULSE_Msk (0x7fu << SMC_PULSE_NRD_PULSE_Pos) /**< \brief (SMC_PULSE) NRD Pulse Length */ +#define SMC_PULSE_NRD_PULSE(value) ((SMC_PULSE_NRD_PULSE_Msk & ((value) << SMC_PULSE_NRD_PULSE_Pos))) +#define SMC_PULSE_NCS_RD_PULSE_Pos 24 +#define SMC_PULSE_NCS_RD_PULSE_Msk (0x7fu << SMC_PULSE_NCS_RD_PULSE_Pos) /**< \brief (SMC_PULSE) NCS Pulse Length in READ Access */ +#define SMC_PULSE_NCS_RD_PULSE(value) ((SMC_PULSE_NCS_RD_PULSE_Msk & ((value) << SMC_PULSE_NCS_RD_PULSE_Pos))) +/* -------- SMC_CYCLE : (SMC Offset: N/A) SMC Cycle Register -------- */ +#define SMC_CYCLE_NWE_CYCLE_Pos 0 +#define SMC_CYCLE_NWE_CYCLE_Msk (0x1ffu << SMC_CYCLE_NWE_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Write Cycle Length */ +#define SMC_CYCLE_NWE_CYCLE(value) ((SMC_CYCLE_NWE_CYCLE_Msk & ((value) << SMC_CYCLE_NWE_CYCLE_Pos))) +#define SMC_CYCLE_NRD_CYCLE_Pos 16 +#define SMC_CYCLE_NRD_CYCLE_Msk (0x1ffu << SMC_CYCLE_NRD_CYCLE_Pos) /**< \brief (SMC_CYCLE) Total Read Cycle Length */ +#define SMC_CYCLE_NRD_CYCLE(value) ((SMC_CYCLE_NRD_CYCLE_Msk & ((value) << SMC_CYCLE_NRD_CYCLE_Pos))) +/* -------- SMC_MODE : (SMC Offset: N/A) SMC MODE Register -------- */ +#define SMC_MODE_READ_MODE (0x1u << 0) /**< \brief (SMC_MODE) Read Mode */ +#define SMC_MODE_WRITE_MODE (0x1u << 1) /**< \brief (SMC_MODE) Write Mode */ +#define SMC_MODE_EXNW_MODE_Pos 4 +#define SMC_MODE_EXNW_MODE_Msk (0x3u << SMC_MODE_EXNW_MODE_Pos) /**< \brief (SMC_MODE) NWAIT Mode */ +#define SMC_MODE_EXNW_MODE(value) ((SMC_MODE_EXNW_MODE_Msk & ((value) << SMC_MODE_EXNW_MODE_Pos))) +#define SMC_MODE_EXNW_MODE_DISABLED (0x0u << 4) /**< \brief (SMC_MODE) Disabled-The NWAIT input signal is ignored on the corresponding chip select. */ +#define SMC_MODE_EXNW_MODE_FROZEN (0x2u << 4) /**< \brief (SMC_MODE) Frozen Mode-If asserted, the NWAIT signal freezes the current read or write cycle. After deassertion, the read/write cycle is resumed from the point where it was stopped. */ +#define SMC_MODE_EXNW_MODE_READY (0x3u << 4) /**< \brief (SMC_MODE) Ready Mode-The NWAIT signal indicates the availability of the external device at the end of the pulse of the controlling read or write signal, to complete the access. If high, the access normally completes. If low, the access is extended until NWAIT returns high. */ +#define SMC_MODE_BAT (0x1u << 8) /**< \brief (SMC_MODE) Byte Access Type */ +#define SMC_MODE_BAT_BYTE_SELECT (0x0u << 8) /**< \brief (SMC_MODE) Byte select access type:- Write operation is controlled using NCS, NWE, NBS0, NBS1.- Read operation is controlled using NCS, NRD, NBS0, NBS1. */ +#define SMC_MODE_BAT_BYTE_WRITE (0x1u << 8) /**< \brief (SMC_MODE) Byte write access type:- Write operation is controlled using NCS, NWR0, NWR1.- Read operation is controlled using NCS and NRD. */ +#define SMC_MODE_DBW (0x1u << 12) /**< \brief (SMC_MODE) Data Bus Width */ +#define SMC_MODE_DBW_8_BIT (0x0u << 12) /**< \brief (SMC_MODE) 8-bit Data Bus */ +#define SMC_MODE_DBW_16_BIT (0x1u << 12) /**< \brief (SMC_MODE) 16-bit Data Bus */ +#define SMC_MODE_TDF_CYCLES_Pos 16 +#define SMC_MODE_TDF_CYCLES_Msk (0xfu << SMC_MODE_TDF_CYCLES_Pos) /**< \brief (SMC_MODE) Data Float Time */ +#define SMC_MODE_TDF_CYCLES(value) ((SMC_MODE_TDF_CYCLES_Msk & ((value) << SMC_MODE_TDF_CYCLES_Pos))) +#define SMC_MODE_TDF_MODE (0x1u << 20) /**< \brief (SMC_MODE) TDF Optimization */ +#define SMC_MODE_PMEN (0x1u << 24) /**< \brief (SMC_MODE) Page Mode Enabled */ +#define SMC_MODE_PS_Pos 28 +#define SMC_MODE_PS_Msk (0x3u << SMC_MODE_PS_Pos) /**< \brief (SMC_MODE) Page Size */ +#define SMC_MODE_PS(value) ((SMC_MODE_PS_Msk & ((value) << SMC_MODE_PS_Pos))) +#define SMC_MODE_PS_4_BYTE (0x0u << 28) /**< \brief (SMC_MODE) 4-byte page */ +#define SMC_MODE_PS_8_BYTE (0x1u << 28) /**< \brief (SMC_MODE) 8-byte page */ +#define SMC_MODE_PS_16_BYTE (0x2u << 28) /**< \brief (SMC_MODE) 16-byte page */ +#define SMC_MODE_PS_32_BYTE (0x3u << 28) /**< \brief (SMC_MODE) 32-byte page */ +/* -------- SMC_OCMS : (SMC Offset: 0x80) SMC Off-Chip Memory Scrambling Register -------- */ +#define SMC_OCMS_SMSE (0x1u << 0) /**< \brief (SMC_OCMS) Static Memory Controller Scrambling Enable */ +#define SMC_OCMS_CS0SE (0x1u << 8) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS1SE (0x1u << 9) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS2SE (0x1u << 10) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +#define SMC_OCMS_CS3SE (0x1u << 11) /**< \brief (SMC_OCMS) Chip Select (x = 0 to 3) Scrambling Enable */ +/* -------- SMC_KEY1 : (SMC Offset: 0x84) SMC Off-Chip Memory Scrambling KEY1 Register -------- */ +#define SMC_KEY1_KEY1_Pos 0 +#define SMC_KEY1_KEY1_Msk (0xffffffffu << SMC_KEY1_KEY1_Pos) /**< \brief (SMC_KEY1) Off-Chip Memory Scrambling (OCMS) Key Part 1 */ +#define SMC_KEY1_KEY1(value) ((SMC_KEY1_KEY1_Msk & ((value) << SMC_KEY1_KEY1_Pos))) +/* -------- SMC_KEY2 : (SMC Offset: 0x88) SMC Off-Chip Memory Scrambling KEY2 Register -------- */ +#define SMC_KEY2_KEY2_Pos 0 +#define SMC_KEY2_KEY2_Msk (0xffffffffu << SMC_KEY2_KEY2_Pos) /**< \brief (SMC_KEY2) Off-Chip Memory Scrambling (OCMS) Key Part 2 */ +#define SMC_KEY2_KEY2(value) ((SMC_KEY2_KEY2_Msk & ((value) << SMC_KEY2_KEY2_Pos))) +/* -------- SMC_WPMR : (SMC Offset: 0xE4) SMC Write Protection Mode Register -------- */ +#define SMC_WPMR_WPEN (0x1u << 0) /**< \brief (SMC_WPMR) Write Protect Enable */ +#define SMC_WPMR_WPKEY_Pos 8 +#define SMC_WPMR_WPKEY_Msk (0xffffffu << SMC_WPMR_WPKEY_Pos) /**< \brief (SMC_WPMR) Write Protection Key */ +#define SMC_WPMR_WPKEY(value) ((SMC_WPMR_WPKEY_Msk & ((value) << SMC_WPMR_WPKEY_Pos))) +#define SMC_WPMR_WPKEY_PASSWD (0x534D43u << 8) /**< \brief (SMC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- SMC_WPSR : (SMC Offset: 0xE8) SMC Write Protection Status Register -------- */ +#define SMC_WPSR_WPVS (0x1u << 0) /**< \brief (SMC_WPSR) Write Protection Violation Status */ +#define SMC_WPSR_WPVSRC_Pos 8 +#define SMC_WPSR_WPVSRC_Msk (0xffffu << SMC_WPSR_WPVSRC_Pos) /**< \brief (SMC_WPSR) Write Protection Violation Source */ +/* -------- SMC_VERSION : (SMC Offset: 0xFC) SMC Version Register -------- */ +#define SMC_VERSION_VERSION_Pos 0 +#define SMC_VERSION_VERSION_Msk (0xfffu << SMC_VERSION_VERSION_Pos) /**< \brief (SMC_VERSION) Hardware Module Version */ +#define SMC_VERSION_MFN_Pos 16 +#define SMC_VERSION_MFN_Msk (0x7u << SMC_VERSION_MFN_Pos) /**< \brief (SMC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_SMC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h new file mode 100644 index 00000000..79806a2d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h @@ -0,0 +1,178 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SPI_COMPONENT_ +#define _SAME70_SPI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Serial Peripheral Interface */ +/* ============================================================================= */ +/** \addtogroup SAME70_SPI Serial Peripheral Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Spi hardware registers */ +typedef struct { + __O uint32_t SPI_CR; /**< \brief (Spi Offset: 0x00) Control Register */ + __IO uint32_t SPI_MR; /**< \brief (Spi Offset: 0x04) Mode Register */ + __I uint32_t SPI_RDR; /**< \brief (Spi Offset: 0x08) Receive Data Register */ + __O uint32_t SPI_TDR; /**< \brief (Spi Offset: 0x0C) Transmit Data Register */ + __I uint32_t SPI_SR; /**< \brief (Spi Offset: 0x10) Status Register */ + __O uint32_t SPI_IER; /**< \brief (Spi Offset: 0x14) Interrupt Enable Register */ + __O uint32_t SPI_IDR; /**< \brief (Spi Offset: 0x18) Interrupt Disable Register */ + __I uint32_t SPI_IMR; /**< \brief (Spi Offset: 0x1C) Interrupt Mask Register */ + __I uint32_t Reserved1[4]; + __IO uint32_t SPI_CSR[4]; /**< \brief (Spi Offset: 0x30) Chip Select Register (CS_number = 0) */ + __I uint32_t Reserved2[41]; + __IO uint32_t SPI_WPMR; /**< \brief (Spi Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t SPI_WPSR; /**< \brief (Spi Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved3[4]; + __I uint32_t SPI_VERSION; /**< \brief (Spi Offset: 0xFC) Version Register */ +} Spi; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */ +#define SPI_CR_SPIEN (0x1u << 0) /**< \brief (SPI_CR) SPI Enable */ +#define SPI_CR_SPIDIS (0x1u << 1) /**< \brief (SPI_CR) SPI Disable */ +#define SPI_CR_SWRST (0x1u << 7) /**< \brief (SPI_CR) SPI Software Reset */ +#define SPI_CR_REQCLR (0x1u << 12) /**< \brief (SPI_CR) Request to Clear the Comparison Trigger */ +#define SPI_CR_TXFCLR (0x1u << 16) /**< \brief (SPI_CR) Transmit FIFO Clear */ +#define SPI_CR_RXFCLR (0x1u << 17) /**< \brief (SPI_CR) Receive FIFO Clear */ +#define SPI_CR_LASTXFER (0x1u << 24) /**< \brief (SPI_CR) Last Transfer */ +#define SPI_CR_FIFOEN (0x1u << 30) /**< \brief (SPI_CR) FIFO Enable */ +#define SPI_CR_FIFODIS (0x1u << 31) /**< \brief (SPI_CR) FIFO Disable */ +/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */ +#define SPI_MR_MSTR (0x1u << 0) /**< \brief (SPI_MR) Master/Slave Mode */ +#define SPI_MR_PS (0x1u << 1) /**< \brief (SPI_MR) Peripheral Select */ +#define SPI_MR_PCSDEC (0x1u << 2) /**< \brief (SPI_MR) Chip Select Decode */ +#define SPI_MR_MODFDIS (0x1u << 4) /**< \brief (SPI_MR) Mode Fault Detection */ +#define SPI_MR_WDRBT (0x1u << 5) /**< \brief (SPI_MR) Wait Data Read Before Transfer */ +#define SPI_MR_LLB (0x1u << 7) /**< \brief (SPI_MR) Local Loopback Enable */ +#define SPI_MR_PCS_Pos 16 +#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos) /**< \brief (SPI_MR) Peripheral Chip Select */ +#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos))) +#define SPI_MR_DLYBCS_Pos 24 +#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos) /**< \brief (SPI_MR) Delay Between Chip Selects */ +#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos))) +/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */ +#define SPI_RDR_RD_Pos 0 +#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos) /**< \brief (SPI_RDR) Receive Data */ +#define SPI_RDR_PCS_Pos 16 +#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos) /**< \brief (SPI_RDR) Peripheral Chip Select */ +/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */ +#define SPI_TDR_TD_Pos 0 +#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos) /**< \brief (SPI_TDR) Transmit Data */ +#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos))) +#define SPI_TDR_PCS_Pos 16 +#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos) /**< \brief (SPI_TDR) Peripheral Chip Select */ +#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos))) +#define SPI_TDR_LASTXFER (0x1u << 24) /**< \brief (SPI_TDR) Last Transfer */ +/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */ +#define SPI_SR_RDRF (0x1u << 0) /**< \brief (SPI_SR) Receive Data Register Full (cleared by reading SPI_RDR) */ +#define SPI_SR_TDRE (0x1u << 1) /**< \brief (SPI_SR) Transmit Data Register Empty (cleared by writing SPI_TDR) */ +#define SPI_SR_MODF (0x1u << 2) /**< \brief (SPI_SR) Mode Fault Error (cleared on read) */ +#define SPI_SR_OVRES (0x1u << 3) /**< \brief (SPI_SR) Overrun Error Status (cleared on read) */ +#define SPI_SR_NSSR (0x1u << 8) /**< \brief (SPI_SR) NSS Rising (cleared on read) */ +#define SPI_SR_TXEMPTY (0x1u << 9) /**< \brief (SPI_SR) Transmission Registers Empty (cleared by writing SPI_TDR) */ +#define SPI_SR_UNDES (0x1u << 10) /**< \brief (SPI_SR) Underrun Error Status (Slave mode only) (cleared on read) */ +#define SPI_SR_SPIENS (0x1u << 16) /**< \brief (SPI_SR) SPI Enable Status */ +/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */ +#define SPI_IER_RDRF (0x1u << 0) /**< \brief (SPI_IER) Receive Data Register Full Interrupt Enable */ +#define SPI_IER_TDRE (0x1u << 1) /**< \brief (SPI_IER) SPI Transmit Data Register Empty Interrupt Enable */ +#define SPI_IER_MODF (0x1u << 2) /**< \brief (SPI_IER) Mode Fault Error Interrupt Enable */ +#define SPI_IER_OVRES (0x1u << 3) /**< \brief (SPI_IER) Overrun Error Interrupt Enable */ +#define SPI_IER_NSSR (0x1u << 8) /**< \brief (SPI_IER) NSS Rising Interrupt Enable */ +#define SPI_IER_TXEMPTY (0x1u << 9) /**< \brief (SPI_IER) Transmission Registers Empty Enable */ +#define SPI_IER_UNDES (0x1u << 10) /**< \brief (SPI_IER) Underrun Error Interrupt Enable */ +/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */ +#define SPI_IDR_RDRF (0x1u << 0) /**< \brief (SPI_IDR) Receive Data Register Full Interrupt Disable */ +#define SPI_IDR_TDRE (0x1u << 1) /**< \brief (SPI_IDR) SPI Transmit Data Register Empty Interrupt Disable */ +#define SPI_IDR_MODF (0x1u << 2) /**< \brief (SPI_IDR) Mode Fault Error Interrupt Disable */ +#define SPI_IDR_OVRES (0x1u << 3) /**< \brief (SPI_IDR) Overrun Error Interrupt Disable */ +#define SPI_IDR_NSSR (0x1u << 8) /**< \brief (SPI_IDR) NSS Rising Interrupt Disable */ +#define SPI_IDR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IDR) Transmission Registers Empty Disable */ +#define SPI_IDR_UNDES (0x1u << 10) /**< \brief (SPI_IDR) Underrun Error Interrupt Disable */ +/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */ +#define SPI_IMR_RDRF (0x1u << 0) /**< \brief (SPI_IMR) Receive Data Register Full Interrupt Mask */ +#define SPI_IMR_TDRE (0x1u << 1) /**< \brief (SPI_IMR) SPI Transmit Data Register Empty Interrupt Mask */ +#define SPI_IMR_MODF (0x1u << 2) /**< \brief (SPI_IMR) Mode Fault Error Interrupt Mask */ +#define SPI_IMR_OVRES (0x1u << 3) /**< \brief (SPI_IMR) Overrun Error Interrupt Mask */ +#define SPI_IMR_NSSR (0x1u << 8) /**< \brief (SPI_IMR) NSS Rising Interrupt Mask */ +#define SPI_IMR_TXEMPTY (0x1u << 9) /**< \brief (SPI_IMR) Transmission Registers Empty Mask */ +#define SPI_IMR_UNDES (0x1u << 10) /**< \brief (SPI_IMR) Underrun Error Interrupt Mask */ +/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register (CS_number = 0) -------- */ +#define SPI_CSR_CPOL (0x1u << 0) /**< \brief (SPI_CSR[4]) Clock Polarity */ +#define SPI_CSR_NCPHA (0x1u << 1) /**< \brief (SPI_CSR[4]) Clock Phase */ +#define SPI_CSR_CSNAAT (0x1u << 2) /**< \brief (SPI_CSR[4]) Chip Select Not Active After Transfer (Ignored if CSAAT = 1) */ +#define SPI_CSR_CSAAT (0x1u << 3) /**< \brief (SPI_CSR[4]) Chip Select Active After Transfer */ +#define SPI_CSR_BITS_Pos 4 +#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos) /**< \brief (SPI_CSR[4]) Bits Per Transfer */ +#define SPI_CSR_BITS(value) ((SPI_CSR_BITS_Msk & ((value) << SPI_CSR_BITS_Pos))) +#define SPI_CSR_BITS_8_BIT (0x0u << 4) /**< \brief (SPI_CSR[4]) 8 bits for transfer */ +#define SPI_CSR_BITS_9_BIT (0x1u << 4) /**< \brief (SPI_CSR[4]) 9 bits for transfer */ +#define SPI_CSR_BITS_10_BIT (0x2u << 4) /**< \brief (SPI_CSR[4]) 10 bits for transfer */ +#define SPI_CSR_BITS_11_BIT (0x3u << 4) /**< \brief (SPI_CSR[4]) 11 bits for transfer */ +#define SPI_CSR_BITS_12_BIT (0x4u << 4) /**< \brief (SPI_CSR[4]) 12 bits for transfer */ +#define SPI_CSR_BITS_13_BIT (0x5u << 4) /**< \brief (SPI_CSR[4]) 13 bits for transfer */ +#define SPI_CSR_BITS_14_BIT (0x6u << 4) /**< \brief (SPI_CSR[4]) 14 bits for transfer */ +#define SPI_CSR_BITS_15_BIT (0x7u << 4) /**< \brief (SPI_CSR[4]) 15 bits for transfer */ +#define SPI_CSR_BITS_16_BIT (0x8u << 4) /**< \brief (SPI_CSR[4]) 16 bits for transfer */ +#define SPI_CSR_SCBR_Pos 8 +#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos) /**< \brief (SPI_CSR[4]) Serial Clock Bit Rate */ +#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos))) +#define SPI_CSR_DLYBS_Pos 16 +#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos) /**< \brief (SPI_CSR[4]) Delay Before SPCK */ +#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos))) +#define SPI_CSR_DLYBCT_Pos 24 +#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos) /**< \brief (SPI_CSR[4]) Delay Between Consecutive Transfers */ +#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos))) +/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Mode Register -------- */ +#define SPI_WPMR_WPEN (0x1u << 0) /**< \brief (SPI_WPMR) Write Protection Enable */ +#define SPI_WPMR_WPKEY_Pos 8 +#define SPI_WPMR_WPKEY_Msk (0xffffffu << SPI_WPMR_WPKEY_Pos) /**< \brief (SPI_WPMR) Write Protection Key */ +#define SPI_WPMR_WPKEY(value) ((SPI_WPMR_WPKEY_Msk & ((value) << SPI_WPMR_WPKEY_Pos))) +#define SPI_WPMR_WPKEY_PASSWD (0x535049u << 8) /**< \brief (SPI_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */ +#define SPI_WPSR_WPVS (0x1u << 0) /**< \brief (SPI_WPSR) Write Protection Violation Status */ +#define SPI_WPSR_WPVSRC_Pos 8 +#define SPI_WPSR_WPVSRC_Msk (0xffu << SPI_WPSR_WPVSRC_Pos) /**< \brief (SPI_WPSR) Write Protection Violation Source */ +/* -------- SPI_VERSION : (SPI Offset: 0xFC) Version Register -------- */ +#define SPI_VERSION_VERSION_Pos 0 +#define SPI_VERSION_VERSION_Msk (0xfffu << SPI_VERSION_VERSION_Pos) /**< \brief (SPI_VERSION) Version of the Hardware Module */ +#define SPI_VERSION_MFN_Pos 16 +#define SPI_VERSION_MFN_Msk (0x7u << SPI_VERSION_MFN_Pos) /**< \brief (SPI_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_SPI_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h new file mode 100644 index 00000000..a0a89d6c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h @@ -0,0 +1,292 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SSC_COMPONENT_ +#define _SAME70_SSC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Synchronous Serial Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_SSC Synchronous Serial Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Ssc hardware registers */ +typedef struct { + __O uint32_t SSC_CR; /**< \brief (Ssc Offset: 0x0) Control Register */ + __IO uint32_t SSC_CMR; /**< \brief (Ssc Offset: 0x4) Clock Mode Register */ + __I uint32_t Reserved1[2]; + __IO uint32_t SSC_RCMR; /**< \brief (Ssc Offset: 0x10) Receive Clock Mode Register */ + __IO uint32_t SSC_RFMR; /**< \brief (Ssc Offset: 0x14) Receive Frame Mode Register */ + __IO uint32_t SSC_TCMR; /**< \brief (Ssc Offset: 0x18) Transmit Clock Mode Register */ + __IO uint32_t SSC_TFMR; /**< \brief (Ssc Offset: 0x1C) Transmit Frame Mode Register */ + __I uint32_t SSC_RHR; /**< \brief (Ssc Offset: 0x20) Receive Holding Register */ + __O uint32_t SSC_THR; /**< \brief (Ssc Offset: 0x24) Transmit Holding Register */ + __I uint32_t Reserved2[2]; + __I uint32_t SSC_RSHR; /**< \brief (Ssc Offset: 0x30) Receive Sync. Holding Register */ + __IO uint32_t SSC_TSHR; /**< \brief (Ssc Offset: 0x34) Transmit Sync. Holding Register */ + __IO uint32_t SSC_RC0R; /**< \brief (Ssc Offset: 0x38) Receive Compare 0 Register */ + __IO uint32_t SSC_RC1R; /**< \brief (Ssc Offset: 0x3C) Receive Compare 1 Register */ + __I uint32_t SSC_SR; /**< \brief (Ssc Offset: 0x40) Status Register */ + __O uint32_t SSC_IER; /**< \brief (Ssc Offset: 0x44) Interrupt Enable Register */ + __O uint32_t SSC_IDR; /**< \brief (Ssc Offset: 0x48) Interrupt Disable Register */ + __I uint32_t SSC_IMR; /**< \brief (Ssc Offset: 0x4C) Interrupt Mask Register */ + __I uint32_t Reserved3[37]; + __IO uint32_t SSC_WPMR; /**< \brief (Ssc Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t SSC_WPSR; /**< \brief (Ssc Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved4[4]; + __I uint32_t SSC_VERSION; /**< \brief (Ssc Offset: 0xFC) Version Register */ +} Ssc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SSC_CR : (SSC Offset: 0x0) Control Register -------- */ +#define SSC_CR_RXEN (0x1u << 0) /**< \brief (SSC_CR) Receive Enable */ +#define SSC_CR_RXDIS (0x1u << 1) /**< \brief (SSC_CR) Receive Disable */ +#define SSC_CR_TXEN (0x1u << 8) /**< \brief (SSC_CR) Transmit Enable */ +#define SSC_CR_TXDIS (0x1u << 9) /**< \brief (SSC_CR) Transmit Disable */ +#define SSC_CR_SWRST (0x1u << 15) /**< \brief (SSC_CR) Software Reset */ +/* -------- SSC_CMR : (SSC Offset: 0x4) Clock Mode Register -------- */ +#define SSC_CMR_DIV_Pos 0 +#define SSC_CMR_DIV_Msk (0xfffu << SSC_CMR_DIV_Pos) /**< \brief (SSC_CMR) Clock Divider */ +#define SSC_CMR_DIV(value) ((SSC_CMR_DIV_Msk & ((value) << SSC_CMR_DIV_Pos))) +/* -------- SSC_RCMR : (SSC Offset: 0x10) Receive Clock Mode Register -------- */ +#define SSC_RCMR_CKS_Pos 0 +#define SSC_RCMR_CKS_Msk (0x3u << SSC_RCMR_CKS_Pos) /**< \brief (SSC_RCMR) Receive Clock Selection */ +#define SSC_RCMR_CKS(value) ((SSC_RCMR_CKS_Msk & ((value) << SSC_RCMR_CKS_Pos))) +#define SSC_RCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_RCMR) Divided Clock */ +#define SSC_RCMR_CKS_TK (0x1u << 0) /**< \brief (SSC_RCMR) TK Clock signal */ +#define SSC_RCMR_CKS_RK (0x2u << 0) /**< \brief (SSC_RCMR) RK pin */ +#define SSC_RCMR_CKO_Pos 2 +#define SSC_RCMR_CKO_Msk (0x7u << SSC_RCMR_CKO_Pos) /**< \brief (SSC_RCMR) Receive Clock Output Mode Selection */ +#define SSC_RCMR_CKO(value) ((SSC_RCMR_CKO_Msk & ((value) << SSC_RCMR_CKO_Pos))) +#define SSC_RCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_RCMR) None, RK pin is an input */ +#define SSC_RCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_RCMR) Continuous Receive Clock, RK pin is an output */ +#define SSC_RCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_RCMR) Receive Clock only during data transfers, RK pin is an output */ +#define SSC_RCMR_CKI (0x1u << 5) /**< \brief (SSC_RCMR) Receive Clock Inversion */ +#define SSC_RCMR_CKG_Pos 6 +#define SSC_RCMR_CKG_Msk (0x3u << SSC_RCMR_CKG_Pos) /**< \brief (SSC_RCMR) Receive Clock Gating Selection */ +#define SSC_RCMR_CKG(value) ((SSC_RCMR_CKG_Msk & ((value) << SSC_RCMR_CKG_Pos))) +#define SSC_RCMR_CKG_CONTINUOUS (0x0u << 6) /**< \brief (SSC_RCMR) None */ +#define SSC_RCMR_CKG_EN_RF_LOW (0x1u << 6) /**< \brief (SSC_RCMR) Receive Clock enabled only if RF Low */ +#define SSC_RCMR_CKG_EN_RF_HIGH (0x2u << 6) /**< \brief (SSC_RCMR) Receive Clock enabled only if RF High */ +#define SSC_RCMR_START_Pos 8 +#define SSC_RCMR_START_Msk (0xfu << SSC_RCMR_START_Pos) /**< \brief (SSC_RCMR) Receive Start Selection */ +#define SSC_RCMR_START(value) ((SSC_RCMR_START_Msk & ((value) << SSC_RCMR_START_Pos))) +#define SSC_RCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_RCMR) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data. */ +#define SSC_RCMR_START_TRANSMIT (0x1u << 8) /**< \brief (SSC_RCMR) Transmit start */ +#define SSC_RCMR_START_RF_LOW (0x2u << 8) /**< \brief (SSC_RCMR) Detection of a low level on RF signal */ +#define SSC_RCMR_START_RF_HIGH (0x3u << 8) /**< \brief (SSC_RCMR) Detection of a high level on RF signal */ +#define SSC_RCMR_START_RF_FALLING (0x4u << 8) /**< \brief (SSC_RCMR) Detection of a falling edge on RF signal */ +#define SSC_RCMR_START_RF_RISING (0x5u << 8) /**< \brief (SSC_RCMR) Detection of a rising edge on RF signal */ +#define SSC_RCMR_START_RF_LEVEL (0x6u << 8) /**< \brief (SSC_RCMR) Detection of any level change on RF signal */ +#define SSC_RCMR_START_RF_EDGE (0x7u << 8) /**< \brief (SSC_RCMR) Detection of any edge on RF signal */ +#define SSC_RCMR_START_CMP_0 (0x8u << 8) /**< \brief (SSC_RCMR) Compare 0 */ +#define SSC_RCMR_STOP (0x1u << 12) /**< \brief (SSC_RCMR) Receive Stop Selection */ +#define SSC_RCMR_STTDLY_Pos 16 +#define SSC_RCMR_STTDLY_Msk (0xffu << SSC_RCMR_STTDLY_Pos) /**< \brief (SSC_RCMR) Receive Start Delay */ +#define SSC_RCMR_STTDLY(value) ((SSC_RCMR_STTDLY_Msk & ((value) << SSC_RCMR_STTDLY_Pos))) +#define SSC_RCMR_PERIOD_Pos 24 +#define SSC_RCMR_PERIOD_Msk (0xffu << SSC_RCMR_PERIOD_Pos) /**< \brief (SSC_RCMR) Receive Period Divider Selection */ +#define SSC_RCMR_PERIOD(value) ((SSC_RCMR_PERIOD_Msk & ((value) << SSC_RCMR_PERIOD_Pos))) +/* -------- SSC_RFMR : (SSC Offset: 0x14) Receive Frame Mode Register -------- */ +#define SSC_RFMR_DATLEN_Pos 0 +#define SSC_RFMR_DATLEN_Msk (0x1fu << SSC_RFMR_DATLEN_Pos) /**< \brief (SSC_RFMR) Data Length */ +#define SSC_RFMR_DATLEN(value) ((SSC_RFMR_DATLEN_Msk & ((value) << SSC_RFMR_DATLEN_Pos))) +#define SSC_RFMR_LOOP (0x1u << 5) /**< \brief (SSC_RFMR) Loop Mode */ +#define SSC_RFMR_MSBF (0x1u << 7) /**< \brief (SSC_RFMR) Most Significant Bit First */ +#define SSC_RFMR_DATNB_Pos 8 +#define SSC_RFMR_DATNB_Msk (0xfu << SSC_RFMR_DATNB_Pos) /**< \brief (SSC_RFMR) Data Number per Frame */ +#define SSC_RFMR_DATNB(value) ((SSC_RFMR_DATNB_Msk & ((value) << SSC_RFMR_DATNB_Pos))) +#define SSC_RFMR_FSLEN_Pos 16 +#define SSC_RFMR_FSLEN_Msk (0xfu << SSC_RFMR_FSLEN_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Length */ +#define SSC_RFMR_FSLEN(value) ((SSC_RFMR_FSLEN_Msk & ((value) << SSC_RFMR_FSLEN_Pos))) +#define SSC_RFMR_FSOS_Pos 20 +#define SSC_RFMR_FSOS_Msk (0x7u << SSC_RFMR_FSOS_Pos) /**< \brief (SSC_RFMR) Receive Frame Sync Output Selection */ +#define SSC_RFMR_FSOS(value) ((SSC_RFMR_FSOS_Msk & ((value) << SSC_RFMR_FSOS_Pos))) +#define SSC_RFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_RFMR) None, RF pin is an input */ +#define SSC_RFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_RFMR) Negative Pulse, RF pin is an output */ +#define SSC_RFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_RFMR) Positive Pulse, RF pin is an output */ +#define SSC_RFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_RFMR) Driven Low during data transfer, RF pin is an output */ +#define SSC_RFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_RFMR) Driven High during data transfer, RF pin is an output */ +#define SSC_RFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_RFMR) Toggling at each start of data transfer, RF pin is an output */ +#define SSC_RFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_RFMR) Frame Sync Edge Detection */ +#define SSC_RFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_RFMR) Positive Edge Detection */ +#define SSC_RFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_RFMR) Negative Edge Detection */ +#define SSC_RFMR_FSLEN_EXT_Pos 28 +#define SSC_RFMR_FSLEN_EXT_Msk (0xfu << SSC_RFMR_FSLEN_EXT_Pos) /**< \brief (SSC_RFMR) FSLEN Field Extension */ +#define SSC_RFMR_FSLEN_EXT(value) ((SSC_RFMR_FSLEN_EXT_Msk & ((value) << SSC_RFMR_FSLEN_EXT_Pos))) +/* -------- SSC_TCMR : (SSC Offset: 0x18) Transmit Clock Mode Register -------- */ +#define SSC_TCMR_CKS_Pos 0 +#define SSC_TCMR_CKS_Msk (0x3u << SSC_TCMR_CKS_Pos) /**< \brief (SSC_TCMR) Transmit Clock Selection */ +#define SSC_TCMR_CKS(value) ((SSC_TCMR_CKS_Msk & ((value) << SSC_TCMR_CKS_Pos))) +#define SSC_TCMR_CKS_MCK (0x0u << 0) /**< \brief (SSC_TCMR) Divided Clock */ +#define SSC_TCMR_CKS_RK (0x1u << 0) /**< \brief (SSC_TCMR) RK Clock signal */ +#define SSC_TCMR_CKS_TK (0x2u << 0) /**< \brief (SSC_TCMR) TK pin */ +#define SSC_TCMR_CKO_Pos 2 +#define SSC_TCMR_CKO_Msk (0x7u << SSC_TCMR_CKO_Pos) /**< \brief (SSC_TCMR) Transmit Clock Output Mode Selection */ +#define SSC_TCMR_CKO(value) ((SSC_TCMR_CKO_Msk & ((value) << SSC_TCMR_CKO_Pos))) +#define SSC_TCMR_CKO_NONE (0x0u << 2) /**< \brief (SSC_TCMR) None, TK pin is an input */ +#define SSC_TCMR_CKO_CONTINUOUS (0x1u << 2) /**< \brief (SSC_TCMR) Continuous Transmit Clock, TK pin is an output */ +#define SSC_TCMR_CKO_TRANSFER (0x2u << 2) /**< \brief (SSC_TCMR) Transmit Clock only during data transfers, TK pin is an output */ +#define SSC_TCMR_CKI (0x1u << 5) /**< \brief (SSC_TCMR) Transmit Clock Inversion */ +#define SSC_TCMR_CKG_Pos 6 +#define SSC_TCMR_CKG_Msk (0x3u << SSC_TCMR_CKG_Pos) /**< \brief (SSC_TCMR) Transmit Clock Gating Selection */ +#define SSC_TCMR_CKG(value) ((SSC_TCMR_CKG_Msk & ((value) << SSC_TCMR_CKG_Pos))) +#define SSC_TCMR_CKG_CONTINUOUS (0x0u << 6) /**< \brief (SSC_TCMR) None */ +#define SSC_TCMR_CKG_EN_TF_LOW (0x1u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF Low */ +#define SSC_TCMR_CKG_EN_TF_HIGH (0x2u << 6) /**< \brief (SSC_TCMR) Transmit Clock enabled only if TF High */ +#define SSC_TCMR_START_Pos 8 +#define SSC_TCMR_START_Msk (0xfu << SSC_TCMR_START_Pos) /**< \brief (SSC_TCMR) Transmit Start Selection */ +#define SSC_TCMR_START(value) ((SSC_TCMR_START_Msk & ((value) << SSC_TCMR_START_Pos))) +#define SSC_TCMR_START_CONTINUOUS (0x0u << 8) /**< \brief (SSC_TCMR) Continuous, as soon as a word is written in the SSC_THR (if Transmit is enabled), and immediately after the end of transfer of the previous data */ +#define SSC_TCMR_START_RECEIVE (0x1u << 8) /**< \brief (SSC_TCMR) Receive start */ +#define SSC_TCMR_START_TF_LOW (0x2u << 8) /**< \brief (SSC_TCMR) Detection of a low level on TF signal */ +#define SSC_TCMR_START_TF_HIGH (0x3u << 8) /**< \brief (SSC_TCMR) Detection of a high level on TF signal */ +#define SSC_TCMR_START_TF_FALLING (0x4u << 8) /**< \brief (SSC_TCMR) Detection of a falling edge on TF signal */ +#define SSC_TCMR_START_TF_RISING (0x5u << 8) /**< \brief (SSC_TCMR) Detection of a rising edge on TF signal */ +#define SSC_TCMR_START_TF_LEVEL (0x6u << 8) /**< \brief (SSC_TCMR) Detection of any level change on TF signal */ +#define SSC_TCMR_START_TF_EDGE (0x7u << 8) /**< \brief (SSC_TCMR) Detection of any edge on TF signal */ +#define SSC_TCMR_STTDLY_Pos 16 +#define SSC_TCMR_STTDLY_Msk (0xffu << SSC_TCMR_STTDLY_Pos) /**< \brief (SSC_TCMR) Transmit Start Delay */ +#define SSC_TCMR_STTDLY(value) ((SSC_TCMR_STTDLY_Msk & ((value) << SSC_TCMR_STTDLY_Pos))) +#define SSC_TCMR_PERIOD_Pos 24 +#define SSC_TCMR_PERIOD_Msk (0xffu << SSC_TCMR_PERIOD_Pos) /**< \brief (SSC_TCMR) Transmit Period Divider Selection */ +#define SSC_TCMR_PERIOD(value) ((SSC_TCMR_PERIOD_Msk & ((value) << SSC_TCMR_PERIOD_Pos))) +/* -------- SSC_TFMR : (SSC Offset: 0x1C) Transmit Frame Mode Register -------- */ +#define SSC_TFMR_DATLEN_Pos 0 +#define SSC_TFMR_DATLEN_Msk (0x1fu << SSC_TFMR_DATLEN_Pos) /**< \brief (SSC_TFMR) Data Length */ +#define SSC_TFMR_DATLEN(value) ((SSC_TFMR_DATLEN_Msk & ((value) << SSC_TFMR_DATLEN_Pos))) +#define SSC_TFMR_DATDEF (0x1u << 5) /**< \brief (SSC_TFMR) Data Default Value */ +#define SSC_TFMR_MSBF (0x1u << 7) /**< \brief (SSC_TFMR) Most Significant Bit First */ +#define SSC_TFMR_DATNB_Pos 8 +#define SSC_TFMR_DATNB_Msk (0xfu << SSC_TFMR_DATNB_Pos) /**< \brief (SSC_TFMR) Data Number per Frame */ +#define SSC_TFMR_DATNB(value) ((SSC_TFMR_DATNB_Msk & ((value) << SSC_TFMR_DATNB_Pos))) +#define SSC_TFMR_FSLEN_Pos 16 +#define SSC_TFMR_FSLEN_Msk (0xfu << SSC_TFMR_FSLEN_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Length */ +#define SSC_TFMR_FSLEN(value) ((SSC_TFMR_FSLEN_Msk & ((value) << SSC_TFMR_FSLEN_Pos))) +#define SSC_TFMR_FSOS_Pos 20 +#define SSC_TFMR_FSOS_Msk (0x7u << SSC_TFMR_FSOS_Pos) /**< \brief (SSC_TFMR) Transmit Frame Sync Output Selection */ +#define SSC_TFMR_FSOS(value) ((SSC_TFMR_FSOS_Msk & ((value) << SSC_TFMR_FSOS_Pos))) +#define SSC_TFMR_FSOS_NONE (0x0u << 20) /**< \brief (SSC_TFMR) None, TF pin is an input */ +#define SSC_TFMR_FSOS_NEGATIVE (0x1u << 20) /**< \brief (SSC_TFMR) Negative Pulse, TF pin is an output */ +#define SSC_TFMR_FSOS_POSITIVE (0x2u << 20) /**< \brief (SSC_TFMR) Positive Pulse, TF pin is an output */ +#define SSC_TFMR_FSOS_LOW (0x3u << 20) /**< \brief (SSC_TFMR) Driven Low during data transfer */ +#define SSC_TFMR_FSOS_HIGH (0x4u << 20) /**< \brief (SSC_TFMR) Driven High during data transfer */ +#define SSC_TFMR_FSOS_TOGGLING (0x5u << 20) /**< \brief (SSC_TFMR) Toggling at each start of data transfer */ +#define SSC_TFMR_FSDEN (0x1u << 23) /**< \brief (SSC_TFMR) Frame Sync Data Enable */ +#define SSC_TFMR_FSEDGE (0x1u << 24) /**< \brief (SSC_TFMR) Frame Sync Edge Detection */ +#define SSC_TFMR_FSEDGE_POSITIVE (0x0u << 24) /**< \brief (SSC_TFMR) Positive Edge Detection */ +#define SSC_TFMR_FSEDGE_NEGATIVE (0x1u << 24) /**< \brief (SSC_TFMR) Negative Edge Detection */ +#define SSC_TFMR_FSLEN_EXT_Pos 28 +#define SSC_TFMR_FSLEN_EXT_Msk (0xfu << SSC_TFMR_FSLEN_EXT_Pos) /**< \brief (SSC_TFMR) FSLEN Field Extension */ +#define SSC_TFMR_FSLEN_EXT(value) ((SSC_TFMR_FSLEN_EXT_Msk & ((value) << SSC_TFMR_FSLEN_EXT_Pos))) +/* -------- SSC_RHR : (SSC Offset: 0x20) Receive Holding Register -------- */ +#define SSC_RHR_RDAT_Pos 0 +#define SSC_RHR_RDAT_Msk (0xffffffffu << SSC_RHR_RDAT_Pos) /**< \brief (SSC_RHR) Receive Data */ +/* -------- SSC_THR : (SSC Offset: 0x24) Transmit Holding Register -------- */ +#define SSC_THR_TDAT_Pos 0 +#define SSC_THR_TDAT_Msk (0xffffffffu << SSC_THR_TDAT_Pos) /**< \brief (SSC_THR) Transmit Data */ +#define SSC_THR_TDAT(value) ((SSC_THR_TDAT_Msk & ((value) << SSC_THR_TDAT_Pos))) +/* -------- SSC_RSHR : (SSC Offset: 0x30) Receive Sync. Holding Register -------- */ +#define SSC_RSHR_RSDAT_Pos 0 +#define SSC_RSHR_RSDAT_Msk (0xffffu << SSC_RSHR_RSDAT_Pos) /**< \brief (SSC_RSHR) Receive Synchronization Data */ +/* -------- SSC_TSHR : (SSC Offset: 0x34) Transmit Sync. Holding Register -------- */ +#define SSC_TSHR_TSDAT_Pos 0 +#define SSC_TSHR_TSDAT_Msk (0xffffu << SSC_TSHR_TSDAT_Pos) /**< \brief (SSC_TSHR) Transmit Synchronization Data */ +#define SSC_TSHR_TSDAT(value) ((SSC_TSHR_TSDAT_Msk & ((value) << SSC_TSHR_TSDAT_Pos))) +/* -------- SSC_RC0R : (SSC Offset: 0x38) Receive Compare 0 Register -------- */ +#define SSC_RC0R_CP0_Pos 0 +#define SSC_RC0R_CP0_Msk (0xffffu << SSC_RC0R_CP0_Pos) /**< \brief (SSC_RC0R) Receive Compare Data 0 */ +#define SSC_RC0R_CP0(value) ((SSC_RC0R_CP0_Msk & ((value) << SSC_RC0R_CP0_Pos))) +/* -------- SSC_RC1R : (SSC Offset: 0x3C) Receive Compare 1 Register -------- */ +#define SSC_RC1R_CP1_Pos 0 +#define SSC_RC1R_CP1_Msk (0xffffu << SSC_RC1R_CP1_Pos) /**< \brief (SSC_RC1R) Receive Compare Data 1 */ +#define SSC_RC1R_CP1(value) ((SSC_RC1R_CP1_Msk & ((value) << SSC_RC1R_CP1_Pos))) +/* -------- SSC_SR : (SSC Offset: 0x40) Status Register -------- */ +#define SSC_SR_TXRDY (0x1u << 0) /**< \brief (SSC_SR) Transmit Ready */ +#define SSC_SR_TXEMPTY (0x1u << 1) /**< \brief (SSC_SR) Transmit Empty */ +#define SSC_SR_RXRDY (0x1u << 4) /**< \brief (SSC_SR) Receive Ready */ +#define SSC_SR_OVRUN (0x1u << 5) /**< \brief (SSC_SR) Receive Overrun */ +#define SSC_SR_CP0 (0x1u << 8) /**< \brief (SSC_SR) Compare 0 */ +#define SSC_SR_CP1 (0x1u << 9) /**< \brief (SSC_SR) Compare 1 */ +#define SSC_SR_TXSYN (0x1u << 10) /**< \brief (SSC_SR) Transmit Sync */ +#define SSC_SR_RXSYN (0x1u << 11) /**< \brief (SSC_SR) Receive Sync */ +#define SSC_SR_TXEN (0x1u << 16) /**< \brief (SSC_SR) Transmit Enable */ +#define SSC_SR_RXEN (0x1u << 17) /**< \brief (SSC_SR) Receive Enable */ +/* -------- SSC_IER : (SSC Offset: 0x44) Interrupt Enable Register -------- */ +#define SSC_IER_TXRDY (0x1u << 0) /**< \brief (SSC_IER) Transmit Ready Interrupt Enable */ +#define SSC_IER_TXEMPTY (0x1u << 1) /**< \brief (SSC_IER) Transmit Empty Interrupt Enable */ +#define SSC_IER_RXRDY (0x1u << 4) /**< \brief (SSC_IER) Receive Ready Interrupt Enable */ +#define SSC_IER_OVRUN (0x1u << 5) /**< \brief (SSC_IER) Receive Overrun Interrupt Enable */ +#define SSC_IER_CP0 (0x1u << 8) /**< \brief (SSC_IER) Compare 0 Interrupt Enable */ +#define SSC_IER_CP1 (0x1u << 9) /**< \brief (SSC_IER) Compare 1 Interrupt Enable */ +#define SSC_IER_TXSYN (0x1u << 10) /**< \brief (SSC_IER) Tx Sync Interrupt Enable */ +#define SSC_IER_RXSYN (0x1u << 11) /**< \brief (SSC_IER) Rx Sync Interrupt Enable */ +/* -------- SSC_IDR : (SSC Offset: 0x48) Interrupt Disable Register -------- */ +#define SSC_IDR_TXRDY (0x1u << 0) /**< \brief (SSC_IDR) Transmit Ready Interrupt Disable */ +#define SSC_IDR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IDR) Transmit Empty Interrupt Disable */ +#define SSC_IDR_RXRDY (0x1u << 4) /**< \brief (SSC_IDR) Receive Ready Interrupt Disable */ +#define SSC_IDR_OVRUN (0x1u << 5) /**< \brief (SSC_IDR) Receive Overrun Interrupt Disable */ +#define SSC_IDR_CP0 (0x1u << 8) /**< \brief (SSC_IDR) Compare 0 Interrupt Disable */ +#define SSC_IDR_CP1 (0x1u << 9) /**< \brief (SSC_IDR) Compare 1 Interrupt Disable */ +#define SSC_IDR_TXSYN (0x1u << 10) /**< \brief (SSC_IDR) Tx Sync Interrupt Enable */ +#define SSC_IDR_RXSYN (0x1u << 11) /**< \brief (SSC_IDR) Rx Sync Interrupt Enable */ +/* -------- SSC_IMR : (SSC Offset: 0x4C) Interrupt Mask Register -------- */ +#define SSC_IMR_TXRDY (0x1u << 0) /**< \brief (SSC_IMR) Transmit Ready Interrupt Mask */ +#define SSC_IMR_TXEMPTY (0x1u << 1) /**< \brief (SSC_IMR) Transmit Empty Interrupt Mask */ +#define SSC_IMR_RXRDY (0x1u << 4) /**< \brief (SSC_IMR) Receive Ready Interrupt Mask */ +#define SSC_IMR_OVRUN (0x1u << 5) /**< \brief (SSC_IMR) Receive Overrun Interrupt Mask */ +#define SSC_IMR_CP0 (0x1u << 8) /**< \brief (SSC_IMR) Compare 0 Interrupt Mask */ +#define SSC_IMR_CP1 (0x1u << 9) /**< \brief (SSC_IMR) Compare 1 Interrupt Mask */ +#define SSC_IMR_TXSYN (0x1u << 10) /**< \brief (SSC_IMR) Tx Sync Interrupt Mask */ +#define SSC_IMR_RXSYN (0x1u << 11) /**< \brief (SSC_IMR) Rx Sync Interrupt Mask */ +/* -------- SSC_WPMR : (SSC Offset: 0xE4) Write Protection Mode Register -------- */ +#define SSC_WPMR_WPEN (0x1u << 0) /**< \brief (SSC_WPMR) Write Protection Enable */ +#define SSC_WPMR_WPKEY_Pos 8 +#define SSC_WPMR_WPKEY_Msk (0xffffffu << SSC_WPMR_WPKEY_Pos) /**< \brief (SSC_WPMR) Write Protection Key */ +#define SSC_WPMR_WPKEY(value) ((SSC_WPMR_WPKEY_Msk & ((value) << SSC_WPMR_WPKEY_Pos))) +#define SSC_WPMR_WPKEY_PASSWD (0x535343u << 8) /**< \brief (SSC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- SSC_WPSR : (SSC Offset: 0xE8) Write Protection Status Register -------- */ +#define SSC_WPSR_WPVS (0x1u << 0) /**< \brief (SSC_WPSR) Write Protection Violation Status */ +#define SSC_WPSR_WPVSRC_Pos 8 +#define SSC_WPSR_WPVSRC_Msk (0xffffu << SSC_WPSR_WPVSRC_Pos) /**< \brief (SSC_WPSR) Write Protect Violation Source */ +/* -------- SSC_VERSION : (SSC Offset: 0xFC) Version Register -------- */ +#define SSC_VERSION_VERSION_Pos 0 +#define SSC_VERSION_VERSION_Msk (0xffffu << SSC_VERSION_VERSION_Pos) /**< \brief (SSC_VERSION) Version of the Hardware Module */ +#define SSC_VERSION_MFN_Pos 16 +#define SSC_VERSION_MFN_Msk (0x7u << SSC_VERSION_MFN_Pos) /**< \brief (SSC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_SSC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h new file mode 100644 index 00000000..a1d84869 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h @@ -0,0 +1,306 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70_SUPC_COMPONENT_ +#define _SAME70_SUPC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Supply Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_SUPC Supply Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Supc hardware registers */ +typedef struct { + __O uint32_t SUPC_CR; /**< \brief (Supc Offset: 0x00) Supply Controller Control Register */ + __IO uint32_t SUPC_SMMR; /**< \brief (Supc Offset: 0x04) Supply Controller Supply Monitor Mode Register */ + __IO uint32_t SUPC_MR; /**< \brief (Supc Offset: 0x08) Supply Controller Mode Register */ + __IO uint32_t SUPC_WUMR; /**< \brief (Supc Offset: 0x0C) Supply Controller Wake-up Mode Register */ + __IO uint32_t SUPC_WUIR; /**< \brief (Supc Offset: 0x10) Supply Controller Wake-up Inputs Register */ + __I uint32_t SUPC_SR; /**< \brief (Supc Offset: 0x14) Supply Controller Status Register */ + __I uint32_t Reserved1[57]; + __I uint32_t SYSC_VERSION; /**< \brief (Supc Offset: 0xFC) Version Register */ +} Supc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- SUPC_CR : (SUPC Offset: 0x00) Supply Controller Control Register -------- */ +#define SUPC_CR_VROFF (0x1u << 2) /**< \brief (SUPC_CR) Voltage Regulator Off */ +#define SUPC_CR_VROFF_NO_EFFECT (0x0u << 2) /**< \brief (SUPC_CR) No effect. */ +#define SUPC_CR_VROFF_STOP_VREG (0x1u << 2) /**< \brief (SUPC_CR) If KEY is correct, VROFF asserts the vddcore_nreset and stops the voltage regulator. */ +#define SUPC_CR_XTALSEL (0x1u << 3) /**< \brief (SUPC_CR) Crystal Oscillator Select */ +#define SUPC_CR_XTALSEL_NO_EFFECT (0x0u << 3) /**< \brief (SUPC_CR) No effect. */ +#define SUPC_CR_XTALSEL_CRYSTAL_SEL (0x1u << 3) /**< \brief (SUPC_CR) If KEY is correct, XTALSEL switches the slow clock on the crystal oscillator output. */ +#define SUPC_CR_KEY_Pos 24 +#define SUPC_CR_KEY_Msk (0xffu << SUPC_CR_KEY_Pos) /**< \brief (SUPC_CR) Password */ +#define SUPC_CR_KEY(value) ((SUPC_CR_KEY_Msk & ((value) << SUPC_CR_KEY_Pos))) +#define SUPC_CR_KEY_PASSWD (0xA5u << 24) /**< \brief (SUPC_CR) Writing any other value in this field aborts the write operation. */ +/* -------- SUPC_SMMR : (SUPC Offset: 0x04) Supply Controller Supply Monitor Mode Register -------- */ +#define SUPC_SMMR_SMTH_Pos 0 +#define SUPC_SMMR_SMTH_Msk (0xfu << SUPC_SMMR_SMTH_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Threshold */ +#define SUPC_SMMR_SMTH(value) ((SUPC_SMMR_SMTH_Msk & ((value) << SUPC_SMMR_SMTH_Pos))) +#define SUPC_SMMR_SMSMPL_Pos 8 +#define SUPC_SMMR_SMSMPL_Msk (0x7u << SUPC_SMMR_SMSMPL_Pos) /**< \brief (SUPC_SMMR) Supply Monitor Sampling Period */ +#define SUPC_SMMR_SMSMPL(value) ((SUPC_SMMR_SMSMPL_Msk & ((value) << SUPC_SMMR_SMSMPL_Pos))) +#define SUPC_SMMR_SMSMPL_SMD (0x0u << 8) /**< \brief (SUPC_SMMR) Supply Monitor disabled */ +#define SUPC_SMMR_SMSMPL_CSM (0x1u << 8) /**< \brief (SUPC_SMMR) Continuous Supply Monitor */ +#define SUPC_SMMR_SMSMPL_32SLCK (0x2u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 32 SLCK periods */ +#define SUPC_SMMR_SMSMPL_256SLCK (0x3u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 256 SLCK periods */ +#define SUPC_SMMR_SMSMPL_2048SLCK (0x4u << 8) /**< \brief (SUPC_SMMR) Supply Monitor enabled one SLCK period every 2,048 SLCK periods */ +#define SUPC_SMMR_SMRSTEN (0x1u << 12) /**< \brief (SUPC_SMMR) Supply Monitor Reset Enable */ +#define SUPC_SMMR_SMRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_SMMR) The core reset signal vddcore_nreset is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_SMMR) The core reset signal, vddcore_nreset is asserted when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN (0x1u << 13) /**< \brief (SUPC_SMMR) Supply Monitor Interrupt Enable */ +#define SUPC_SMMR_SMIEN_NOT_ENABLE (0x0u << 13) /**< \brief (SUPC_SMMR) The SUPC interrupt signal is not affected when a supply monitor detection occurs. */ +#define SUPC_SMMR_SMIEN_ENABLE (0x1u << 13) /**< \brief (SUPC_SMMR) The SUPC interrupt signal is asserted when a supply monitor detection occurs. */ +/* -------- SUPC_MR : (SUPC Offset: 0x08) Supply Controller Mode Register -------- */ +#define SUPC_MR_BODRSTEN (0x1u << 12) /**< \brief (SUPC_MR) Brownout Detector Reset Enable */ +#define SUPC_MR_BODRSTEN_NOT_ENABLE (0x0u << 12) /**< \brief (SUPC_MR) The core reset signal vddcore_nreset is not affected when a brownout detection occurs. */ +#define SUPC_MR_BODRSTEN_ENABLE (0x1u << 12) /**< \brief (SUPC_MR) The core reset signal, vddcore_nreset is asserted when a brownout detection occurs. */ +#define SUPC_MR_BODDIS (0x1u << 13) /**< \brief (SUPC_MR) Brownout Detector Disable */ +#define SUPC_MR_BODDIS_ENABLE (0x0u << 13) /**< \brief (SUPC_MR) The core brownout detector is enabled. */ +#define SUPC_MR_BODDIS_DISABLE (0x1u << 13) /**< \brief (SUPC_MR) The core brownout detector is disabled. */ +#define SUPC_MR_ONREG (0x1u << 14) /**< \brief (SUPC_MR) Voltage Regulator Enable */ +#define SUPC_MR_ONREG_ONREG_UNUSED (0x0u << 14) /**< \brief (SUPC_MR) Internal voltage regulator is not used (external power supply is used). */ +#define SUPC_MR_ONREG_ONREG_USED (0x1u << 14) /**< \brief (SUPC_MR) Internal voltage regulator is used. */ +#define SUPC_MR_BKUPRETON (0x1u << 17) /**< \brief (SUPC_MR) SRAM On In Backup Mode */ +#define SUPC_MR_OSCBYPASS (0x1u << 20) /**< \brief (SUPC_MR) Oscillator Bypass */ +#define SUPC_MR_OSCBYPASS_NO_EFFECT (0x0u << 20) /**< \brief (SUPC_MR) No effect. Clock selection depends on the value of XTALSEL (SUPC_CR). */ +#define SUPC_MR_OSCBYPASS_BYPASS (0x1u << 20) /**< \brief (SUPC_MR) The 32 kHz crystal oscillator is bypassed if XTALSEL (SUPC_CR) is set. OSCBYPASS must be set prior to setting XTALSEL. */ +#define SUPC_MR_KEY_Pos 24 +#define SUPC_MR_KEY_Msk (0xffu << SUPC_MR_KEY_Pos) /**< \brief (SUPC_MR) Password Key */ +#define SUPC_MR_KEY(value) ((SUPC_MR_KEY_Msk & ((value) << SUPC_MR_KEY_Pos))) +#define SUPC_MR_KEY_PASSWD (0xA5u << 24) /**< \brief (SUPC_MR) Writing any other value in this field aborts the write operation. */ +/* -------- SUPC_WUMR : (SUPC Offset: 0x0C) Supply Controller Wake-up Mode Register -------- */ +#define SUPC_WUMR_SMEN (0x1u << 1) /**< \brief (SUPC_WUMR) Supply Monitor Wake-up Enable */ +#define SUPC_WUMR_SMEN_NOT_ENABLE (0x0u << 1) /**< \brief (SUPC_WUMR) The supply monitor detection has no wake-up effect. */ +#define SUPC_WUMR_SMEN_ENABLE (0x1u << 1) /**< \brief (SUPC_WUMR) The supply monitor detection forces the wake-up of the core power supply. */ +#define SUPC_WUMR_RTTEN (0x1u << 2) /**< \brief (SUPC_WUMR) Real-time Timer Wake-up Enable */ +#define SUPC_WUMR_RTTEN_NOT_ENABLE (0x0u << 2) /**< \brief (SUPC_WUMR) The RTT alarm signal has no wake-up effect. */ +#define SUPC_WUMR_RTTEN_ENABLE (0x1u << 2) /**< \brief (SUPC_WUMR) The RTT alarm signal forces the wake-up of the core power supply. */ +#define SUPC_WUMR_RTCEN (0x1u << 3) /**< \brief (SUPC_WUMR) Real-time Clock Wake-up Enable */ +#define SUPC_WUMR_RTCEN_NOT_ENABLE (0x0u << 3) /**< \brief (SUPC_WUMR) The RTC alarm signal has no wake-up effect. */ +#define SUPC_WUMR_RTCEN_ENABLE (0x1u << 3) /**< \brief (SUPC_WUMR) The RTC alarm signal forces the wake-up of the core power supply. */ +#define SUPC_WUMR_LPDBCEN0 (0x1u << 5) /**< \brief (SUPC_WUMR) Low-power Debouncer Enable WKUP0 */ +#define SUPC_WUMR_LPDBCEN0_NOT_ENABLE (0x0u << 5) /**< \brief (SUPC_WUMR) The WKUP0 input pin is not connected to the low-power debouncer. */ +#define SUPC_WUMR_LPDBCEN0_ENABLE (0x1u << 5) /**< \brief (SUPC_WUMR) The WKUP0 input pin is connected to the low-power debouncer and forces a system wake-up. */ +#define SUPC_WUMR_LPDBCEN1 (0x1u << 6) /**< \brief (SUPC_WUMR) Low-power Debouncer Enable WKUP1 */ +#define SUPC_WUMR_LPDBCEN1_NOT_ENABLE (0x0u << 6) /**< \brief (SUPC_WUMR) The WKUP1 input pin is not connected to the low-power debouncer. */ +#define SUPC_WUMR_LPDBCEN1_ENABLE (0x1u << 6) /**< \brief (SUPC_WUMR) The WKUP1 input pin is connected to the low-power debouncer and forces a system wake-up. */ +#define SUPC_WUMR_LPDBCCLR (0x1u << 7) /**< \brief (SUPC_WUMR) Low-power Debouncer Clear */ +#define SUPC_WUMR_LPDBCCLR_NOT_ENABLE (0x0u << 7) /**< \brief (SUPC_WUMR) A low-power debounce event does not create an immediate clear on the first half of GPBR registers. */ +#define SUPC_WUMR_LPDBCCLR_ENABLE (0x1u << 7) /**< \brief (SUPC_WUMR) A low-power debounce event on WKUP0 or WKUP1 generates an immediate clear on the first half of GPBR registers. */ +#define SUPC_WUMR_WKUPDBC_Pos 12 +#define SUPC_WUMR_WKUPDBC_Msk (0x7u << SUPC_WUMR_WKUPDBC_Pos) /**< \brief (SUPC_WUMR) Wake-up Inputs Debouncer Period */ +#define SUPC_WUMR_WKUPDBC(value) ((SUPC_WUMR_WKUPDBC_Msk & ((value) << SUPC_WUMR_WKUPDBC_Pos))) +#define SUPC_WUMR_WKUPDBC_IMMEDIATE (0x0u << 12) /**< \brief (SUPC_WUMR) Immediate, no debouncing, detected active at least on one Slow Clock edge. */ +#define SUPC_WUMR_WKUPDBC_3_SLCK (0x1u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 3 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32_SLCK (0x2u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_512_SLCK (0x3u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 512 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_4096_SLCK (0x4u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 4,096 SLCK periods */ +#define SUPC_WUMR_WKUPDBC_32768_SLCK (0x5u << 12) /**< \brief (SUPC_WUMR) WKUPx shall be in its active state for at least 32,768 SLCK periods */ +#define SUPC_WUMR_LPDBC_Pos 16 +#define SUPC_WUMR_LPDBC_Msk (0x7u << SUPC_WUMR_LPDBC_Pos) /**< \brief (SUPC_WUMR) Low-power Debouncer Period */ +#define SUPC_WUMR_LPDBC(value) ((SUPC_WUMR_LPDBC_Msk & ((value) << SUPC_WUMR_LPDBC_Pos))) +#define SUPC_WUMR_LPDBC_DISABLE (0x0u << 16) /**< \brief (SUPC_WUMR) Disable the low-power debouncers. */ +#define SUPC_WUMR_LPDBC_2_RTCOUT (0x1u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 2 RTCOUTx clock periods */ +#define SUPC_WUMR_LPDBC_3_RTCOUT (0x2u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 3 RTCOUTx clock periods */ +#define SUPC_WUMR_LPDBC_4_RTCOUT (0x3u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 4 RTCOUTx clock periods */ +#define SUPC_WUMR_LPDBC_5_RTCOUT (0x4u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 5 RTCOUTx clock periods */ +#define SUPC_WUMR_LPDBC_6_RTCOUT (0x5u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 6 RTCOUTx clock periods */ +#define SUPC_WUMR_LPDBC_7_RTCOUT (0x6u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 7 RTCOUTx clock periods */ +#define SUPC_WUMR_LPDBC_8_RTCOUT (0x7u << 16) /**< \brief (SUPC_WUMR) WKUP0/1 in active state for at least 8 RTCOUTx clock periods */ +/* -------- SUPC_WUIR : (SUPC Offset: 0x10) Supply Controller Wake-up Inputs Register -------- */ +#define SUPC_WUIR_WKUPEN0 (0x1u << 0) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 0 */ +#define SUPC_WUIR_WKUPEN0_DISABLE (0x0u << 0) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN0_ENABLE (0x1u << 0) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN1 (0x1u << 1) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 1 */ +#define SUPC_WUIR_WKUPEN1_DISABLE (0x0u << 1) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN1_ENABLE (0x1u << 1) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN2 (0x1u << 2) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 2 */ +#define SUPC_WUIR_WKUPEN2_DISABLE (0x0u << 2) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN2_ENABLE (0x1u << 2) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN3 (0x1u << 3) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 3 */ +#define SUPC_WUIR_WKUPEN3_DISABLE (0x0u << 3) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN3_ENABLE (0x1u << 3) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN4 (0x1u << 4) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 4 */ +#define SUPC_WUIR_WKUPEN4_DISABLE (0x0u << 4) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN4_ENABLE (0x1u << 4) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN5 (0x1u << 5) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 5 */ +#define SUPC_WUIR_WKUPEN5_DISABLE (0x0u << 5) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN5_ENABLE (0x1u << 5) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN6 (0x1u << 6) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 6 */ +#define SUPC_WUIR_WKUPEN6_DISABLE (0x0u << 6) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN6_ENABLE (0x1u << 6) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN7 (0x1u << 7) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 7 */ +#define SUPC_WUIR_WKUPEN7_DISABLE (0x0u << 7) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN7_ENABLE (0x1u << 7) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN8 (0x1u << 8) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 8 */ +#define SUPC_WUIR_WKUPEN8_DISABLE (0x0u << 8) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN8_ENABLE (0x1u << 8) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN9 (0x1u << 9) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 9 */ +#define SUPC_WUIR_WKUPEN9_DISABLE (0x0u << 9) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN9_ENABLE (0x1u << 9) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN10 (0x1u << 10) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 10 */ +#define SUPC_WUIR_WKUPEN10_DISABLE (0x0u << 10) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN10_ENABLE (0x1u << 10) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN11 (0x1u << 11) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 11 */ +#define SUPC_WUIR_WKUPEN11_DISABLE (0x0u << 11) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN11_ENABLE (0x1u << 11) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN12 (0x1u << 12) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 12 */ +#define SUPC_WUIR_WKUPEN12_DISABLE (0x0u << 12) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN12_ENABLE (0x1u << 12) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPEN13 (0x1u << 13) /**< \brief (SUPC_WUIR) Wake-up Input Enable 0 to 13 */ +#define SUPC_WUIR_WKUPEN13_DISABLE (0x0u << 13) /**< \brief (SUPC_WUIR) The corresponding wake-up input has no wake-up effect. */ +#define SUPC_WUIR_WKUPEN13_ENABLE (0x1u << 13) /**< \brief (SUPC_WUIR) The corresponding wake-up input is enabled for a wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT0 (0x1u << 16) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 0 */ +#define SUPC_WUIR_WKUPT0_LOW (0x0u << 16) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT0_HIGH (0x1u << 16) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT1 (0x1u << 17) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 1 */ +#define SUPC_WUIR_WKUPT1_LOW (0x0u << 17) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT1_HIGH (0x1u << 17) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT2 (0x1u << 18) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 2 */ +#define SUPC_WUIR_WKUPT2_LOW (0x0u << 18) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT2_HIGH (0x1u << 18) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT3 (0x1u << 19) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 3 */ +#define SUPC_WUIR_WKUPT3_LOW (0x0u << 19) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT3_HIGH (0x1u << 19) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT4 (0x1u << 20) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 4 */ +#define SUPC_WUIR_WKUPT4_LOW (0x0u << 20) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT4_HIGH (0x1u << 20) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT5 (0x1u << 21) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 5 */ +#define SUPC_WUIR_WKUPT5_LOW (0x0u << 21) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT5_HIGH (0x1u << 21) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT6 (0x1u << 22) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 6 */ +#define SUPC_WUIR_WKUPT6_LOW (0x0u << 22) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT6_HIGH (0x1u << 22) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT7 (0x1u << 23) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 7 */ +#define SUPC_WUIR_WKUPT7_LOW (0x0u << 23) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT7_HIGH (0x1u << 23) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT8 (0x1u << 24) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 8 */ +#define SUPC_WUIR_WKUPT8_LOW (0x0u << 24) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT8_HIGH (0x1u << 24) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT9 (0x1u << 25) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 9 */ +#define SUPC_WUIR_WKUPT9_LOW (0x0u << 25) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT9_HIGH (0x1u << 25) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT10 (0x1u << 26) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 10 */ +#define SUPC_WUIR_WKUPT10_LOW (0x0u << 26) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT10_HIGH (0x1u << 26) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT11 (0x1u << 27) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 11 */ +#define SUPC_WUIR_WKUPT11_LOW (0x0u << 27) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT11_HIGH (0x1u << 27) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT12 (0x1u << 28) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 12 */ +#define SUPC_WUIR_WKUPT12_LOW (0x0u << 28) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT12_HIGH (0x1u << 28) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT13 (0x1u << 29) /**< \brief (SUPC_WUIR) Wake-up Input Type 0 to 13 */ +#define SUPC_WUIR_WKUPT13_LOW (0x0u << 29) /**< \brief (SUPC_WUIR) A falling edge followed by a low level for a period defined by WKUPDBC on the corre-sponding wake-up input forces the wake-up of the core power supply. */ +#define SUPC_WUIR_WKUPT13_HIGH (0x1u << 29) /**< \brief (SUPC_WUIR) A rising edge followed by a high level for a period defined by WKUPDBC on the cor-responding wake-up input forces the wake-up of the core power supply. */ +/* -------- SUPC_SR : (SUPC Offset: 0x14) Supply Controller Status Register -------- */ +#define SUPC_SR_WKUPS (0x1u << 1) /**< \brief (SUPC_SR) WKUP Wake-up Status (cleared on read) */ +#define SUPC_SR_WKUPS_NO (0x0u << 1) /**< \brief (SUPC_SR) No wake-up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPS_PRESENT (0x1u << 1) /**< \brief (SUPC_SR) At least one wake-up due to the assertion of the WKUP pins has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS (0x1u << 2) /**< \brief (SUPC_SR) Supply Monitor Detection Wake-up Status (cleared on read) */ +#define SUPC_SR_SMWS_NO (0x0u << 2) /**< \brief (SUPC_SR) No wake-up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_SMWS_PRESENT (0x1u << 2) /**< \brief (SUPC_SR) At least one wake-up due to a supply monitor detection has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_BODRSTS (0x1u << 3) /**< \brief (SUPC_SR) Brownout Detector Reset Status (cleared on read) */ +#define SUPC_SR_BODRSTS_NO (0x0u << 3) /**< \brief (SUPC_SR) No core brownout rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_BODRSTS_PRESENT (0x1u << 3) /**< \brief (SUPC_SR) At least one brownout output rising edge event has been detected since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS (0x1u << 4) /**< \brief (SUPC_SR) Supply Monitor Reset Status (cleared on read) */ +#define SUPC_SR_SMRSTS_NO (0x0u << 4) /**< \brief (SUPC_SR) No supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMRSTS_PRESENT (0x1u << 4) /**< \brief (SUPC_SR) At least one supply monitor detection has generated a core reset since the last read of the SUPC_SR. */ +#define SUPC_SR_SMS (0x1u << 5) /**< \brief (SUPC_SR) Supply Monitor Status (cleared on read) */ +#define SUPC_SR_SMS_NO (0x0u << 5) /**< \brief (SUPC_SR) No supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMS_PRESENT (0x1u << 5) /**< \brief (SUPC_SR) At least one supply monitor detection since the last read of SUPC_SR. */ +#define SUPC_SR_SMOS (0x1u << 6) /**< \brief (SUPC_SR) Supply Monitor Output Status */ +#define SUPC_SR_SMOS_HIGH (0x0u << 6) /**< \brief (SUPC_SR) The supply monitor detected VDDIO higher than its threshold at its last measurement. */ +#define SUPC_SR_SMOS_LOW (0x1u << 6) /**< \brief (SUPC_SR) The supply monitor detected VDDIO lower than its threshold at its last measurement. */ +#define SUPC_SR_OSCSEL (0x1u << 7) /**< \brief (SUPC_SR) 32-kHz Oscillator Selection Status */ +#define SUPC_SR_OSCSEL_RC (0x0u << 7) /**< \brief (SUPC_SR) The slow clock, SLCK, is generated by the embedded 32 kHz RC oscillator. */ +#define SUPC_SR_OSCSEL_CRYST (0x1u << 7) /**< \brief (SUPC_SR) The slow clock, SLCK, is generated by the 32 kHz crystal oscillator. */ +#define SUPC_SR_LPDBCS0 (0x1u << 13) /**< \brief (SUPC_SR) Low-power Debouncer Wake-up Status on WKUP0 (cleared on read) */ +#define SUPC_SR_LPDBCS0_NO (0x0u << 13) /**< \brief (SUPC_SR) No wake-up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS0_PRESENT (0x1u << 13) /**< \brief (SUPC_SR) At least one wake-up due to the assertion of the WKUP0 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS1 (0x1u << 14) /**< \brief (SUPC_SR) Low-power Debouncer Wake-up Status on WKUP1 (cleared on read) */ +#define SUPC_SR_LPDBCS1_NO (0x0u << 14) /**< \brief (SUPC_SR) No wake-up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_LPDBCS1_PRESENT (0x1u << 14) /**< \brief (SUPC_SR) At least one wake-up due to the assertion of the WKUP1 pin has occurred since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS0 (0x1u << 16) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS0_DIS (0x0u << 16) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS0_EN (0x1u << 16) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS1 (0x1u << 17) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS1_DIS (0x0u << 17) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS1_EN (0x1u << 17) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS2 (0x1u << 18) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS2_DIS (0x0u << 18) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS2_EN (0x1u << 18) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS3 (0x1u << 19) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS3_DIS (0x0u << 19) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS3_EN (0x1u << 19) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS4 (0x1u << 20) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS4_DIS (0x0u << 20) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS4_EN (0x1u << 20) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS5 (0x1u << 21) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS5_DIS (0x0u << 21) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS5_EN (0x1u << 21) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS6 (0x1u << 22) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS6_DIS (0x0u << 22) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS6_EN (0x1u << 22) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS7 (0x1u << 23) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS7_DIS (0x0u << 23) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS7_EN (0x1u << 23) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS8 (0x1u << 24) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS8_DIS (0x0u << 24) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS8_EN (0x1u << 24) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS9 (0x1u << 25) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS9_DIS (0x0u << 25) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS9_EN (0x1u << 25) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS10 (0x1u << 26) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS10_DIS (0x0u << 26) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS10_EN (0x1u << 26) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS11 (0x1u << 27) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS11_DIS (0x0u << 27) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS11_EN (0x1u << 27) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS12 (0x1u << 28) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS12_DIS (0x0u << 28) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS12_EN (0x1u << 28) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +#define SUPC_SR_WKUPIS13 (0x1u << 29) /**< \brief (SUPC_SR) WKUPx Input Status (cleared on read) */ +#define SUPC_SR_WKUPIS13_DIS (0x0u << 29) /**< \brief (SUPC_SR) The corresponding wake-up input is disabled, or was inactive at the time the debouncer triggered a wake-up event. */ +#define SUPC_SR_WKUPIS13_EN (0x1u << 29) /**< \brief (SUPC_SR) The corresponding wake-up input was active at the time the debouncer triggered a wake-up event since the last read of SUPC_SR. */ +/* -------- SYSC_VERSION : (SUPC Offset: 0xFC) Version Register -------- */ +#define SYSC_VERSION_VERSION_Pos 0 +#define SYSC_VERSION_VERSION_Msk (0xfffu << SYSC_VERSION_VERSION_Pos) /**< \brief (SYSC_VERSION) Version of the Hardware Module */ +#define SYSC_VERSION_MFN_Pos 16 +#define SYSC_VERSION_MFN_Msk (0x7u << SYSC_VERSION_MFN_Pos) /**< \brief (SYSC_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_SUPC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h new file mode 100644 index 00000000..8dfa807c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h @@ -0,0 +1,365 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TC_COMPONENT_ +#define _SAME70_TC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Timer Counter */ +/* ============================================================================= */ +/** \addtogroup SAME70_TC Timer Counter */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief TcChannel hardware registers */ +typedef struct { + __O uint32_t TC_CCR; /**< \brief (TcChannel Offset: 0x0) Channel Control Register */ + __IO uint32_t TC_CMR; /**< \brief (TcChannel Offset: 0x4) Channel Mode Register */ + __IO uint32_t TC_SMMR; /**< \brief (TcChannel Offset: 0x8) Stepper Motor Mode Register */ + __I uint32_t TC_RAB; /**< \brief (TcChannel Offset: 0xC) Register AB */ + __I uint32_t TC_CV; /**< \brief (TcChannel Offset: 0x10) Counter Value */ + __IO uint32_t TC_RA; /**< \brief (TcChannel Offset: 0x14) Register A */ + __IO uint32_t TC_RB; /**< \brief (TcChannel Offset: 0x18) Register B */ + __IO uint32_t TC_RC; /**< \brief (TcChannel Offset: 0x1C) Register C */ + __I uint32_t TC_SR; /**< \brief (TcChannel Offset: 0x20) Status Register */ + __O uint32_t TC_IER; /**< \brief (TcChannel Offset: 0x24) Interrupt Enable Register */ + __O uint32_t TC_IDR; /**< \brief (TcChannel Offset: 0x28) Interrupt Disable Register */ + __I uint32_t TC_IMR; /**< \brief (TcChannel Offset: 0x2C) Interrupt Mask Register */ + __IO uint32_t TC_EMR; /**< \brief (TcChannel Offset: 0x30) Extended Mode Register */ + __I uint32_t Reserved1[3]; +} TcChannel; +/** \brief Tc hardware registers */ +#define TCCHANNEL_NUMBER 3 +typedef struct { + TcChannel TC_CHANNEL[TCCHANNEL_NUMBER]; /**< \brief (Tc Offset: 0x0) channel = 0 .. 2 */ + __O uint32_t TC_BCR; /**< \brief (Tc Offset: 0xC0) Block Control Register */ + __IO uint32_t TC_BMR; /**< \brief (Tc Offset: 0xC4) Block Mode Register */ + __O uint32_t TC_QIER; /**< \brief (Tc Offset: 0xC8) QDEC Interrupt Enable Register */ + __O uint32_t TC_QIDR; /**< \brief (Tc Offset: 0xCC) QDEC Interrupt Disable Register */ + __I uint32_t TC_QIMR; /**< \brief (Tc Offset: 0xD0) QDEC Interrupt Mask Register */ + __I uint32_t TC_QISR; /**< \brief (Tc Offset: 0xD4) QDEC Interrupt Status Register */ + __IO uint32_t TC_FMR; /**< \brief (Tc Offset: 0xD8) Fault Mode Register */ + __I uint32_t Reserved1[2]; + __IO uint32_t TC_WPMR; /**< \brief (Tc Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t Reserved2[5]; + __I uint32_t TC_VER; /**< \brief (Tc Offset: 0xFC) Version Register */ +} Tc; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- TC_CCR : (TC Offset: N/A) Channel Control Register -------- */ +#define TC_CCR_CLKEN (0x1u << 0) /**< \brief (TC_CCR) Counter Clock Enable Command */ +#define TC_CCR_CLKDIS (0x1u << 1) /**< \brief (TC_CCR) Counter Clock Disable Command */ +#define TC_CCR_SWTRG (0x1u << 2) /**< \brief (TC_CCR) Software Trigger Command */ +/* -------- TC_CMR : (TC Offset: N/A) Channel Mode Register -------- */ +#define TC_CMR_TCCLKS_Pos 0 +#define TC_CMR_TCCLKS_Msk (0x7u << TC_CMR_TCCLKS_Pos) /**< \brief (TC_CMR) Clock Selection */ +#define TC_CMR_TCCLKS(value) ((TC_CMR_TCCLKS_Msk & ((value) << TC_CMR_TCCLKS_Pos))) +#define TC_CMR_TCCLKS_TIMER_CLOCK1 (0x0u << 0) /**< \brief (TC_CMR) Clock selected: internal PCK6 clock signal (from PMC) */ +#define TC_CMR_TCCLKS_TIMER_CLOCK2 (0x1u << 0) /**< \brief (TC_CMR) Clock selected: internal MCK/8 clock signal (from PMC) */ +#define TC_CMR_TCCLKS_TIMER_CLOCK3 (0x2u << 0) /**< \brief (TC_CMR) Clock selected: internal MCK/32 clock signal (from PMC) */ +#define TC_CMR_TCCLKS_TIMER_CLOCK4 (0x3u << 0) /**< \brief (TC_CMR) Clock selected: internal MCK/128 clock signal (from PMC) */ +#define TC_CMR_TCCLKS_TIMER_CLOCK5 (0x4u << 0) /**< \brief (TC_CMR) Clock selected: internal SLCK clock signal (from PMC) */ +#define TC_CMR_TCCLKS_XC0 (0x5u << 0) /**< \brief (TC_CMR) Clock selected: XC0 */ +#define TC_CMR_TCCLKS_XC1 (0x6u << 0) /**< \brief (TC_CMR) Clock selected: XC1 */ +#define TC_CMR_TCCLKS_XC2 (0x7u << 0) /**< \brief (TC_CMR) Clock selected: XC2 */ +#define TC_CMR_CLKI (0x1u << 3) /**< \brief (TC_CMR) Clock Invert */ +#define TC_CMR_BURST_Pos 4 +#define TC_CMR_BURST_Msk (0x3u << TC_CMR_BURST_Pos) /**< \brief (TC_CMR) Burst Signal Selection */ +#define TC_CMR_BURST(value) ((TC_CMR_BURST_Msk & ((value) << TC_CMR_BURST_Pos))) +#define TC_CMR_BURST_NONE (0x0u << 4) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_BURST_XC0 (0x1u << 4) /**< \brief (TC_CMR) XC0 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC1 (0x2u << 4) /**< \brief (TC_CMR) XC1 is ANDed with the selected clock. */ +#define TC_CMR_BURST_XC2 (0x3u << 4) /**< \brief (TC_CMR) XC2 is ANDed with the selected clock. */ +#define TC_CMR_LDBSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RB Loading */ +#define TC_CMR_LDBDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RB Loading */ +#define TC_CMR_ETRGEDG_Pos 8 +#define TC_CMR_ETRGEDG_Msk (0x3u << TC_CMR_ETRGEDG_Pos) /**< \brief (TC_CMR) External Trigger Edge Selection */ +#define TC_CMR_ETRGEDG(value) ((TC_CMR_ETRGEDG_Msk & ((value) << TC_CMR_ETRGEDG_Pos))) +#define TC_CMR_ETRGEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) The clock is not gated by an external signal. */ +#define TC_CMR_ETRGEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_ETRGEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_ETRGEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_ABETRG (0x1u << 10) /**< \brief (TC_CMR) TIOA or TIOB External Trigger Selection */ +#define TC_CMR_CPCTRG (0x1u << 14) /**< \brief (TC_CMR) RC Compare Trigger Enable */ +#define TC_CMR_WAVE (0x1u << 15) /**< \brief (TC_CMR) Waveform Mode */ +#define TC_CMR_LDRA_Pos 16 +#define TC_CMR_LDRA_Msk (0x3u << TC_CMR_LDRA_Pos) /**< \brief (TC_CMR) RA Loading Edge Selection */ +#define TC_CMR_LDRA(value) ((TC_CMR_LDRA_Msk & ((value) << TC_CMR_LDRA_Pos))) +#define TC_CMR_LDRA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRA_RISING (0x1u << 16) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRA_FALLING (0x2u << 16) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRA_EDGE (0x3u << 16) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_LDRB_Pos 18 +#define TC_CMR_LDRB_Msk (0x3u << TC_CMR_LDRB_Pos) /**< \brief (TC_CMR) RB Loading Edge Selection */ +#define TC_CMR_LDRB(value) ((TC_CMR_LDRB_Msk & ((value) << TC_CMR_LDRB_Pos))) +#define TC_CMR_LDRB_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_LDRB_RISING (0x1u << 18) /**< \brief (TC_CMR) Rising edge of TIOA */ +#define TC_CMR_LDRB_FALLING (0x2u << 18) /**< \brief (TC_CMR) Falling edge of TIOA */ +#define TC_CMR_LDRB_EDGE (0x3u << 18) /**< \brief (TC_CMR) Each edge of TIOA */ +#define TC_CMR_SBSMPLR_Pos 20 +#define TC_CMR_SBSMPLR_Msk (0x7u << TC_CMR_SBSMPLR_Pos) /**< \brief (TC_CMR) Loading Edge Subsampling Ratio */ +#define TC_CMR_SBSMPLR(value) ((TC_CMR_SBSMPLR_Msk & ((value) << TC_CMR_SBSMPLR_Pos))) +#define TC_CMR_SBSMPLR_ONE (0x0u << 20) /**< \brief (TC_CMR) Load a Capture Register each selected edge */ +#define TC_CMR_SBSMPLR_HALF (0x1u << 20) /**< \brief (TC_CMR) Load a Capture Register every 2 selected edges */ +#define TC_CMR_SBSMPLR_FOURTH (0x2u << 20) /**< \brief (TC_CMR) Load a Capture Register every 4 selected edges */ +#define TC_CMR_SBSMPLR_EIGHTH (0x3u << 20) /**< \brief (TC_CMR) Load a Capture Register every 8 selected edges */ +#define TC_CMR_SBSMPLR_SIXTEENTH (0x4u << 20) /**< \brief (TC_CMR) Load a Capture Register every 16 selected edges */ +#define TC_CMR_CPCSTOP (0x1u << 6) /**< \brief (TC_CMR) Counter Clock Stopped with RC Compare */ +#define TC_CMR_CPCDIS (0x1u << 7) /**< \brief (TC_CMR) Counter Clock Disable with RC Compare */ +#define TC_CMR_EEVTEDG_Pos 8 +#define TC_CMR_EEVTEDG_Msk (0x3u << TC_CMR_EEVTEDG_Pos) /**< \brief (TC_CMR) External Event Edge Selection */ +#define TC_CMR_EEVTEDG(value) ((TC_CMR_EEVTEDG_Msk & ((value) << TC_CMR_EEVTEDG_Pos))) +#define TC_CMR_EEVTEDG_NONE (0x0u << 8) /**< \brief (TC_CMR) None */ +#define TC_CMR_EEVTEDG_RISING (0x1u << 8) /**< \brief (TC_CMR) Rising edge */ +#define TC_CMR_EEVTEDG_FALLING (0x2u << 8) /**< \brief (TC_CMR) Falling edge */ +#define TC_CMR_EEVTEDG_EDGE (0x3u << 8) /**< \brief (TC_CMR) Each edge */ +#define TC_CMR_EEVT_Pos 10 +#define TC_CMR_EEVT_Msk (0x3u << TC_CMR_EEVT_Pos) /**< \brief (TC_CMR) External Event Selection */ +#define TC_CMR_EEVT(value) ((TC_CMR_EEVT_Msk & ((value) << TC_CMR_EEVT_Pos))) +#define TC_CMR_EEVT_TIOB (0x0u << 10) /**< \brief (TC_CMR) TIOB */ +#define TC_CMR_EEVT_XC0 (0x1u << 10) /**< \brief (TC_CMR) XC0 */ +#define TC_CMR_EEVT_XC1 (0x2u << 10) /**< \brief (TC_CMR) XC1 */ +#define TC_CMR_EEVT_XC2 (0x3u << 10) /**< \brief (TC_CMR) XC2 */ +#define TC_CMR_ENETRG (0x1u << 12) /**< \brief (TC_CMR) External Event Trigger Enable */ +#define TC_CMR_WAVSEL_Pos 13 +#define TC_CMR_WAVSEL_Msk (0x3u << TC_CMR_WAVSEL_Pos) /**< \brief (TC_CMR) Waveform Selection */ +#define TC_CMR_WAVSEL(value) ((TC_CMR_WAVSEL_Msk & ((value) << TC_CMR_WAVSEL_Pos))) +#define TC_CMR_WAVSEL_UP (0x0u << 13) /**< \brief (TC_CMR) UP mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN (0x1u << 13) /**< \brief (TC_CMR) UPDOWN mode without automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UP_RC (0x2u << 13) /**< \brief (TC_CMR) UP mode with automatic trigger on RC Compare */ +#define TC_CMR_WAVSEL_UPDOWN_RC (0x3u << 13) /**< \brief (TC_CMR) UPDOWN mode with automatic trigger on RC Compare */ +#define TC_CMR_ACPA_Pos 16 +#define TC_CMR_ACPA_Msk (0x3u << TC_CMR_ACPA_Pos) /**< \brief (TC_CMR) RA Compare Effect on TIOA */ +#define TC_CMR_ACPA(value) ((TC_CMR_ACPA_Msk & ((value) << TC_CMR_ACPA_Pos))) +#define TC_CMR_ACPA_NONE (0x0u << 16) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPA_SET (0x1u << 16) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPA_CLEAR (0x2u << 16) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPA_TOGGLE (0x3u << 16) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ACPC_Pos 18 +#define TC_CMR_ACPC_Msk (0x3u << TC_CMR_ACPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOA */ +#define TC_CMR_ACPC(value) ((TC_CMR_ACPC_Msk & ((value) << TC_CMR_ACPC_Pos))) +#define TC_CMR_ACPC_NONE (0x0u << 18) /**< \brief (TC_CMR) None */ +#define TC_CMR_ACPC_SET (0x1u << 18) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ACPC_CLEAR (0x2u << 18) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ACPC_TOGGLE (0x3u << 18) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_AEEVT_Pos 20 +#define TC_CMR_AEEVT_Msk (0x3u << TC_CMR_AEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOA */ +#define TC_CMR_AEEVT(value) ((TC_CMR_AEEVT_Msk & ((value) << TC_CMR_AEEVT_Pos))) +#define TC_CMR_AEEVT_NONE (0x0u << 20) /**< \brief (TC_CMR) None */ +#define TC_CMR_AEEVT_SET (0x1u << 20) /**< \brief (TC_CMR) Set */ +#define TC_CMR_AEEVT_CLEAR (0x2u << 20) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_AEEVT_TOGGLE (0x3u << 20) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_ASWTRG_Pos 22 +#define TC_CMR_ASWTRG_Msk (0x3u << TC_CMR_ASWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOA */ +#define TC_CMR_ASWTRG(value) ((TC_CMR_ASWTRG_Msk & ((value) << TC_CMR_ASWTRG_Pos))) +#define TC_CMR_ASWTRG_NONE (0x0u << 22) /**< \brief (TC_CMR) None */ +#define TC_CMR_ASWTRG_SET (0x1u << 22) /**< \brief (TC_CMR) Set */ +#define TC_CMR_ASWTRG_CLEAR (0x2u << 22) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_ASWTRG_TOGGLE (0x3u << 22) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPB_Pos 24 +#define TC_CMR_BCPB_Msk (0x3u << TC_CMR_BCPB_Pos) /**< \brief (TC_CMR) RB Compare Effect on TIOB */ +#define TC_CMR_BCPB(value) ((TC_CMR_BCPB_Msk & ((value) << TC_CMR_BCPB_Pos))) +#define TC_CMR_BCPB_NONE (0x0u << 24) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPB_SET (0x1u << 24) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPB_CLEAR (0x2u << 24) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPB_TOGGLE (0x3u << 24) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BCPC_Pos 26 +#define TC_CMR_BCPC_Msk (0x3u << TC_CMR_BCPC_Pos) /**< \brief (TC_CMR) RC Compare Effect on TIOB */ +#define TC_CMR_BCPC(value) ((TC_CMR_BCPC_Msk & ((value) << TC_CMR_BCPC_Pos))) +#define TC_CMR_BCPC_NONE (0x0u << 26) /**< \brief (TC_CMR) None */ +#define TC_CMR_BCPC_SET (0x1u << 26) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BCPC_CLEAR (0x2u << 26) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BCPC_TOGGLE (0x3u << 26) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BEEVT_Pos 28 +#define TC_CMR_BEEVT_Msk (0x3u << TC_CMR_BEEVT_Pos) /**< \brief (TC_CMR) External Event Effect on TIOB */ +#define TC_CMR_BEEVT(value) ((TC_CMR_BEEVT_Msk & ((value) << TC_CMR_BEEVT_Pos))) +#define TC_CMR_BEEVT_NONE (0x0u << 28) /**< \brief (TC_CMR) None */ +#define TC_CMR_BEEVT_SET (0x1u << 28) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BEEVT_CLEAR (0x2u << 28) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BEEVT_TOGGLE (0x3u << 28) /**< \brief (TC_CMR) Toggle */ +#define TC_CMR_BSWTRG_Pos 30 +#define TC_CMR_BSWTRG_Msk (0x3u << TC_CMR_BSWTRG_Pos) /**< \brief (TC_CMR) Software Trigger Effect on TIOB */ +#define TC_CMR_BSWTRG(value) ((TC_CMR_BSWTRG_Msk & ((value) << TC_CMR_BSWTRG_Pos))) +#define TC_CMR_BSWTRG_NONE (0x0u << 30) /**< \brief (TC_CMR) None */ +#define TC_CMR_BSWTRG_SET (0x1u << 30) /**< \brief (TC_CMR) Set */ +#define TC_CMR_BSWTRG_CLEAR (0x2u << 30) /**< \brief (TC_CMR) Clear */ +#define TC_CMR_BSWTRG_TOGGLE (0x3u << 30) /**< \brief (TC_CMR) Toggle */ +/* -------- TC_SMMR : (TC Offset: N/A) Stepper Motor Mode Register -------- */ +#define TC_SMMR_GCEN (0x1u << 0) /**< \brief (TC_SMMR) Gray Count Enable */ +#define TC_SMMR_DOWN (0x1u << 1) /**< \brief (TC_SMMR) Down Count */ +/* -------- TC_RAB : (TC Offset: N/A) Register AB -------- */ +#define TC_RAB_RAB_Pos 0 +#define TC_RAB_RAB_Msk (0xffffffffu << TC_RAB_RAB_Pos) /**< \brief (TC_RAB) Register A or Register B */ +/* -------- TC_CV : (TC Offset: N/A) Counter Value -------- */ +#define TC_CV_CV_Pos 0 +#define TC_CV_CV_Msk (0xffffffffu << TC_CV_CV_Pos) /**< \brief (TC_CV) Counter Value */ +/* -------- TC_RA : (TC Offset: N/A) Register A -------- */ +#define TC_RA_RA_Pos 0 +#define TC_RA_RA_Msk (0xffffffffu << TC_RA_RA_Pos) /**< \brief (TC_RA) Register A */ +#define TC_RA_RA(value) ((TC_RA_RA_Msk & ((value) << TC_RA_RA_Pos))) +/* -------- TC_RB : (TC Offset: N/A) Register B -------- */ +#define TC_RB_RB_Pos 0 +#define TC_RB_RB_Msk (0xffffffffu << TC_RB_RB_Pos) /**< \brief (TC_RB) Register B */ +#define TC_RB_RB(value) ((TC_RB_RB_Msk & ((value) << TC_RB_RB_Pos))) +/* -------- TC_RC : (TC Offset: N/A) Register C -------- */ +#define TC_RC_RC_Pos 0 +#define TC_RC_RC_Msk (0xffffffffu << TC_RC_RC_Pos) /**< \brief (TC_RC) Register C */ +#define TC_RC_RC(value) ((TC_RC_RC_Msk & ((value) << TC_RC_RC_Pos))) +/* -------- TC_SR : (TC Offset: N/A) Status Register -------- */ +#define TC_SR_COVFS (0x1u << 0) /**< \brief (TC_SR) Counter Overflow Status (cleared on read) */ +#define TC_SR_LOVRS (0x1u << 1) /**< \brief (TC_SR) Load Overrun Status (cleared on read) */ +#define TC_SR_CPAS (0x1u << 2) /**< \brief (TC_SR) RA Compare Status (cleared on read) */ +#define TC_SR_CPBS (0x1u << 3) /**< \brief (TC_SR) RB Compare Status (cleared on read) */ +#define TC_SR_CPCS (0x1u << 4) /**< \brief (TC_SR) RC Compare Status (cleared on read) */ +#define TC_SR_LDRAS (0x1u << 5) /**< \brief (TC_SR) RA Loading Status (cleared on read) */ +#define TC_SR_LDRBS (0x1u << 6) /**< \brief (TC_SR) RB Loading Status (cleared on read) */ +#define TC_SR_ETRGS (0x1u << 7) /**< \brief (TC_SR) External Trigger Status (cleared on read) */ +#define TC_SR_CLKSTA (0x1u << 16) /**< \brief (TC_SR) Clock Enabling Status */ +#define TC_SR_MTIOA (0x1u << 17) /**< \brief (TC_SR) TIOA Mirror */ +#define TC_SR_MTIOB (0x1u << 18) /**< \brief (TC_SR) TIOB Mirror */ +/* -------- TC_IER : (TC Offset: N/A) Interrupt Enable Register -------- */ +#define TC_IER_COVFS (0x1u << 0) /**< \brief (TC_IER) Counter Overflow */ +#define TC_IER_LOVRS (0x1u << 1) /**< \brief (TC_IER) Load Overrun */ +#define TC_IER_CPAS (0x1u << 2) /**< \brief (TC_IER) RA Compare */ +#define TC_IER_CPBS (0x1u << 3) /**< \brief (TC_IER) RB Compare */ +#define TC_IER_CPCS (0x1u << 4) /**< \brief (TC_IER) RC Compare */ +#define TC_IER_LDRAS (0x1u << 5) /**< \brief (TC_IER) RA Loading */ +#define TC_IER_LDRBS (0x1u << 6) /**< \brief (TC_IER) RB Loading */ +#define TC_IER_ETRGS (0x1u << 7) /**< \brief (TC_IER) External Trigger */ +/* -------- TC_IDR : (TC Offset: N/A) Interrupt Disable Register -------- */ +#define TC_IDR_COVFS (0x1u << 0) /**< \brief (TC_IDR) Counter Overflow */ +#define TC_IDR_LOVRS (0x1u << 1) /**< \brief (TC_IDR) Load Overrun */ +#define TC_IDR_CPAS (0x1u << 2) /**< \brief (TC_IDR) RA Compare */ +#define TC_IDR_CPBS (0x1u << 3) /**< \brief (TC_IDR) RB Compare */ +#define TC_IDR_CPCS (0x1u << 4) /**< \brief (TC_IDR) RC Compare */ +#define TC_IDR_LDRAS (0x1u << 5) /**< \brief (TC_IDR) RA Loading */ +#define TC_IDR_LDRBS (0x1u << 6) /**< \brief (TC_IDR) RB Loading */ +#define TC_IDR_ETRGS (0x1u << 7) /**< \brief (TC_IDR) External Trigger */ +/* -------- TC_IMR : (TC Offset: N/A) Interrupt Mask Register -------- */ +#define TC_IMR_COVFS (0x1u << 0) /**< \brief (TC_IMR) Counter Overflow */ +#define TC_IMR_LOVRS (0x1u << 1) /**< \brief (TC_IMR) Load Overrun */ +#define TC_IMR_CPAS (0x1u << 2) /**< \brief (TC_IMR) RA Compare */ +#define TC_IMR_CPBS (0x1u << 3) /**< \brief (TC_IMR) RB Compare */ +#define TC_IMR_CPCS (0x1u << 4) /**< \brief (TC_IMR) RC Compare */ +#define TC_IMR_LDRAS (0x1u << 5) /**< \brief (TC_IMR) RA Loading */ +#define TC_IMR_LDRBS (0x1u << 6) /**< \brief (TC_IMR) RB Loading */ +#define TC_IMR_ETRGS (0x1u << 7) /**< \brief (TC_IMR) External Trigger */ +/* -------- TC_EMR : (TC Offset: N/A) Extended Mode Register -------- */ +#define TC_EMR_TRIGSRCA_Pos 0 +#define TC_EMR_TRIGSRCA_Msk (0x3u << TC_EMR_TRIGSRCA_Pos) /**< \brief (TC_EMR) Trigger Source for Input A */ +#define TC_EMR_TRIGSRCA(value) ((TC_EMR_TRIGSRCA_Msk & ((value) << TC_EMR_TRIGSRCA_Pos))) +#define TC_EMR_TRIGSRCA_EXTERNAL_TIOAx (0x0u << 0) /**< \brief (TC_EMR) The trigger/capture input A is driven by external pin TIOAx */ +#define TC_EMR_TRIGSRCA_PWMx (0x1u << 0) /**< \brief (TC_EMR) The trigger/capture input A is driven internally by PWMx */ +#define TC_EMR_TRIGSRCB_Pos 4 +#define TC_EMR_TRIGSRCB_Msk (0x3u << TC_EMR_TRIGSRCB_Pos) /**< \brief (TC_EMR) Trigger Source for Input B */ +#define TC_EMR_TRIGSRCB(value) ((TC_EMR_TRIGSRCB_Msk & ((value) << TC_EMR_TRIGSRCB_Pos))) +#define TC_EMR_TRIGSRCB_EXTERNAL_TIOBx (0x0u << 4) /**< \brief (TC_EMR) The trigger/capture input B is driven by external pin TIOBx */ +#define TC_EMR_TRIGSRCB_PWMx (0x1u << 4) /**< \brief (TC_EMR) The trigger/capture input B is driven internally by PWMx */ +#define TC_EMR_NODIVCLK (0x1u << 8) /**< \brief (TC_EMR) No Divided Clock */ +/* -------- TC_BCR : (TC Offset: 0xC0) Block Control Register -------- */ +#define TC_BCR_SYNC (0x1u << 0) /**< \brief (TC_BCR) Synchro Command */ +/* -------- TC_BMR : (TC Offset: 0xC4) Block Mode Register -------- */ +#define TC_BMR_TC0XC0S_Pos 0 +#define TC_BMR_TC0XC0S_Msk (0x3u << TC_BMR_TC0XC0S_Pos) /**< \brief (TC_BMR) External Clock Signal 0 Selection */ +#define TC_BMR_TC0XC0S(value) ((TC_BMR_TC0XC0S_Msk & ((value) << TC_BMR_TC0XC0S_Pos))) +#define TC_BMR_TC0XC0S_TCLK0 (0x0u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TCLK0 */ +#define TC_BMR_TC0XC0S_TIOA1 (0x2u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA1 */ +#define TC_BMR_TC0XC0S_TIOA2 (0x3u << 0) /**< \brief (TC_BMR) Signal connected to XC0: TIOA2 */ +#define TC_BMR_TC1XC1S_Pos 2 +#define TC_BMR_TC1XC1S_Msk (0x3u << TC_BMR_TC1XC1S_Pos) /**< \brief (TC_BMR) External Clock Signal 1 Selection */ +#define TC_BMR_TC1XC1S(value) ((TC_BMR_TC1XC1S_Msk & ((value) << TC_BMR_TC1XC1S_Pos))) +#define TC_BMR_TC1XC1S_TCLK1 (0x0u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TCLK1 */ +#define TC_BMR_TC1XC1S_TIOA0 (0x2u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA0 */ +#define TC_BMR_TC1XC1S_TIOA2 (0x3u << 2) /**< \brief (TC_BMR) Signal connected to XC1: TIOA2 */ +#define TC_BMR_TC2XC2S_Pos 4 +#define TC_BMR_TC2XC2S_Msk (0x3u << TC_BMR_TC2XC2S_Pos) /**< \brief (TC_BMR) External Clock Signal 2 Selection */ +#define TC_BMR_TC2XC2S(value) ((TC_BMR_TC2XC2S_Msk & ((value) << TC_BMR_TC2XC2S_Pos))) +#define TC_BMR_TC2XC2S_TCLK2 (0x0u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TCLK2 */ +#define TC_BMR_TC2XC2S_TIOA0 (0x2u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA0 */ +#define TC_BMR_TC2XC2S_TIOA1 (0x3u << 4) /**< \brief (TC_BMR) Signal connected to XC2: TIOA1 */ +#define TC_BMR_QDEN (0x1u << 8) /**< \brief (TC_BMR) Quadrature Decoder Enabled */ +#define TC_BMR_POSEN (0x1u << 9) /**< \brief (TC_BMR) Position Enabled */ +#define TC_BMR_SPEEDEN (0x1u << 10) /**< \brief (TC_BMR) Speed Enabled */ +#define TC_BMR_QDTRANS (0x1u << 11) /**< \brief (TC_BMR) Quadrature Decoding Transparent */ +#define TC_BMR_EDGPHA (0x1u << 12) /**< \brief (TC_BMR) Edge on PHA Count Mode */ +#define TC_BMR_INVA (0x1u << 13) /**< \brief (TC_BMR) Inverted PHA */ +#define TC_BMR_INVB (0x1u << 14) /**< \brief (TC_BMR) Inverted PHB */ +#define TC_BMR_INVIDX (0x1u << 15) /**< \brief (TC_BMR) Inverted Index */ +#define TC_BMR_SWAP (0x1u << 16) /**< \brief (TC_BMR) Swap PHA and PHB */ +#define TC_BMR_IDXPHB (0x1u << 17) /**< \brief (TC_BMR) Index Pin is PHB Pin */ +#define TC_BMR_MAXFILT_Pos 20 +#define TC_BMR_MAXFILT_Msk (0x3fu << TC_BMR_MAXFILT_Pos) /**< \brief (TC_BMR) Maximum Filter */ +#define TC_BMR_MAXFILT(value) ((TC_BMR_MAXFILT_Msk & ((value) << TC_BMR_MAXFILT_Pos))) +#define TC_BMR_MAXCMP_Pos 26 /**< (TC_BMR) Maximum Consecutive Missing Pulses Position */ +#define TC_BMR_MAXCMP_Msk (0xfu << TC_BMR_MAXCMP_Pos) /**< (TC_BMR) Maximum Consecutive Missing Pulses Mask */ +#define TC_BMR_MAXCMP(value) (TC_BMR_MAXCMP_Msk & ((value) << TC_BMR_MAXCMP_Pos)) +/* -------- TC_QIER : (TC Offset: 0xC8) QDEC Interrupt Enable Register -------- */ +#define TC_QIER_IDX (0x1u << 0) /**< \brief (TC_QIER) Index */ +#define TC_QIER_DIRCHG (0x1u << 1) /**< \brief (TC_QIER) Direction Change */ +#define TC_QIER_QERR (0x1u << 2) /**< \brief (TC_QIER) Quadrature Error */ +#define TC_QIER_MPE (0x1u << 3) /**< \brief (TC_QIER) Consecutive Missing Pulse Error */ +/* -------- TC_QIDR : (TC Offset: 0xCC) QDEC Interrupt Disable Register -------- */ +#define TC_QIDR_IDX (0x1u << 0) /**< \brief (TC_QIDR) Index */ +#define TC_QIDR_DIRCHG (0x1u << 1) /**< \brief (TC_QIDR) Direction Change */ +#define TC_QIDR_QERR (0x1u << 2) /**< \brief (TC_QIDR) Quadrature Error */ +#define TC_QIDR_MPE (0x1u << 3) /**< \brief (TC_QIDR) Consecutive Missing Pulse Error */ +/* -------- TC_QIMR : (TC Offset: 0xD0) QDEC Interrupt Mask Register -------- */ +#define TC_QIMR_IDX (0x1u << 0) /**< \brief (TC_QIMR) Index */ +#define TC_QIMR_DIRCHG (0x1u << 1) /**< \brief (TC_QIMR) Direction Change */ +#define TC_QIMR_QERR (0x1u << 2) /**< \brief (TC_QIMR) Quadrature Error */ +#define TC_QIMR_MPE (0x1u << 3) /**< \brief (TC_QIMR) Consecutive Missing Pulse Error */ +/* -------- TC_QISR : (TC Offset: 0xD4) QDEC Interrupt Status Register -------- */ +#define TC_QISR_IDX (0x1u << 0) /**< \brief (TC_QISR) Index */ +#define TC_QISR_DIRCHG (0x1u << 1) /**< \brief (TC_QISR) Direction Change */ +#define TC_QISR_QERR (0x1u << 2) /**< \brief (TC_QISR) Quadrature Error */ +#define TC_QISR_DIR (0x1u << 8) /**< \brief (TC_QISR) Direction */ +#define TC_QISR_MPE (0x1u << 3) /**< \brief (TC_QISR) Consecutive Missing Pulse Error */ +/* -------- TC_FMR : (TC Offset: 0xD8) Fault Mode Register -------- */ +#define TC_FMR_ENCF0 (0x1u << 0) /**< \brief (TC_FMR) Enable Compare Fault Channel 0 */ +#define TC_FMR_ENCF1 (0x1u << 1) /**< \brief (TC_FMR) Enable Compare Fault Channel 1 */ +/* -------- TC_WPMR : (TC Offset: 0xE4) Write Protection Mode Register -------- */ +#define TC_WPMR_WPEN (0x1u << 0) /**< \brief (TC_WPMR) Write Protection Enable */ +#define TC_WPMR_WPKEY_Pos 8 +#define TC_WPMR_WPKEY_Msk (0xffffffu << TC_WPMR_WPKEY_Pos) /**< \brief (TC_WPMR) Write Protection Key */ +#define TC_WPMR_WPKEY(value) ((TC_WPMR_WPKEY_Msk & ((value) << TC_WPMR_WPKEY_Pos))) +#define TC_WPMR_WPKEY_PASSWD (0x54494Du << 8) /**< \brief (TC_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0. */ +/* -------- TC_VER : (TC Offset: 0xFC) Version Register -------- */ +#define TC_VER_VERSION_Pos 0 +#define TC_VER_VERSION_Msk (0xfffu << TC_VER_VERSION_Pos) /**< \brief (TC_VER) Version of the Hardware Module */ +#define TC_VER_MFN_Pos 16 +#define TC_VER_MFN_Msk (0x7u << TC_VER_MFN_Pos) /**< \brief (TC_VER) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_TC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h new file mode 100644 index 00000000..4ae37db9 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h @@ -0,0 +1,85 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TRNG_COMPONENT_ +#define _SAME70_TRNG_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR True Random Number Generator */ +/* ============================================================================= */ +/** \addtogroup SAME70_TRNG True Random Number Generator */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Trng hardware registers */ +typedef struct { + __O uint32_t TRNG_CR; /**< \brief (Trng Offset: 0x00) Control Register */ + __I uint32_t Reserved1[3]; + __O uint32_t TRNG_IER; /**< \brief (Trng Offset: 0x10) Interrupt Enable Register */ + __O uint32_t TRNG_IDR; /**< \brief (Trng Offset: 0x14) Interrupt Disable Register */ + __I uint32_t TRNG_IMR; /**< \brief (Trng Offset: 0x18) Interrupt Mask Register */ + __I uint32_t TRNG_ISR; /**< \brief (Trng Offset: 0x1C) Interrupt Status Register */ + __I uint32_t Reserved2[12]; + __I uint32_t TRNG_ODATA; /**< \brief (Trng Offset: 0x50) Output Data Register */ + __I uint32_t Reserved3[42]; + __I uint32_t TRNG_VERSION; /**< \brief (Trng Offset: 0xFC) Version Register */ +} Trng; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- TRNG_CR : (TRNG Offset: 0x00) Control Register -------- */ +#define TRNG_CR_ENABLE (0x1u << 0) /**< \brief (TRNG_CR) Enables the TRNG to provide random values */ +#define TRNG_CR_KEY_Pos 8 +#define TRNG_CR_KEY_Msk (0xffffffu << TRNG_CR_KEY_Pos) /**< \brief (TRNG_CR) Security Key. */ +#define TRNG_CR_KEY(value) ((TRNG_CR_KEY_Msk & ((value) << TRNG_CR_KEY_Pos))) +#define TRNG_CR_KEY_PASSWD (0x524E47u << 8) /**< \brief (TRNG_CR) Writing any other value in this field aborts the write operation. */ +/* -------- TRNG_IER : (TRNG Offset: 0x10) Interrupt Enable Register -------- */ +#define TRNG_IER_DATRDY (0x1u << 0) /**< \brief (TRNG_IER) Data Ready Interrupt Enable */ +/* -------- TRNG_IDR : (TRNG Offset: 0x14) Interrupt Disable Register -------- */ +#define TRNG_IDR_DATRDY (0x1u << 0) /**< \brief (TRNG_IDR) Data Ready Interrupt Disable */ +/* -------- TRNG_IMR : (TRNG Offset: 0x18) Interrupt Mask Register -------- */ +#define TRNG_IMR_DATRDY (0x1u << 0) /**< \brief (TRNG_IMR) Data Ready Interrupt Mask */ +/* -------- TRNG_ISR : (TRNG Offset: 0x1C) Interrupt Status Register -------- */ +#define TRNG_ISR_DATRDY (0x1u << 0) /**< \brief (TRNG_ISR) Data Ready */ +/* -------- TRNG_ODATA : (TRNG Offset: 0x50) Output Data Register -------- */ +#define TRNG_ODATA_ODATA_Pos 0 +#define TRNG_ODATA_ODATA_Msk (0xffffffffu << TRNG_ODATA_ODATA_Pos) /**< \brief (TRNG_ODATA) Output Data */ +/* -------- TRNG_VERSION : (TRNG Offset: 0xFC) Version Register -------- */ +#define TRNG_VERSION_VERSION_Pos 0 +#define TRNG_VERSION_VERSION_Msk (0xfffu << TRNG_VERSION_VERSION_Pos) /**< \brief (TRNG_VERSION) Version of the Hardware Module */ +#define TRNG_VERSION_MFN_Pos 16 +#define TRNG_VERSION_MFN_Msk (0x7u << TRNG_VERSION_MFN_Pos) /**< \brief (TRNG_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_TRNG_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h new file mode 100644 index 00000000..548854dc --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h @@ -0,0 +1,275 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TWIHS_COMPONENT_ +#define _SAME70_TWIHS_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Two-wire Interface High Speed */ +/* ============================================================================= */ +/** \addtogroup SAME70_TWIHS Two-wire Interface High Speed */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Twihs hardware registers */ +typedef struct { + __O uint32_t TWIHS_CR; /**< \brief (Twihs Offset: 0x00) Control Register */ + __IO uint32_t TWIHS_MMR; /**< \brief (Twihs Offset: 0x04) Master Mode Register */ + __IO uint32_t TWIHS_SMR; /**< \brief (Twihs Offset: 0x08) Slave Mode Register */ + __IO uint32_t TWIHS_IADR; /**< \brief (Twihs Offset: 0x0C) Internal Address Register */ + __IO uint32_t TWIHS_CWGR; /**< \brief (Twihs Offset: 0x10) Clock Waveform Generator Register */ + __I uint32_t Reserved1[3]; + __I uint32_t TWIHS_SR; /**< \brief (Twihs Offset: 0x20) Status Register */ + __O uint32_t TWIHS_IER; /**< \brief (Twihs Offset: 0x24) Interrupt Enable Register */ + __O uint32_t TWIHS_IDR; /**< \brief (Twihs Offset: 0x28) Interrupt Disable Register */ + __I uint32_t TWIHS_IMR; /**< \brief (Twihs Offset: 0x2C) Interrupt Mask Register */ + __I uint32_t TWIHS_RHR; /**< \brief (Twihs Offset: 0x30) Receive Holding Register */ + __O uint32_t TWIHS_THR; /**< \brief (Twihs Offset: 0x34) Transmit Holding Register */ + __IO uint32_t TWIHS_SMBTR; /**< \brief (Twihs Offset: 0x38) SMBus Timing Register */ + __I uint32_t Reserved2[2]; + __IO uint32_t TWIHS_FILTR; /**< \brief (Twihs Offset: 0x44) Filter Register */ + __I uint32_t Reserved3[1]; + __IO uint32_t TWIHS_SWMR; /**< \brief (Twihs Offset: 0x4C) SleepWalking Matching Register */ + __I uint32_t Reserved4[32]; + __I uint32_t TWIHS_DR; /**< \brief (Twihs Offset: 0xD0) Debug Register */ + __I uint32_t Reserved5[4]; + __IO uint32_t TWIHS_WPMR; /**< \brief (Twihs Offset: 0xE4) Write Protection Mode Register */ + __I uint32_t TWIHS_WPSR; /**< \brief (Twihs Offset: 0xE8) Write Protection Status Register */ + __I uint32_t Reserved6[4]; + __I uint32_t TWIHS_VER; /**< \brief (Twihs Offset: 0xFC) Version Register */ +} Twihs; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- TWIHS_CR : (TWIHS Offset: 0x00) Control Register -------- */ +#define TWIHS_CR_START (0x1u << 0) /**< \brief (TWIHS_CR) Send a START Condition */ +#define TWIHS_CR_STOP (0x1u << 1) /**< \brief (TWIHS_CR) Send a STOP Condition */ +#define TWIHS_CR_MSEN (0x1u << 2) /**< \brief (TWIHS_CR) TWIHS Master Mode Enabled */ +#define TWIHS_CR_MSDIS (0x1u << 3) /**< \brief (TWIHS_CR) TWIHS Master Mode Disabled */ +#define TWIHS_CR_SVEN (0x1u << 4) /**< \brief (TWIHS_CR) TWIHS Slave Mode Enabled */ +#define TWIHS_CR_SVDIS (0x1u << 5) /**< \brief (TWIHS_CR) TWIHS Slave Mode Disabled */ +#define TWIHS_CR_QUICK (0x1u << 6) /**< \brief (TWIHS_CR) SMBus Quick Command */ +#define TWIHS_CR_SWRST (0x1u << 7) /**< \brief (TWIHS_CR) Software Reset */ +#define TWIHS_CR_HSEN (0x1u << 8) /**< \brief (TWIHS_CR) TWIHS High-Speed Mode Enabled */ +#define TWIHS_CR_HSDIS (0x1u << 9) /**< \brief (TWIHS_CR) TWIHS High-Speed Mode Disabled */ +#define TWIHS_CR_SMBEN (0x1u << 10) /**< \brief (TWIHS_CR) SMBus Mode Enabled */ +#define TWIHS_CR_SMBDIS (0x1u << 11) /**< \brief (TWIHS_CR) SMBus Mode Disabled */ +#define TWIHS_CR_PECEN (0x1u << 12) /**< \brief (TWIHS_CR) Packet Error Checking Enable */ +#define TWIHS_CR_PECDIS (0x1u << 13) /**< \brief (TWIHS_CR) Packet Error Checking Disable */ +#define TWIHS_CR_PECRQ (0x1u << 14) /**< \brief (TWIHS_CR) PEC Request */ +#define TWIHS_CR_CLEAR (0x1u << 15) /**< \brief (TWIHS_CR) Bus CLEAR Command */ +#define TWIHS_CR_ACMEN (0x1u << 16) /**< \brief (TWIHS_CR) Alternative Command Mode Enable */ +#define TWIHS_CR_ACMDIS (0x1u << 17) /**< \brief (TWIHS_CR) Alternative Command Mode Disable */ +#define TWIHS_CR_THRCLR (0x1u << 24) /**< \brief (TWIHS_CR) Transmit Holding Register Clear */ +#define TWIHS_CR_LOCKCLR (0x1u << 26) /**< \brief (TWIHS_CR) Lock Clear */ +#define TWIHS_CR_FIFOEN (0x1u << 28) /**< \brief (TWIHS_CR) FIFO Enable */ +#define TWIHS_CR_FIFODIS (0x1u << 29) /**< \brief (TWIHS_CR) FIFO Disable */ +/* -------- TWIHS_MMR : (TWIHS Offset: 0x04) Master Mode Register -------- */ +#define TWIHS_MMR_IADRSZ_Pos 8 +#define TWIHS_MMR_IADRSZ_Msk (0x3u << TWIHS_MMR_IADRSZ_Pos) /**< \brief (TWIHS_MMR) Internal Device Address Size */ +#define TWIHS_MMR_IADRSZ(value) ((TWIHS_MMR_IADRSZ_Msk & ((value) << TWIHS_MMR_IADRSZ_Pos))) +#define TWIHS_MMR_IADRSZ_NONE (0x0u << 8) /**< \brief (TWIHS_MMR) No internal device address */ +#define TWIHS_MMR_IADRSZ_1_BYTE (0x1u << 8) /**< \brief (TWIHS_MMR) One-byte internal device address */ +#define TWIHS_MMR_IADRSZ_2_BYTE (0x2u << 8) /**< \brief (TWIHS_MMR) Two-byte internal device address */ +#define TWIHS_MMR_IADRSZ_3_BYTE (0x3u << 8) /**< \brief (TWIHS_MMR) Three-byte internal device address */ +#define TWIHS_MMR_MREAD (0x1u << 12) /**< \brief (TWIHS_MMR) Master Read Direction */ +#define TWIHS_MMR_DADR_Pos 16 +#define TWIHS_MMR_DADR_Msk (0x7fu << TWIHS_MMR_DADR_Pos) /**< \brief (TWIHS_MMR) Device Address */ +#define TWIHS_MMR_DADR(value) ((TWIHS_MMR_DADR_Msk & ((value) << TWIHS_MMR_DADR_Pos))) +/* -------- TWIHS_SMR : (TWIHS Offset: 0x08) Slave Mode Register -------- */ +#define TWIHS_SMR_NACKEN (0x1u << 0) /**< \brief (TWIHS_SMR) Slave Receiver Data Phase NACK enable */ +#define TWIHS_SMR_SMDA (0x1u << 2) /**< \brief (TWIHS_SMR) SMBus Default Address */ +#define TWIHS_SMR_SMHH (0x1u << 3) /**< \brief (TWIHS_SMR) SMBus Host Header */ +#define TWIHS_SMR_SCLWSDIS (0x1u << 6) /**< \brief (TWIHS_SMR) Clock Wait State Disable */ +#define TWIHS_SMR_MASK_Pos 8 +#define TWIHS_SMR_MASK_Msk (0x7fu << TWIHS_SMR_MASK_Pos) /**< \brief (TWIHS_SMR) Slave Address Mask */ +#define TWIHS_SMR_MASK(value) ((TWIHS_SMR_MASK_Msk & ((value) << TWIHS_SMR_MASK_Pos))) +#define TWIHS_SMR_SADR_Pos 16 +#define TWIHS_SMR_SADR_Msk (0x7fu << TWIHS_SMR_SADR_Pos) /**< \brief (TWIHS_SMR) Slave Address */ +#define TWIHS_SMR_SADR(value) ((TWIHS_SMR_SADR_Msk & ((value) << TWIHS_SMR_SADR_Pos))) +#define TWIHS_SMR_SADR1EN (0x1u << 28) /**< \brief (TWIHS_SMR) Slave Address 1 Enable */ +#define TWIHS_SMR_SADR2EN (0x1u << 29) /**< \brief (TWIHS_SMR) Slave Address 2 Enable */ +#define TWIHS_SMR_SADR3EN (0x1u << 30) /**< \brief (TWIHS_SMR) Slave Address 3 Enable */ +#define TWIHS_SMR_DATAMEN (0x1u << 31) /**< \brief (TWIHS_SMR) Data Matching Enable */ +/* -------- TWIHS_IADR : (TWIHS Offset: 0x0C) Internal Address Register -------- */ +#define TWIHS_IADR_IADR_Pos 0 +#define TWIHS_IADR_IADR_Msk (0xffffffu << TWIHS_IADR_IADR_Pos) /**< \brief (TWIHS_IADR) Internal Address */ +#define TWIHS_IADR_IADR(value) ((TWIHS_IADR_IADR_Msk & ((value) << TWIHS_IADR_IADR_Pos))) +/* -------- TWIHS_CWGR : (TWIHS Offset: 0x10) Clock Waveform Generator Register -------- */ +#define TWIHS_CWGR_CLDIV_Pos 0 +#define TWIHS_CWGR_CLDIV_Msk (0xffu << TWIHS_CWGR_CLDIV_Pos) /**< \brief (TWIHS_CWGR) Clock Low Divider */ +#define TWIHS_CWGR_CLDIV(value) ((TWIHS_CWGR_CLDIV_Msk & ((value) << TWIHS_CWGR_CLDIV_Pos))) +#define TWIHS_CWGR_CHDIV_Pos 8 +#define TWIHS_CWGR_CHDIV_Msk (0xffu << TWIHS_CWGR_CHDIV_Pos) /**< \brief (TWIHS_CWGR) Clock High Divider */ +#define TWIHS_CWGR_CHDIV(value) ((TWIHS_CWGR_CHDIV_Msk & ((value) << TWIHS_CWGR_CHDIV_Pos))) +#define TWIHS_CWGR_CKDIV_Pos 16 +#define TWIHS_CWGR_CKDIV_Msk (0x7u << TWIHS_CWGR_CKDIV_Pos) /**< \brief (TWIHS_CWGR) Clock Divider */ +#define TWIHS_CWGR_CKDIV(value) ((TWIHS_CWGR_CKDIV_Msk & ((value) << TWIHS_CWGR_CKDIV_Pos))) +#define TWIHS_CWGR_HOLD_Pos 24 +#define TWIHS_CWGR_HOLD_Msk (0x3fu << TWIHS_CWGR_HOLD_Pos) /**< \brief (TWIHS_CWGR) TWD Hold Time Versus TWCK Falling */ +#define TWIHS_CWGR_HOLD(value) ((TWIHS_CWGR_HOLD_Msk & ((value) << TWIHS_CWGR_HOLD_Pos))) +/* -------- TWIHS_SR : (TWIHS Offset: 0x20) Status Register -------- */ +#define TWIHS_SR_TXCOMP (0x1u << 0) /**< \brief (TWIHS_SR) Transmission Completed (cleared by writing TWIHS_THR) */ +#define TWIHS_SR_RXRDY (0x1u << 1) /**< \brief (TWIHS_SR) Receive Holding Register Ready (cleared by reading TWIHS_RHR) */ +#define TWIHS_SR_TXRDY (0x1u << 2) /**< \brief (TWIHS_SR) Transmit Holding Register Ready (cleared by writing TWIHS_THR) */ +#define TWIHS_SR_SVREAD (0x1u << 3) /**< \brief (TWIHS_SR) Slave Read */ +#define TWIHS_SR_SVACC (0x1u << 4) /**< \brief (TWIHS_SR) Slave Access */ +#define TWIHS_SR_GACC (0x1u << 5) /**< \brief (TWIHS_SR) General Call Access (cleared on read) */ +#define TWIHS_SR_OVRE (0x1u << 6) /**< \brief (TWIHS_SR) Overrun Error (cleared on read) */ +#define TWIHS_SR_UNRE (0x1u << 7) /**< \brief (TWIHS_SR) Underrun Error (cleared on read) */ +#define TWIHS_SR_NACK (0x1u << 8) /**< \brief (TWIHS_SR) Not Acknowledged (cleared on read) */ +#define TWIHS_SR_ARBLST (0x1u << 9) /**< \brief (TWIHS_SR) Arbitration Lost (cleared on read) */ +#define TWIHS_SR_SCLWS (0x1u << 10) /**< \brief (TWIHS_SR) Clock Wait State */ +#define TWIHS_SR_EOSACC (0x1u << 11) /**< \brief (TWIHS_SR) End Of Slave Access (cleared on read) */ +#define TWIHS_SR_MCACK (0x1u << 16) /**< \brief (TWIHS_SR) Master Code Acknowledge (cleared on read) */ +#define TWIHS_SR_TOUT (0x1u << 18) /**< \brief (TWIHS_SR) Timeout Error (cleared on read) */ +#define TWIHS_SR_PECERR (0x1u << 19) /**< \brief (TWIHS_SR) PEC Error (cleared on read) */ +#define TWIHS_SR_SMBDAM (0x1u << 20) /**< \brief (TWIHS_SR) SMBus Default Address Match (cleared on read) */ +#define TWIHS_SR_SMBHHM (0x1u << 21) /**< \brief (TWIHS_SR) SMBus Host Header Address Match (cleared on read) */ +#define TWIHS_SR_SCL (0x1u << 24) /**< \brief (TWIHS_SR) SCL line value */ +#define TWIHS_SR_SDA (0x1u << 25) /**< \brief (TWIHS_SR) SDA line value */ +/* -------- TWIHS_IER : (TWIHS Offset: 0x24) Interrupt Enable Register -------- */ +#define TWIHS_IER_TXCOMP (0x1u << 0) /**< \brief (TWIHS_IER) Transmission Completed Interrupt Enable */ +#define TWIHS_IER_RXRDY (0x1u << 1) /**< \brief (TWIHS_IER) Receive Holding Register Ready Interrupt Enable */ +#define TWIHS_IER_TXRDY (0x1u << 2) /**< \brief (TWIHS_IER) Transmit Holding Register Ready Interrupt Enable */ +#define TWIHS_IER_SVACC (0x1u << 4) /**< \brief (TWIHS_IER) Slave Access Interrupt Enable */ +#define TWIHS_IER_GACC (0x1u << 5) /**< \brief (TWIHS_IER) General Call Access Interrupt Enable */ +#define TWIHS_IER_OVRE (0x1u << 6) /**< \brief (TWIHS_IER) Overrun Error Interrupt Enable */ +#define TWIHS_IER_UNRE (0x1u << 7) /**< \brief (TWIHS_IER) Underrun Error Interrupt Enable */ +#define TWIHS_IER_NACK (0x1u << 8) /**< \brief (TWIHS_IER) Not Acknowledge Interrupt Enable */ +#define TWIHS_IER_ARBLST (0x1u << 9) /**< \brief (TWIHS_IER) Arbitration Lost Interrupt Enable */ +#define TWIHS_IER_SCL_WS (0x1u << 10) /**< \brief (TWIHS_IER) Clock Wait State Interrupt Enable */ +#define TWIHS_IER_EOSACC (0x1u << 11) /**< \brief (TWIHS_IER) End Of Slave Access Interrupt Enable */ +#define TWIHS_IER_MCACK (0x1u << 16) /**< \brief (TWIHS_IER) Master Code Acknowledge Interrupt Enable */ +#define TWIHS_IER_TOUT (0x1u << 18) /**< \brief (TWIHS_IER) Timeout Error Interrupt Enable */ +#define TWIHS_IER_PECERR (0x1u << 19) /**< \brief (TWIHS_IER) PEC Error Interrupt Enable */ +#define TWIHS_IER_SMBDAM (0x1u << 20) /**< \brief (TWIHS_IER) SMBus Default Address Match Interrupt Enable */ +#define TWIHS_IER_SMBHHM (0x1u << 21) /**< \brief (TWIHS_IER) SMBus Host Header Address Match Interrupt Enable */ +/* -------- TWIHS_IDR : (TWIHS Offset: 0x28) Interrupt Disable Register -------- */ +#define TWIHS_IDR_TXCOMP (0x1u << 0) /**< \brief (TWIHS_IDR) Transmission Completed Interrupt Disable */ +#define TWIHS_IDR_RXRDY (0x1u << 1) /**< \brief (TWIHS_IDR) Receive Holding Register Ready Interrupt Disable */ +#define TWIHS_IDR_TXRDY (0x1u << 2) /**< \brief (TWIHS_IDR) Transmit Holding Register Ready Interrupt Disable */ +#define TWIHS_IDR_SVACC (0x1u << 4) /**< \brief (TWIHS_IDR) Slave Access Interrupt Disable */ +#define TWIHS_IDR_GACC (0x1u << 5) /**< \brief (TWIHS_IDR) General Call Access Interrupt Disable */ +#define TWIHS_IDR_OVRE (0x1u << 6) /**< \brief (TWIHS_IDR) Overrun Error Interrupt Disable */ +#define TWIHS_IDR_UNRE (0x1u << 7) /**< \brief (TWIHS_IDR) Underrun Error Interrupt Disable */ +#define TWIHS_IDR_NACK (0x1u << 8) /**< \brief (TWIHS_IDR) Not Acknowledge Interrupt Disable */ +#define TWIHS_IDR_ARBLST (0x1u << 9) /**< \brief (TWIHS_IDR) Arbitration Lost Interrupt Disable */ +#define TWIHS_IDR_SCL_WS (0x1u << 10) /**< \brief (TWIHS_IDR) Clock Wait State Interrupt Disable */ +#define TWIHS_IDR_EOSACC (0x1u << 11) /**< \brief (TWIHS_IDR) End Of Slave Access Interrupt Disable */ +#define TWIHS_IDR_MCACK (0x1u << 16) /**< \brief (TWIHS_IDR) Master Code Acknowledge Interrupt Disable */ +#define TWIHS_IDR_TOUT (0x1u << 18) /**< \brief (TWIHS_IDR) Timeout Error Interrupt Disable */ +#define TWIHS_IDR_PECERR (0x1u << 19) /**< \brief (TWIHS_IDR) PEC Error Interrupt Disable */ +#define TWIHS_IDR_SMBDAM (0x1u << 20) /**< \brief (TWIHS_IDR) SMBus Default Address Match Interrupt Disable */ +#define TWIHS_IDR_SMBHHM (0x1u << 21) /**< \brief (TWIHS_IDR) SMBus Host Header Address Match Interrupt Disable */ +/* -------- TWIHS_IMR : (TWIHS Offset: 0x2C) Interrupt Mask Register -------- */ +#define TWIHS_IMR_TXCOMP (0x1u << 0) /**< \brief (TWIHS_IMR) Transmission Completed Interrupt Mask */ +#define TWIHS_IMR_RXRDY (0x1u << 1) /**< \brief (TWIHS_IMR) Receive Holding Register Ready Interrupt Mask */ +#define TWIHS_IMR_TXRDY (0x1u << 2) /**< \brief (TWIHS_IMR) Transmit Holding Register Ready Interrupt Mask */ +#define TWIHS_IMR_SVACC (0x1u << 4) /**< \brief (TWIHS_IMR) Slave Access Interrupt Mask */ +#define TWIHS_IMR_GACC (0x1u << 5) /**< \brief (TWIHS_IMR) General Call Access Interrupt Mask */ +#define TWIHS_IMR_OVRE (0x1u << 6) /**< \brief (TWIHS_IMR) Overrun Error Interrupt Mask */ +#define TWIHS_IMR_UNRE (0x1u << 7) /**< \brief (TWIHS_IMR) Underrun Error Interrupt Mask */ +#define TWIHS_IMR_NACK (0x1u << 8) /**< \brief (TWIHS_IMR) Not Acknowledge Interrupt Mask */ +#define TWIHS_IMR_ARBLST (0x1u << 9) /**< \brief (TWIHS_IMR) Arbitration Lost Interrupt Mask */ +#define TWIHS_IMR_SCL_WS (0x1u << 10) /**< \brief (TWIHS_IMR) Clock Wait State Interrupt Mask */ +#define TWIHS_IMR_EOSACC (0x1u << 11) /**< \brief (TWIHS_IMR) End Of Slave Access Interrupt Mask */ +#define TWIHS_IMR_MCACK (0x1u << 16) /**< \brief (TWIHS_IMR) Master Code Acknowledge Interrupt Mask */ +#define TWIHS_IMR_TOUT (0x1u << 18) /**< \brief (TWIHS_IMR) Timeout Error Interrupt Mask */ +#define TWIHS_IMR_PECERR (0x1u << 19) /**< \brief (TWIHS_IMR) PEC Error Interrupt Mask */ +#define TWIHS_IMR_SMBDAM (0x1u << 20) /**< \brief (TWIHS_IMR) SMBus Default Address Match Interrupt Mask */ +#define TWIHS_IMR_SMBHHM (0x1u << 21) /**< \brief (TWIHS_IMR) SMBus Host Header Address Match Interrupt Mask */ +/* -------- TWIHS_RHR : (TWIHS Offset: 0x30) Receive Holding Register -------- */ +#define TWIHS_RHR_RXDATA_Pos 0 +#define TWIHS_RHR_RXDATA_Msk (0xffu << TWIHS_RHR_RXDATA_Pos) /**< \brief (TWIHS_RHR) Master or Slave Receive Holding Data */ +/* -------- TWIHS_THR : (TWIHS Offset: 0x34) Transmit Holding Register -------- */ +#define TWIHS_THR_TXDATA_Pos 0 +#define TWIHS_THR_TXDATA_Msk (0xffu << TWIHS_THR_TXDATA_Pos) /**< \brief (TWIHS_THR) Master or Slave Transmit Holding Data */ +#define TWIHS_THR_TXDATA(value) ((TWIHS_THR_TXDATA_Msk & ((value) << TWIHS_THR_TXDATA_Pos))) +/* -------- TWIHS_SMBTR : (TWIHS Offset: 0x38) SMBus Timing Register -------- */ +#define TWIHS_SMBTR_PRESC_Pos 0 +#define TWIHS_SMBTR_PRESC_Msk (0xfu << TWIHS_SMBTR_PRESC_Pos) /**< \brief (TWIHS_SMBTR) SMBus Clock Prescaler */ +#define TWIHS_SMBTR_PRESC(value) ((TWIHS_SMBTR_PRESC_Msk & ((value) << TWIHS_SMBTR_PRESC_Pos))) +#define TWIHS_SMBTR_TLOWS_Pos 8 +#define TWIHS_SMBTR_TLOWS_Msk (0xffu << TWIHS_SMBTR_TLOWS_Pos) /**< \brief (TWIHS_SMBTR) Slave Clock Stretch Maximum Cycles */ +#define TWIHS_SMBTR_TLOWS(value) ((TWIHS_SMBTR_TLOWS_Msk & ((value) << TWIHS_SMBTR_TLOWS_Pos))) +#define TWIHS_SMBTR_TLOWM_Pos 16 +#define TWIHS_SMBTR_TLOWM_Msk (0xffu << TWIHS_SMBTR_TLOWM_Pos) /**< \brief (TWIHS_SMBTR) Master Clock Stretch Maximum Cycles */ +#define TWIHS_SMBTR_TLOWM(value) ((TWIHS_SMBTR_TLOWM_Msk & ((value) << TWIHS_SMBTR_TLOWM_Pos))) +#define TWIHS_SMBTR_THMAX_Pos 24 +#define TWIHS_SMBTR_THMAX_Msk (0xffu << TWIHS_SMBTR_THMAX_Pos) /**< \brief (TWIHS_SMBTR) Clock High Maximum Cycles */ +#define TWIHS_SMBTR_THMAX(value) ((TWIHS_SMBTR_THMAX_Msk & ((value) << TWIHS_SMBTR_THMAX_Pos))) +/* -------- TWIHS_FILTR : (TWIHS Offset: 0x44) Filter Register -------- */ +#define TWIHS_FILTR_FILT (0x1u << 0) /**< \brief (TWIHS_FILTR) RX Digital Filter */ +#define TWIHS_FILTR_PADFEN (0x1u << 1) /**< \brief (TWIHS_FILTR) PAD Filter Enable */ +#define TWIHS_FILTR_PADFCFG (0x1u << 2) /**< \brief (TWIHS_FILTR) PAD Filter Config */ +#define TWIHS_FILTR_THRES_Pos 8 +#define TWIHS_FILTR_THRES_Msk (0x7u << TWIHS_FILTR_THRES_Pos) /**< \brief (TWIHS_FILTR) Digital Filter Threshold */ +#define TWIHS_FILTR_THRES(value) ((TWIHS_FILTR_THRES_Msk & ((value) << TWIHS_FILTR_THRES_Pos))) +/* -------- TWIHS_SWMR : (TWIHS Offset: 0x4C) SleepWalking Matching Register -------- */ +#define TWIHS_SWMR_SADR1_Pos 0 +#define TWIHS_SWMR_SADR1_Msk (0x7fu << TWIHS_SWMR_SADR1_Pos) /**< \brief (TWIHS_SWMR) Slave Address 1 */ +#define TWIHS_SWMR_SADR1(value) ((TWIHS_SWMR_SADR1_Msk & ((value) << TWIHS_SWMR_SADR1_Pos))) +#define TWIHS_SWMR_SADR2_Pos 8 +#define TWIHS_SWMR_SADR2_Msk (0x7fu << TWIHS_SWMR_SADR2_Pos) /**< \brief (TWIHS_SWMR) Slave Address 2 */ +#define TWIHS_SWMR_SADR2(value) ((TWIHS_SWMR_SADR2_Msk & ((value) << TWIHS_SWMR_SADR2_Pos))) +#define TWIHS_SWMR_SADR3_Pos 16 +#define TWIHS_SWMR_SADR3_Msk (0x7fu << TWIHS_SWMR_SADR3_Pos) /**< \brief (TWIHS_SWMR) Slave Address 3 */ +#define TWIHS_SWMR_SADR3(value) ((TWIHS_SWMR_SADR3_Msk & ((value) << TWIHS_SWMR_SADR3_Pos))) +#define TWIHS_SWMR_DATAM_Pos 24 +#define TWIHS_SWMR_DATAM_Msk (0xffu << TWIHS_SWMR_DATAM_Pos) /**< \brief (TWIHS_SWMR) Data Match */ +#define TWIHS_SWMR_DATAM(value) ((TWIHS_SWMR_DATAM_Msk & ((value) << TWIHS_SWMR_DATAM_Pos))) +/* -------- TWIHS_DR : (TWIHS Offset: 0xD0) Debug Register -------- */ +#define TWIHS_DR_SWEN (0x1u << 0) /**< \brief (TWIHS_DR) SleepWalking Enable */ +#define TWIHS_DR_CLKRQ (0x1u << 1) /**< \brief (TWIHS_DR) Clock Request */ +#define TWIHS_DR_SWMATCH (0x1u << 2) /**< \brief (TWIHS_DR) SleepWalking Match */ +#define TWIHS_DR_TRP (0x1u << 3) /**< \brief (TWIHS_DR) Transfer Pending */ +/* -------- TWIHS_WPMR : (TWIHS Offset: 0xE4) Write Protection Mode Register -------- */ +#define TWIHS_WPMR_WPEN (0x1u << 0) /**< \brief (TWIHS_WPMR) Write Protection Enable */ +#define TWIHS_WPMR_WPKEY_Pos 8 +#define TWIHS_WPMR_WPKEY_Msk (0xffffffu << TWIHS_WPMR_WPKEY_Pos) /**< \brief (TWIHS_WPMR) Write Protection Key */ +#define TWIHS_WPMR_WPKEY(value) ((TWIHS_WPMR_WPKEY_Msk & ((value) << TWIHS_WPMR_WPKEY_Pos))) +#define TWIHS_WPMR_WPKEY_PASSWD (0x545749u << 8) /**< \brief (TWIHS_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit.Always reads as 0 */ +/* -------- TWIHS_WPSR : (TWIHS Offset: 0xE8) Write Protection Status Register -------- */ +#define TWIHS_WPSR_WPVS (0x1u << 0) /**< \brief (TWIHS_WPSR) Write Protection Violation Status */ +#define TWIHS_WPSR_WPVSRC_Pos 8 +#define TWIHS_WPSR_WPVSRC_Msk (0xffffffu << TWIHS_WPSR_WPVSRC_Pos) /**< \brief (TWIHS_WPSR) Write Protection Violation Source */ +/* -------- TWIHS_VER : (TWIHS Offset: 0xFC) Version Register -------- */ +#define TWIHS_VER_VERSION_Pos 0 +#define TWIHS_VER_VERSION_Msk (0xfffu << TWIHS_VER_VERSION_Pos) /**< \brief (TWIHS_VER) Version of the Hardware Module */ +#define TWIHS_VER_MFN_Pos 16 +#define TWIHS_VER_MFN_Msk (0x7u << TWIHS_VER_MFN_Pos) /**< \brief (TWIHS_VER) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_TWIHS_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h new file mode 100644 index 00000000..b9d81010 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h @@ -0,0 +1,167 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UART_COMPONENT_ +#define _SAME70_UART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAME70_UART Universal Asynchronous Receiver Transmitter */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Uart hardware registers */ +typedef struct { + __O uint32_t UART_CR; /**< \brief (Uart Offset: 0x0000) Control Register */ + __IO uint32_t UART_MR; /**< \brief (Uart Offset: 0x0004) Mode Register */ + __O uint32_t UART_IER; /**< \brief (Uart Offset: 0x0008) Interrupt Enable Register */ + __O uint32_t UART_IDR; /**< \brief (Uart Offset: 0x000C) Interrupt Disable Register */ + __I uint32_t UART_IMR; /**< \brief (Uart Offset: 0x0010) Interrupt Mask Register */ + __I uint32_t UART_SR; /**< \brief (Uart Offset: 0x0014) Status Register */ + __I uint32_t UART_RHR; /**< \brief (Uart Offset: 0x0018) Receive Holding Register */ + __O uint32_t UART_THR; /**< \brief (Uart Offset: 0x001C) Transmit Holding Register */ + __IO uint32_t UART_BRGR; /**< \brief (Uart Offset: 0x0020) Baud Rate Generator Register */ + __IO uint32_t UART_CMPR; /**< \brief (Uart Offset: 0x0024) Comparison Register */ + __I uint32_t Reserved1[47]; + __IO uint32_t UART_WPMR; /**< \brief (Uart Offset: 0x00E4) Write Protection Mode Register */ + __I uint32_t Reserved2[5]; + __I uint32_t UART_VERSION; /**< \brief (Uart Offset: 0x00FC) Version Register */ +} Uart; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- UART_CR : (UART Offset: 0x0000) Control Register -------- */ +#define UART_CR_RSTRX (0x1u << 2) /**< \brief (UART_CR) Reset Receiver */ +#define UART_CR_RSTTX (0x1u << 3) /**< \brief (UART_CR) Reset Transmitter */ +#define UART_CR_RXEN (0x1u << 4) /**< \brief (UART_CR) Receiver Enable */ +#define UART_CR_RXDIS (0x1u << 5) /**< \brief (UART_CR) Receiver Disable */ +#define UART_CR_TXEN (0x1u << 6) /**< \brief (UART_CR) Transmitter Enable */ +#define UART_CR_TXDIS (0x1u << 7) /**< \brief (UART_CR) Transmitter Disable */ +#define UART_CR_RSTSTA (0x1u << 8) /**< \brief (UART_CR) Reset Status */ +#define UART_CR_REQCLR (0x1u << 12) /**< \brief (UART_CR) Request Clear */ +#define UART_CR_DBGE (0x1u << 15) /**< \brief (UART_CR) Debug Enable */ +/* -------- UART_MR : (UART Offset: 0x0004) Mode Register -------- */ +#define UART_MR_FILTER (0x1u << 4) /**< \brief (UART_MR) Receiver Digital Filter */ +#define UART_MR_FILTER_DISABLED (0x0u << 4) /**< \brief (UART_MR) UART does not filter the receive line. */ +#define UART_MR_FILTER_ENABLED (0x1u << 4) /**< \brief (UART_MR) UART filters the receive line using a three-sample filter (16x-bit clock) (2 over 3 majority). */ +#define UART_MR_PAR_Pos 9 +#define UART_MR_PAR_Msk (0x7u << UART_MR_PAR_Pos) /**< \brief (UART_MR) Parity Type */ +#define UART_MR_PAR(value) ((UART_MR_PAR_Msk & ((value) << UART_MR_PAR_Pos))) +#define UART_MR_PAR_EVEN (0x0u << 9) /**< \brief (UART_MR) Even Parity */ +#define UART_MR_PAR_ODD (0x1u << 9) /**< \brief (UART_MR) Odd Parity */ +#define UART_MR_PAR_SPACE (0x2u << 9) /**< \brief (UART_MR) Space: parity forced to 0 */ +#define UART_MR_PAR_MARK (0x3u << 9) /**< \brief (UART_MR) Mark: parity forced to 1 */ +#define UART_MR_PAR_NO (0x4u << 9) /**< \brief (UART_MR) No parity */ +#define UART_MR_BRSRCCK (0x1u << 12) /**< \brief (UART_MR) Baud Rate Source Clock */ +#define UART_MR_BRSRCCK_PERIPH_CLK (0x0u << 12) /**< \brief (UART_MR) The baud rate is driven by the peripheral clock */ +#define UART_MR_BRSRCCK_PMC_PCK (0x1u << 12) /**< \brief (UART_MR) The baud rate is driven by a PMC programmable clock PCK (see section Power Management Controller (PMC)). */ +#define UART_MR_CHMODE_Pos 14 +#define UART_MR_CHMODE_Msk (0x3u << UART_MR_CHMODE_Pos) /**< \brief (UART_MR) Channel Mode */ +#define UART_MR_CHMODE(value) ((UART_MR_CHMODE_Msk & ((value) << UART_MR_CHMODE_Pos))) +#define UART_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (UART_MR) Normal mode */ +#define UART_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (UART_MR) Automatic echo */ +#define UART_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (UART_MR) Local loopback */ +#define UART_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (UART_MR) Remote loopback */ +/* -------- UART_IER : (UART Offset: 0x0008) Interrupt Enable Register -------- */ +#define UART_IER_RXRDY (0x1u << 0) /**< \brief (UART_IER) Enable RXRDY Interrupt */ +#define UART_IER_TXRDY (0x1u << 1) /**< \brief (UART_IER) Enable TXRDY Interrupt */ +#define UART_IER_OVRE (0x1u << 5) /**< \brief (UART_IER) Enable Overrun Error Interrupt */ +#define UART_IER_FRAME (0x1u << 6) /**< \brief (UART_IER) Enable Framing Error Interrupt */ +#define UART_IER_PARE (0x1u << 7) /**< \brief (UART_IER) Enable Parity Error Interrupt */ +#define UART_IER_TXEMPTY (0x1u << 9) /**< \brief (UART_IER) Enable TXEMPTY Interrupt */ +#define UART_IER_CMP (0x1u << 15) /**< \brief (UART_IER) Enable Comparison Interrupt */ +/* -------- UART_IDR : (UART Offset: 0x000C) Interrupt Disable Register -------- */ +#define UART_IDR_RXRDY (0x1u << 0) /**< \brief (UART_IDR) Disable RXRDY Interrupt */ +#define UART_IDR_TXRDY (0x1u << 1) /**< \brief (UART_IDR) Disable TXRDY Interrupt */ +#define UART_IDR_OVRE (0x1u << 5) /**< \brief (UART_IDR) Disable Overrun Error Interrupt */ +#define UART_IDR_FRAME (0x1u << 6) /**< \brief (UART_IDR) Disable Framing Error Interrupt */ +#define UART_IDR_PARE (0x1u << 7) /**< \brief (UART_IDR) Disable Parity Error Interrupt */ +#define UART_IDR_TXEMPTY (0x1u << 9) /**< \brief (UART_IDR) Disable TXEMPTY Interrupt */ +#define UART_IDR_CMP (0x1u << 15) /**< \brief (UART_IDR) Disable Comparison Interrupt */ +/* -------- UART_IMR : (UART Offset: 0x0010) Interrupt Mask Register -------- */ +#define UART_IMR_RXRDY (0x1u << 0) /**< \brief (UART_IMR) Mask RXRDY Interrupt */ +#define UART_IMR_TXRDY (0x1u << 1) /**< \brief (UART_IMR) Disable TXRDY Interrupt */ +#define UART_IMR_OVRE (0x1u << 5) /**< \brief (UART_IMR) Mask Overrun Error Interrupt */ +#define UART_IMR_FRAME (0x1u << 6) /**< \brief (UART_IMR) Mask Framing Error Interrupt */ +#define UART_IMR_PARE (0x1u << 7) /**< \brief (UART_IMR) Mask Parity Error Interrupt */ +#define UART_IMR_TXEMPTY (0x1u << 9) /**< \brief (UART_IMR) Mask TXEMPTY Interrupt */ +#define UART_IMR_CMP (0x1u << 15) /**< \brief (UART_IMR) Mask Comparison Interrupt */ +/* -------- UART_SR : (UART Offset: 0x0014) Status Register -------- */ +#define UART_SR_RXRDY (0x1u << 0) /**< \brief (UART_SR) Receiver Ready */ +#define UART_SR_TXRDY (0x1u << 1) /**< \brief (UART_SR) Transmitter Ready */ +#define UART_SR_OVRE (0x1u << 5) /**< \brief (UART_SR) Overrun Error */ +#define UART_SR_FRAME (0x1u << 6) /**< \brief (UART_SR) Framing Error */ +#define UART_SR_PARE (0x1u << 7) /**< \brief (UART_SR) Parity Error */ +#define UART_SR_TXEMPTY (0x1u << 9) /**< \brief (UART_SR) Transmitter Empty */ +#define UART_SR_CMP (0x1u << 15) /**< \brief (UART_SR) Comparison Match */ +#define UART_SR_SWES (0x1u << 21) /**< \brief (UART_SR) SleepWalking Enable Status */ +#define UART_SR_CLKREQ (0x1u << 22) /**< \brief (UART_SR) Clock Request */ +#define UART_SR_WKUPREQ (0x1u << 23) /**< \brief (UART_SR) Wake-Up Request */ +/* -------- UART_RHR : (UART Offset: 0x0018) Receive Holding Register -------- */ +#define UART_RHR_RXCHR_Pos 0 +#define UART_RHR_RXCHR_Msk (0xffu << UART_RHR_RXCHR_Pos) /**< \brief (UART_RHR) Received Character */ +/* -------- UART_THR : (UART Offset: 0x001C) Transmit Holding Register -------- */ +#define UART_THR_TXCHR_Pos 0 +#define UART_THR_TXCHR_Msk (0xffu << UART_THR_TXCHR_Pos) /**< \brief (UART_THR) Character to be Transmitted */ +#define UART_THR_TXCHR(value) ((UART_THR_TXCHR_Msk & ((value) << UART_THR_TXCHR_Pos))) +/* -------- UART_BRGR : (UART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define UART_BRGR_CD_Pos 0 +#define UART_BRGR_CD_Msk (0xffffu << UART_BRGR_CD_Pos) /**< \brief (UART_BRGR) Clock Divisor */ +#define UART_BRGR_CD(value) ((UART_BRGR_CD_Msk & ((value) << UART_BRGR_CD_Pos))) +/* -------- UART_CMPR : (UART Offset: 0x0024) Comparison Register -------- */ +#define UART_CMPR_VAL1_Pos 0 +#define UART_CMPR_VAL1_Msk (0xffu << UART_CMPR_VAL1_Pos) /**< \brief (UART_CMPR) First Comparison Value for Received Character */ +#define UART_CMPR_VAL1(value) ((UART_CMPR_VAL1_Msk & ((value) << UART_CMPR_VAL1_Pos))) +#define UART_CMPR_CMPMODE (0x1u << 12) /**< \brief (UART_CMPR) Comparison Mode */ +#define UART_CMPR_CMPMODE_FLAG_ONLY (0x0u << 12) /**< \brief (UART_CMPR) Any character is received and comparison function drives CMP flag. */ +#define UART_CMPR_CMPMODE_START_CONDITION (0x1u << 12) /**< \brief (UART_CMPR) Comparison condition must be met to start reception. */ +#define UART_CMPR_CMPPAR (0x1u << 14) /**< \brief (UART_CMPR) Compare Parity */ +#define UART_CMPR_VAL2_Pos 16 +#define UART_CMPR_VAL2_Msk (0xffu << UART_CMPR_VAL2_Pos) /**< \brief (UART_CMPR) Second Comparison Value for Received Character */ +#define UART_CMPR_VAL2(value) ((UART_CMPR_VAL2_Msk & ((value) << UART_CMPR_VAL2_Pos))) +/* -------- UART_WPMR : (UART Offset: 0x00E4) Write Protection Mode Register -------- */ +#define UART_WPMR_WPEN (0x1u << 0) /**< \brief (UART_WPMR) Write Protection Enable */ +#define UART_WPMR_WPKEY_Pos 8 +#define UART_WPMR_WPKEY_Msk (0xffffffu << UART_WPMR_WPKEY_Pos) /**< \brief (UART_WPMR) Write Protection Key */ +#define UART_WPMR_WPKEY(value) ((UART_WPMR_WPKEY_Msk & ((value) << UART_WPMR_WPKEY_Pos))) +#define UART_WPMR_WPKEY_PASSWD (0x554152u << 8) /**< \brief (UART_WPMR) Writing any other value in this field aborts the write operation.Always reads as 0. */ +/* -------- UART_VERSION : (UART Offset: 0x00FC) Version Register -------- */ +#define UART_VERSION_VERSION_Pos 0 +#define UART_VERSION_VERSION_Msk (0xfffu << UART_VERSION_VERSION_Pos) /**< \brief (UART_VERSION) Hardware Module Version */ +#define UART_VERSION_MFN_Pos 16 +#define UART_VERSION_MFN_Msk (0x7u << UART_VERSION_MFN_Pos) /**< \brief (UART_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_UART_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h new file mode 100644 index 00000000..6785c9b4 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h @@ -0,0 +1,492 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_USART_COMPONENT_ +#define _SAME70_USART_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ +/* ============================================================================= */ +/** \addtogroup SAME70_USART Universal Synchronous Asynchronous Receiver Transmitter */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Usart hardware registers */ +typedef struct { + __O uint32_t US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ + __IO uint32_t US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ + __O uint32_t US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ + __O uint32_t US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ + __I uint32_t US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ + __I uint32_t US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ + __I uint32_t US_RHR; /**< \brief (Usart Offset: 0x0018) Receive Holding Register */ + __O uint32_t US_THR; /**< \brief (Usart Offset: 0x001C) Transmit Holding Register */ + __IO uint32_t US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ + __IO uint32_t US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ + __IO uint32_t US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ + __I uint32_t Reserved1[5]; + __IO uint32_t US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ + __I uint32_t US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ + __I uint32_t Reserved2[1]; + __IO uint32_t US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ + __IO uint32_t US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Configuration Register */ + __IO uint32_t US_LINMR; /**< \brief (Usart Offset: 0x0054) LIN Mode Register */ + __IO uint32_t US_LINIR; /**< \brief (Usart Offset: 0x0058) LIN Identifier Register */ + __I uint32_t US_LINBRR; /**< \brief (Usart Offset: 0x005C) LIN Baud Rate Register */ + __IO uint32_t US_LONMR; /**< \brief (Usart Offset: 0x0060) LON Mode Register */ + __IO uint32_t US_LONPR; /**< \brief (Usart Offset: 0x0064) LON Preamble Register */ + __IO uint32_t US_LONDL; /**< \brief (Usart Offset: 0x0068) LON Data Length Register */ + __IO uint32_t US_LONL2HDR; /**< \brief (Usart Offset: 0x006C) LON L2HDR Register */ + __I uint32_t US_LONBL; /**< \brief (Usart Offset: 0x0070) LON Backlog Register */ + __IO uint32_t US_LONB1TX; /**< \brief (Usart Offset: 0x0074) LON Beta1 Tx Register */ + __IO uint32_t US_LONB1RX; /**< \brief (Usart Offset: 0x0078) LON Beta1 Rx Register */ + __IO uint32_t US_LONPRIO; /**< \brief (Usart Offset: 0x007C) LON Priority Register */ + __IO uint32_t US_IDTTX; /**< \brief (Usart Offset: 0x0080) LON IDT Tx Register */ + __IO uint32_t US_IDTRX; /**< \brief (Usart Offset: 0x0084) LON IDT Rx Register */ + __IO uint32_t US_ICDIFF; /**< \brief (Usart Offset: 0x0088) IC DIFF Register */ + __I uint32_t Reserved3[22]; + __IO uint32_t US_WPMR; /**< \brief (Usart Offset: 0x00E4) Write Protection Mode Register */ + __I uint32_t US_WPSR; /**< \brief (Usart Offset: 0x00E8) Write Protection Status Register */ + __I uint32_t Reserved4[4]; + __I uint32_t US_VERSION; /**< \brief (Usart Offset: 0x00FC) Version Register */ +} Usart; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ +#define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ +#define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ +#define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ +#define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ +#define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ +#define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ +#define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ +#define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ +#define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ +#define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Clear TIMEOUT Flag and Start Time-out After Next Character Received */ +#define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ +#define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ +#define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ +#define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Start Time-out Immediately */ +#define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ +#define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ +#define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Pin Control */ +#define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Pin Control */ +#define US_CR_LINABT (0x1u << 20) /**< \brief (US_CR) Abort LIN Transmission */ +#define US_CR_LINWKUP (0x1u << 21) /**< \brief (US_CR) Send LIN Wakeup Signal */ +#define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ +#define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ +/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ +#define US_MR_USART_MODE_Pos 0 +#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) USART Mode of Operation */ +#define US_MR_USART_MODE(value) ((US_MR_USART_MODE_Msk & ((value) << US_MR_USART_MODE_Pos))) +#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ +#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ +#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ +#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ +#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ +#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ +#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ +#define US_MR_USART_MODE_LON (0x9u << 0) /**< \brief (US_MR) LON */ +#define US_MR_USART_MODE_LIN_MASTER (0xAu << 0) /**< \brief (US_MR) LIN Master mode */ +#define US_MR_USART_MODE_LIN_SLAVE (0xBu << 0) /**< \brief (US_MR) LIN Slave mode */ +#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI master mode (CLKO must be written to 1 and USCLKS = 0, 1 or 2) */ +#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave mode */ +#define US_MR_USCLKS_Pos 4 +#define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ +#define US_MR_USCLKS(value) ((US_MR_USCLKS_Msk & ((value) << US_MR_USCLKS_Pos))) +#define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Peripheral clock is selected */ +#define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Peripheral clock divided (DIV=DIV=8) is selected */ +#define US_MR_USCLKS_PCK (0x2u << 4) /**< \brief (US_MR) PMC programmable clock (PCK) is selected. If the SCK pin is driven (CLKO = 1), the CD field must be greater than 1. */ +#define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial clock (SCK) is selected */ +#define US_MR_CHRL_Pos 6 +#define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length */ +#define US_MR_CHRL(value) ((US_MR_CHRL_Msk & ((value) << US_MR_CHRL_Pos))) +#define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ +#define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ +#define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ +#define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ +#define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ +#define US_MR_PAR_Pos 9 +#define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ +#define US_MR_PAR(value) ((US_MR_PAR_Msk & ((value) << US_MR_PAR_Pos))) +#define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ +#define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ +#define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ +#define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ +#define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ +#define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ +#define US_MR_NBSTOP_Pos 12 +#define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ +#define US_MR_NBSTOP(value) ((US_MR_NBSTOP_Msk & ((value) << US_MR_NBSTOP_Pos))) +#define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ +#define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ +#define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ +#define US_MR_CHMODE_Pos 14 +#define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ +#define US_MR_CHMODE(value) ((US_MR_CHMODE_Msk & ((value) << US_MR_CHMODE_Pos))) +#define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal mode */ +#define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ +#define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ +#define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ +#define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ +#define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ +#define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ +#define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ +#define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ +#define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ +#define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ +#define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) Inverted Data */ +#define US_MR_MAX_ITERATION_Pos 24 +#define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) Maximum Number of Automatic Iteration */ +#define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) +#define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Receive Line Filter */ +#define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ +#define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ +#define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ +#define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ +#define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ +#define US_MR_WRDBT (0x1u << 20) /**< \brief (US_MR) Wait Read Data Before Transfer */ +/* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ +#define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ +#define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ +#define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ +#define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ +#define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ +#define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ +#define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ +#define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ +#define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached Interrupt Enable */ +#define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non Acknowledge Interrupt Enable */ +#define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ +#define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ +#define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ +#define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ +#define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ +#define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error Interrupt Enable */ +#define US_IER_NSSE (0x1u << 19) /**< \brief (US_IER) NSS Line (Driving CTS Pin) Rising or Falling Edge Event Interrupt Enable */ +#define US_IER_LINBK (0x1u << 13) /**< \brief (US_IER) LIN Break Sent or LIN Break Received Interrupt Enable */ +#define US_IER_LINID (0x1u << 14) /**< \brief (US_IER) LIN Identifier Sent or LIN Identifier Received Interrupt Enable */ +#define US_IER_LINTC (0x1u << 15) /**< \brief (US_IER) LIN Transfer Completed Interrupt Enable */ +#define US_IER_LINBE (0x1u << 25) /**< \brief (US_IER) LIN Bus Error Interrupt Enable */ +#define US_IER_LINISFE (0x1u << 26) /**< \brief (US_IER) LIN Inconsistent Synch Field Error Interrupt Enable */ +#define US_IER_LINIPE (0x1u << 27) /**< \brief (US_IER) LIN Identifier Parity Interrupt Enable */ +#define US_IER_LINCE (0x1u << 28) /**< \brief (US_IER) LIN Checksum Error Interrupt Enable */ +#define US_IER_LINSNRE (0x1u << 29) /**< \brief (US_IER) LIN Slave Not Responding Error Interrupt Enable */ +#define US_IER_LINSTE (0x1u << 30) /**< \brief (US_IER) LIN Synch Tolerance Error Interrupt Enable */ +#define US_IER_LINHTE (0x1u << 31) /**< \brief (US_IER) LIN Header Timeout Error Interrupt Enable */ +#define US_IER_LSFE (0x1u << 6) /**< \brief (US_IER) LON Short Frame Error Interrupt Enable */ +#define US_IER_LCRCE (0x1u << 7) /**< \brief (US_IER) LON CRC Error Interrupt Enable */ +#define US_IER_LTXD (0x1u << 24) /**< \brief (US_IER) LON Transmission Done Interrupt Enable */ +#define US_IER_LCOL (0x1u << 25) /**< \brief (US_IER) LON Collision Interrupt Enable */ +#define US_IER_LFET (0x1u << 26) /**< \brief (US_IER) LON Frame Early Termination Interrupt Enable */ +#define US_IER_LRXD (0x1u << 27) /**< \brief (US_IER) LON Reception Done Interrupt Enable */ +#define US_IER_LBLOVFE (0x1u << 28) /**< \brief (US_IER) LON Backlog Overflow Error Interrupt Enable */ +/* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ +#define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ +#define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ +#define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ +#define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Enable */ +#define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ +#define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ +#define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ +#define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ +#define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max Number of Repetitions Reached Interrupt Disable */ +#define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non Acknowledge Interrupt Disable */ +#define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ +#define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ +#define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ +#define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ +#define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ +#define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Interrupt Disable */ +#define US_IDR_NSSE (0x1u << 19) /**< \brief (US_IDR) NSS Line (Driving CTS Pin) Rising or Falling Edge Event Interrupt Disable */ +#define US_IDR_LINBK (0x1u << 13) /**< \brief (US_IDR) LIN Break Sent or LIN Break Received Interrupt Disable */ +#define US_IDR_LINID (0x1u << 14) /**< \brief (US_IDR) LIN Identifier Sent or LIN Identifier Received Interrupt Disable */ +#define US_IDR_LINTC (0x1u << 15) /**< \brief (US_IDR) LIN Transfer Completed Interrupt Disable */ +#define US_IDR_LINBE (0x1u << 25) /**< \brief (US_IDR) LIN Bus Error Interrupt Disable */ +#define US_IDR_LINISFE (0x1u << 26) /**< \brief (US_IDR) LIN Inconsistent Synch Field Error Interrupt Disable */ +#define US_IDR_LINIPE (0x1u << 27) /**< \brief (US_IDR) LIN Identifier Parity Interrupt Disable */ +#define US_IDR_LINCE (0x1u << 28) /**< \brief (US_IDR) LIN Checksum Error Interrupt Disable */ +#define US_IDR_LINSNRE (0x1u << 29) /**< \brief (US_IDR) LIN Slave Not Responding Error Interrupt Disable */ +#define US_IDR_LINSTE (0x1u << 30) /**< \brief (US_IDR) LIN Synch Tolerance Error Interrupt Disable */ +#define US_IDR_LINHTE (0x1u << 31) /**< \brief (US_IDR) LIN Header Timeout Error Interrupt Disable */ +#define US_IDR_LSFE (0x1u << 6) /**< \brief (US_IDR) LON Short Frame Error Interrupt Disable */ +#define US_IDR_LCRCE (0x1u << 7) /**< \brief (US_IDR) LON CRC Error Interrupt Disable */ +#define US_IDR_LTXD (0x1u << 24) /**< \brief (US_IDR) LON Transmission Done Interrupt Disable */ +#define US_IDR_LCOL (0x1u << 25) /**< \brief (US_IDR) LON Collision Interrupt Disable */ +#define US_IDR_LFET (0x1u << 26) /**< \brief (US_IDR) LON Frame Early Termination Interrupt Disable */ +#define US_IDR_LRXD (0x1u << 27) /**< \brief (US_IDR) LON Reception Done Interrupt Disable */ +#define US_IDR_LBLOVFE (0x1u << 28) /**< \brief (US_IDR) LON Backlog Overflow Error Interrupt Disable */ +/* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ +#define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ +#define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ +#define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ +#define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ +#define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ +#define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ +#define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ +#define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ +#define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max Number of Repetitions Reached Interrupt Mask */ +#define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non Acknowledge Interrupt Mask */ +#define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ +#define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ +#define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ +#define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ +#define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ +#define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Interrupt Mask */ +#define US_IMR_NSSE (0x1u << 19) /**< \brief (US_IMR) NSS Line (Driving CTS Pin) Rising or Falling Edge Event Interrupt Mask */ +#define US_IMR_LINBK (0x1u << 13) /**< \brief (US_IMR) LIN Break Sent or LIN Break Received Interrupt Mask */ +#define US_IMR_LINID (0x1u << 14) /**< \brief (US_IMR) LIN Identifier Sent or LIN Identifier Received Interrupt Mask */ +#define US_IMR_LINTC (0x1u << 15) /**< \brief (US_IMR) LIN Transfer Completed Interrupt Mask */ +#define US_IMR_LINBE (0x1u << 25) /**< \brief (US_IMR) LIN Bus Error Interrupt Mask */ +#define US_IMR_LINISFE (0x1u << 26) /**< \brief (US_IMR) LIN Inconsistent Synch Field Error Interrupt Mask */ +#define US_IMR_LINIPE (0x1u << 27) /**< \brief (US_IMR) LIN Identifier Parity Interrupt Mask */ +#define US_IMR_LINCE (0x1u << 28) /**< \brief (US_IMR) LIN Checksum Error Interrupt Mask */ +#define US_IMR_LINSNRE (0x1u << 29) /**< \brief (US_IMR) LIN Slave Not Responding Error Interrupt Mask */ +#define US_IMR_LINSTE (0x1u << 30) /**< \brief (US_IMR) LIN Synch Tolerance Error Interrupt Mask */ +#define US_IMR_LINHTE (0x1u << 31) /**< \brief (US_IMR) LIN Header Timeout Error Interrupt Mask */ +#define US_IMR_LSFE (0x1u << 6) /**< \brief (US_IMR) LON Short Frame Error Interrupt Mask */ +#define US_IMR_LCRCE (0x1u << 7) /**< \brief (US_IMR) LON CRC Error Interrupt Mask */ +#define US_IMR_LTXD (0x1u << 24) /**< \brief (US_IMR) LON Transmission Done Interrupt Mask */ +#define US_IMR_LCOL (0x1u << 25) /**< \brief (US_IMR) LON Collision Interrupt Mask */ +#define US_IMR_LFET (0x1u << 26) /**< \brief (US_IMR) LON Frame Early Termination Interrupt Mask */ +#define US_IMR_LRXD (0x1u << 27) /**< \brief (US_IMR) LON Reception Done Interrupt Mask */ +#define US_IMR_LBLOVFE (0x1u << 28) /**< \brief (US_IMR) LON Backlog Overflow Error Interrupt Mask */ +/* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ +#define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready (cleared by reading US_RHR) */ +#define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready (cleared by writing US_THR) */ +#define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out (cleared by writing a one to bit US_CR.STTTO) */ +#define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty (cleared by writing US_THR) */ +#define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max Number of Repetitions Reached (cleared by writing a one to bit US_CR.RSTIT) */ +#define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non Acknowledge Interrupt (cleared by writing a one to bit US_CR.RSTNACK) */ +#define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag (cleared on read) */ +#define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag (cleared on read) */ +#define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag (cleared on read) */ +#define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag (cleared on read) */ +#define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ +#define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ +#define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ +#define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ +#define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error (cleared by writing a one to the bit US_CR.RSTSTA) */ +#define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) Underrun Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_NSSE (0x1u << 19) /**< \brief (US_CSR) NSS Line (Driving CTS Pin) Rising or Falling Edge Event (cleared on read) */ +#define US_CSR_NSS (0x1u << 23) /**< \brief (US_CSR) NSS Line (Driving CTS Pin) Rising or Falling Edge Event (cleared on read) */ +#define US_CSR_LINBK (0x1u << 13) /**< \brief (US_CSR) LIN Break Sent or LIN Break Received (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINID (0x1u << 14) /**< \brief (US_CSR) LIN Identifier Sent or LIN Identifier Received (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINTC (0x1u << 15) /**< \brief (US_CSR) LIN Transfer Completed (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINBLS (0x1u << 23) /**< \brief (US_CSR) LIN Bus Line Status */ +#define US_CSR_LINBE (0x1u << 25) /**< \brief (US_CSR) LIN Bit Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINISFE (0x1u << 26) /**< \brief (US_CSR) LIN Inconsistent Synch Field Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINIPE (0x1u << 27) /**< \brief (US_CSR) LIN Identifier Parity Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINCE (0x1u << 28) /**< \brief (US_CSR) LIN Checksum Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINSNRE (0x1u << 29) /**< \brief (US_CSR) LIN Slave Not Responding Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINSTE (0x1u << 30) /**< \brief (US_CSR) LIN Synch Tolerance Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LINHTE (0x1u << 31) /**< \brief (US_CSR) LIN Header Timeout Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LSFE (0x1u << 6) /**< \brief (US_CSR) LON Short Frame Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LCRCE (0x1u << 7) /**< \brief (US_CSR) LON CRC Error (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LTXD (0x1u << 24) /**< \brief (US_CSR) LON Transmission End Flag (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LCOL (0x1u << 25) /**< \brief (US_CSR) LON Collision Detected Flag (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LFET (0x1u << 26) /**< \brief (US_CSR) LON Frame Early Termination (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LRXD (0x1u << 27) /**< \brief (US_CSR) LON Reception End Flag (cleared by writing a one to bit US_CR.RSTSTA) */ +#define US_CSR_LBLOVFE (0x1u << 28) /**< \brief (US_CSR) LON Backlog Overflow Error (cleared by writing a one to bit US_CR.RSTSTA) */ +/* -------- US_RHR : (USART Offset: 0x0018) Receive Holding Register -------- */ +#define US_RHR_RXCHR_Pos 0 +#define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ +#define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ +/* -------- US_THR : (USART Offset: 0x001C) Transmit Holding Register -------- */ +#define US_THR_TXCHR_Pos 0 +#define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ +#define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) +#define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be Transmitted */ +/* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ +#define US_BRGR_CD_Pos 0 +#define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ +#define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) +#define US_BRGR_FP_Pos 16 +#define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ +#define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) +/* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ +#define US_RTOR_TO_Pos 0 +#define US_RTOR_TO_Msk (0x1ffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ +#define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) +/* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ +#define US_TTGR_TG_Pos 0 +#define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ +#define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) +#define US_TTGR_PCYCLE_Pos 0 +#define US_TTGR_PCYCLE_Msk (0xffffffu << US_TTGR_PCYCLE_Pos) /**< \brief (US_TTGR) LON PCYCLE Length */ +#define US_TTGR_PCYCLE(value) ((US_TTGR_PCYCLE_Msk & ((value) << US_TTGR_PCYCLE_Pos))) +/* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ +#define US_FIDI_FI_DI_RATIO_Pos 0 +#define US_FIDI_FI_DI_RATIO_Msk (0xffffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ +#define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) +#define US_FIDI_BETA2_Pos 0 +#define US_FIDI_BETA2_Msk (0xffffffu << US_FIDI_BETA2_Pos) /**< \brief (US_FIDI) LON BETA2 Length */ +#define US_FIDI_BETA2(value) ((US_FIDI_BETA2_Msk & ((value) << US_FIDI_BETA2_Pos))) +/* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ +#define US_NER_NB_ERRORS_Pos 0 +#define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ +/* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ +#define US_IF_IRDA_FILTER_Pos 0 +#define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ +#define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) +/* -------- US_MAN : (USART Offset: 0x0050) Manchester Configuration Register -------- */ +#define US_MAN_TX_PL_Pos 0 +#define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ +#define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) +#define US_MAN_TX_PP_Pos 8 +#define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ +#define US_MAN_TX_PP(value) ((US_MAN_TX_PP_Msk & ((value) << US_MAN_TX_PP_Pos))) +#define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ +#define US_MAN_RX_PL_Pos 16 +#define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ +#define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) +#define US_MAN_RX_PP_Pos 24 +#define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ +#define US_MAN_RX_PP(value) ((US_MAN_RX_PP_Msk & ((value) << US_MAN_RX_PP_Pos))) +#define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ +#define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ +#define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ +#define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ +#define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ +#define US_MAN_ONE (0x1u << 29) /**< \brief (US_MAN) Must Be Set to 1 */ +#define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift Compensation */ +#define US_MAN_RXIDLEV (0x1u << 31) /**< \brief (US_MAN) */ +/* -------- US_LINMR : (USART Offset: 0x0054) LIN Mode Register -------- */ +#define US_LINMR_NACT_Pos 0 +#define US_LINMR_NACT_Msk (0x3u << US_LINMR_NACT_Pos) /**< \brief (US_LINMR) LIN Node Action */ +#define US_LINMR_NACT(value) ((US_LINMR_NACT_Msk & ((value) << US_LINMR_NACT_Pos))) +#define US_LINMR_NACT_PUBLISH (0x0u << 0) /**< \brief (US_LINMR) The USART transmits the response. */ +#define US_LINMR_NACT_SUBSCRIBE (0x1u << 0) /**< \brief (US_LINMR) The USART receives the response. */ +#define US_LINMR_NACT_IGNORE (0x2u << 0) /**< \brief (US_LINMR) The USART does not transmit and does not receive the response. */ +#define US_LINMR_PARDIS (0x1u << 2) /**< \brief (US_LINMR) Parity Disable */ +#define US_LINMR_CHKDIS (0x1u << 3) /**< \brief (US_LINMR) Checksum Disable */ +#define US_LINMR_CHKTYP (0x1u << 4) /**< \brief (US_LINMR) Checksum Type */ +#define US_LINMR_DLM (0x1u << 5) /**< \brief (US_LINMR) Data Length Mode */ +#define US_LINMR_FSDIS (0x1u << 6) /**< \brief (US_LINMR) Frame Slot Mode Disable */ +#define US_LINMR_WKUPTYP (0x1u << 7) /**< \brief (US_LINMR) Wakeup Signal Type */ +#define US_LINMR_DLC_Pos 8 +#define US_LINMR_DLC_Msk (0xffu << US_LINMR_DLC_Pos) /**< \brief (US_LINMR) Data Length Control */ +#define US_LINMR_DLC(value) ((US_LINMR_DLC_Msk & ((value) << US_LINMR_DLC_Pos))) +#define US_LINMR_PDCM (0x1u << 16) /**< \brief (US_LINMR) DMAC Mode */ +#define US_LINMR_SYNCDIS (0x1u << 17) /**< \brief (US_LINMR) Synchronization Disable */ +/* -------- US_LINIR : (USART Offset: 0x0058) LIN Identifier Register -------- */ +#define US_LINIR_IDCHR_Pos 0 +#define US_LINIR_IDCHR_Msk (0xffu << US_LINIR_IDCHR_Pos) /**< \brief (US_LINIR) Identifier Character */ +#define US_LINIR_IDCHR(value) ((US_LINIR_IDCHR_Msk & ((value) << US_LINIR_IDCHR_Pos))) +/* -------- US_LINBRR : (USART Offset: 0x005C) LIN Baud Rate Register -------- */ +#define US_LINBRR_LINCD_Pos 0 +#define US_LINBRR_LINCD_Msk (0xffffu << US_LINBRR_LINCD_Pos) /**< \brief (US_LINBRR) Clock Divider after Synchronization */ +#define US_LINBRR_LINFP_Pos 16 +#define US_LINBRR_LINFP_Msk (0x7u << US_LINBRR_LINFP_Pos) /**< \brief (US_LINBRR) Fractional Part after Synchronization */ +/* -------- US_LONMR : (USART Offset: 0x0060) LON Mode Register -------- */ +#define US_LONMR_COMMT (0x1u << 0) /**< \brief (US_LONMR) LON comm_type Parameter Value */ +#define US_LONMR_COLDET (0x1u << 1) /**< \brief (US_LONMR) LON Collision Detection Feature */ +#define US_LONMR_TCOL (0x1u << 2) /**< \brief (US_LONMR) Terminate Frame upon Collision Notification */ +#define US_LONMR_CDTAIL (0x1u << 3) /**< \brief (US_LONMR) LON Collision Detection on Frame Tail */ +#define US_LONMR_DMAM (0x1u << 4) /**< \brief (US_LONMR) LON DMA Mode */ +#define US_LONMR_LCDS (0x1u << 5) /**< \brief (US_LONMR) LON Collision Detection Source */ +#define US_LONMR_EOFS_Pos 16 +#define US_LONMR_EOFS_Msk (0xffu << US_LONMR_EOFS_Pos) /**< \brief (US_LONMR) End of Frame Condition Size */ +#define US_LONMR_EOFS(value) ((US_LONMR_EOFS_Msk & ((value) << US_LONMR_EOFS_Pos))) +/* -------- US_LONPR : (USART Offset: 0x0064) LON Preamble Register -------- */ +#define US_LONPR_LONPL_Pos 0 +#define US_LONPR_LONPL_Msk (0x3fffu << US_LONPR_LONPL_Pos) /**< \brief (US_LONPR) LON Preamble Length */ +#define US_LONPR_LONPL(value) ((US_LONPR_LONPL_Msk & ((value) << US_LONPR_LONPL_Pos))) +/* -------- US_LONDL : (USART Offset: 0x0068) LON Data Length Register -------- */ +#define US_LONDL_LONDL_Pos 0 +#define US_LONDL_LONDL_Msk (0xffu << US_LONDL_LONDL_Pos) /**< \brief (US_LONDL) LON Data Length */ +#define US_LONDL_LONDL(value) ((US_LONDL_LONDL_Msk & ((value) << US_LONDL_LONDL_Pos))) +/* -------- US_LONL2HDR : (USART Offset: 0x006C) LON L2HDR Register -------- */ +#define US_LONL2HDR_BLI_Pos 0 +#define US_LONL2HDR_BLI_Msk (0x3fu << US_LONL2HDR_BLI_Pos) /**< \brief (US_LONL2HDR) LON Backlog Increment */ +#define US_LONL2HDR_BLI(value) ((US_LONL2HDR_BLI_Msk & ((value) << US_LONL2HDR_BLI_Pos))) +#define US_LONL2HDR_ALTP (0x1u << 6) /**< \brief (US_LONL2HDR) LON Alternate Path Bit */ +#define US_LONL2HDR_PB (0x1u << 7) /**< \brief (US_LONL2HDR) LON Priority Bit */ +/* -------- US_LONBL : (USART Offset: 0x0070) LON Backlog Register -------- */ +#define US_LONBL_LONBL_Pos 0 +#define US_LONBL_LONBL_Msk (0x3fu << US_LONBL_LONBL_Pos) /**< \brief (US_LONBL) LON Node Backlog Value */ +/* -------- US_LONB1TX : (USART Offset: 0x0074) LON Beta1 Tx Register -------- */ +#define US_LONB1TX_BETA1TX_Pos 0 +#define US_LONB1TX_BETA1TX_Msk (0xffffffu << US_LONB1TX_BETA1TX_Pos) /**< \brief (US_LONB1TX) LON Beta1 Length after Transmission */ +#define US_LONB1TX_BETA1TX(value) ((US_LONB1TX_BETA1TX_Msk & ((value) << US_LONB1TX_BETA1TX_Pos))) +/* -------- US_LONB1RX : (USART Offset: 0x0078) LON Beta1 Rx Register -------- */ +#define US_LONB1RX_BETA1RX_Pos 0 +#define US_LONB1RX_BETA1RX_Msk (0xffffffu << US_LONB1RX_BETA1RX_Pos) /**< \brief (US_LONB1RX) LON Beta1 Length after Reception */ +#define US_LONB1RX_BETA1RX(value) ((US_LONB1RX_BETA1RX_Msk & ((value) << US_LONB1RX_BETA1RX_Pos))) +/* -------- US_LONPRIO : (USART Offset: 0x007C) LON Priority Register -------- */ +#define US_LONPRIO_PSNB_Pos 0 +#define US_LONPRIO_PSNB_Msk (0x7fu << US_LONPRIO_PSNB_Pos) /**< \brief (US_LONPRIO) LON Priority Slot Number */ +#define US_LONPRIO_PSNB(value) ((US_LONPRIO_PSNB_Msk & ((value) << US_LONPRIO_PSNB_Pos))) +#define US_LONPRIO_NPS_Pos 8 +#define US_LONPRIO_NPS_Msk (0x7fu << US_LONPRIO_NPS_Pos) /**< \brief (US_LONPRIO) LON Node Priority Slot */ +#define US_LONPRIO_NPS(value) ((US_LONPRIO_NPS_Msk & ((value) << US_LONPRIO_NPS_Pos))) +/* -------- US_IDTTX : (USART Offset: 0x0080) LON IDT Tx Register -------- */ +#define US_IDTTX_IDTTX_Pos 0 +#define US_IDTTX_IDTTX_Msk (0xffffffu << US_IDTTX_IDTTX_Pos) /**< \brief (US_IDTTX) LON Indeterminate Time after Transmission (comm_type = 1 mode only) */ +#define US_IDTTX_IDTTX(value) ((US_IDTTX_IDTTX_Msk & ((value) << US_IDTTX_IDTTX_Pos))) +/* -------- US_IDTRX : (USART Offset: 0x0084) LON IDT Rx Register -------- */ +#define US_IDTRX_IDTRX_Pos 0 +#define US_IDTRX_IDTRX_Msk (0xffffffu << US_IDTRX_IDTRX_Pos) /**< \brief (US_IDTRX) LON Indeterminate Time after Reception (comm_type = 1 mode only) */ +#define US_IDTRX_IDTRX(value) ((US_IDTRX_IDTRX_Msk & ((value) << US_IDTRX_IDTRX_Pos))) +/* -------- US_ICDIFF : (USART Offset: 0x0088) IC DIFF Register -------- */ +#define US_ICDIFF_ICDIFF_Pos 0 +#define US_ICDIFF_ICDIFF_Msk (0xfu << US_ICDIFF_ICDIFF_Pos) /**< \brief (US_ICDIFF) IC Differentiator Number */ +#define US_ICDIFF_ICDIFF(value) ((US_ICDIFF_ICDIFF_Msk & ((value) << US_ICDIFF_ICDIFF_Pos))) +/* -------- US_WPMR : (USART Offset: 0x00E4) Write Protection Mode Register -------- */ +#define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protection Enable */ +#define US_WPMR_WPKEY_Pos 8 +#define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protection Key */ +#define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) +#define US_WPMR_WPKEY_PASSWD (0x555341u << 8) /**< \brief (US_WPMR) Writing any other value in this field aborts the write operation of the WPEN bit. Always reads as 0. */ +/* -------- US_WPSR : (USART Offset: 0x00E8) Write Protection Status Register -------- */ +#define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protection Violation Status */ +#define US_WPSR_WPVSRC_Pos 8 +#define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protection Violation Source */ +/* -------- US_VERSION : (USART Offset: 0x00FC) Version Register -------- */ +#define US_VERSION_VERSION_Pos 0 +#define US_VERSION_VERSION_Msk (0xfffu << US_VERSION_VERSION_Pos) /**< \brief (US_VERSION) Hardware Module Version */ +#define US_VERSION_MFN_Pos 16 +#define US_VERSION_MFN_Msk (0x7u << US_VERSION_MFN_Pos) /**< \brief (US_VERSION) Metal Fix Number */ + +/*@}*/ + + +#endif /* _SAME70_USART_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h new file mode 100644 index 00000000..b75cacd2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h @@ -0,0 +1,952 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_USBHS_COMPONENT_ +#define _SAME70_USBHS_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB High-Speed Interface */ +/* ============================================================================= */ +/** \addtogroup SAME70_USBHS USB High-Speed Interface */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief UsbhsDevdma hardware registers */ +typedef struct { + __IO uint32_t USBHS_DEVDMANXTDSC; /**< \brief (UsbhsDevdma Offset: 0x0) Device DMA Channel Next Descriptor Address Register */ + __IO uint32_t USBHS_DEVDMAADDRESS; /**< \brief (UsbhsDevdma Offset: 0x4) Device DMA Channel Address Register */ + __IO uint32_t USBHS_DEVDMACONTROL; /**< \brief (UsbhsDevdma Offset: 0x8) Device DMA Channel Control Register */ + __IO uint32_t USBHS_DEVDMASTATUS; /**< \brief (UsbhsDevdma Offset: 0xC) Device DMA Channel Status Register */ +} UsbhsDevdma; +/** \brief UsbhsHstdma hardware registers */ +typedef struct { + __IO uint32_t USBHS_HSTDMANXTDSC; /**< \brief (UsbhsHstdma Offset: 0x0) Host DMA Channel Next Descriptor Address Register */ + __IO uint32_t USBHS_HSTDMAADDRESS; /**< \brief (UsbhsHstdma Offset: 0x4) Host DMA Channel Address Register */ + __IO uint32_t USBHS_HSTDMACONTROL; /**< \brief (UsbhsHstdma Offset: 0x8) Host DMA Channel Control Register */ + __IO uint32_t USBHS_HSTDMASTATUS; /**< \brief (UsbhsHstdma Offset: 0xC) Host DMA Channel Status Register */ +} UsbhsHstdma; +/** \brief Usbhs hardware registers */ +#define USBHSDEVDMA_NUMBER 7 +#define USBHSHSTDMA_NUMBER 7 +typedef struct { + __IO uint32_t USBHS_DEVCTRL; /**< \brief (Usbhs Offset: 0x0000) Device General Control Register */ + __I uint32_t USBHS_DEVISR; /**< \brief (Usbhs Offset: 0x0004) Device Global Interrupt Status Register */ + __O uint32_t USBHS_DEVICR; /**< \brief (Usbhs Offset: 0x0008) Device Global Interrupt Clear Register */ + __O uint32_t USBHS_DEVIFR; /**< \brief (Usbhs Offset: 0x000C) Device Global Interrupt Set Register */ + __I uint32_t USBHS_DEVIMR; /**< \brief (Usbhs Offset: 0x0010) Device Global Interrupt Mask Register */ + __O uint32_t USBHS_DEVIDR; /**< \brief (Usbhs Offset: 0x0014) Device Global Interrupt Disable Register */ + __O uint32_t USBHS_DEVIER; /**< \brief (Usbhs Offset: 0x0018) Device Global Interrupt Enable Register */ + __IO uint32_t USBHS_DEVEPT; /**< \brief (Usbhs Offset: 0x001C) Device Endpoint Register */ + __I uint32_t USBHS_DEVFNUM; /**< \brief (Usbhs Offset: 0x0020) Device Frame Number Register */ + __I uint32_t Reserved1[55]; + __IO uint32_t USBHS_DEVEPTCFG[10]; /**< \brief (Usbhs Offset: 0x100) Device Endpoint Configuration Register (n = 0) */ + __I uint32_t Reserved2[2]; + __I uint32_t USBHS_DEVEPTISR[10]; /**< \brief (Usbhs Offset: 0x130) Device Endpoint Status Register (n = 0) */ + __I uint32_t Reserved3[2]; + __O uint32_t USBHS_DEVEPTICR[10]; /**< \brief (Usbhs Offset: 0x160) Device Endpoint Clear Register (n = 0) */ + __I uint32_t Reserved4[2]; + __O uint32_t USBHS_DEVEPTIFR[10]; /**< \brief (Usbhs Offset: 0x190) Device Endpoint Set Register (n = 0) */ + __I uint32_t Reserved5[2]; + __I uint32_t USBHS_DEVEPTIMR[10]; /**< \brief (Usbhs Offset: 0x1C0) Device Endpoint Mask Register (n = 0) */ + __I uint32_t Reserved6[2]; + __O uint32_t USBHS_DEVEPTIER[10]; /**< \brief (Usbhs Offset: 0x1F0) Device Endpoint Enable Register (n = 0) */ + __I uint32_t Reserved7[2]; + __O uint32_t USBHS_DEVEPTIDR[10]; /**< \brief (Usbhs Offset: 0x220) Device Endpoint Disable Register (n = 0) */ + __I uint32_t Reserved8[50]; + UsbhsDevdma USBHS_DEVDMA[USBHSDEVDMA_NUMBER]; /**< \brief (Usbhs Offset: 0x310) n = 1 .. 7 */ + __I uint32_t Reserved9[32]; + __IO uint32_t USBHS_HSTCTRL; /**< \brief (Usbhs Offset: 0x0400) Host General Control Register */ + __I uint32_t USBHS_HSTISR; /**< \brief (Usbhs Offset: 0x0404) Host Global Interrupt Status Register */ + __O uint32_t USBHS_HSTICR; /**< \brief (Usbhs Offset: 0x0408) Host Global Interrupt Clear Register */ + __O uint32_t USBHS_HSTIFR; /**< \brief (Usbhs Offset: 0x040C) Host Global Interrupt Set Register */ + __I uint32_t USBHS_HSTIMR; /**< \brief (Usbhs Offset: 0x0410) Host Global Interrupt Mask Register */ + __O uint32_t USBHS_HSTIDR; /**< \brief (Usbhs Offset: 0x0414) Host Global Interrupt Disable Register */ + __O uint32_t USBHS_HSTIER; /**< \brief (Usbhs Offset: 0x0418) Host Global Interrupt Enable Register */ + __IO uint32_t USBHS_HSTPIP; /**< \brief (Usbhs Offset: 0x0041C) Host Pipe Register */ + __IO uint32_t USBHS_HSTFNUM; /**< \brief (Usbhs Offset: 0x0420) Host Frame Number Register */ + __IO uint32_t USBHS_HSTADDR1; /**< \brief (Usbhs Offset: 0x0424) Host Address 1 Register */ + __IO uint32_t USBHS_HSTADDR2; /**< \brief (Usbhs Offset: 0x0428) Host Address 2 Register */ + __IO uint32_t USBHS_HSTADDR3; /**< \brief (Usbhs Offset: 0x042C) Host Address 3 Register */ + __I uint32_t Reserved10[52]; + __IO uint32_t USBHS_HSTPIPCFG[10]; /**< \brief (Usbhs Offset: 0x500) Host Pipe Configuration Register (n = 0) */ + __I uint32_t Reserved11[2]; + __I uint32_t USBHS_HSTPIPISR[10]; /**< \brief (Usbhs Offset: 0x530) Host Pipe Status Register (n = 0) */ + __I uint32_t Reserved12[2]; + __O uint32_t USBHS_HSTPIPICR[10]; /**< \brief (Usbhs Offset: 0x560) Host Pipe Clear Register (n = 0) */ + __I uint32_t Reserved13[2]; + __O uint32_t USBHS_HSTPIPIFR[10]; /**< \brief (Usbhs Offset: 0x590) Host Pipe Set Register (n = 0) */ + __I uint32_t Reserved14[2]; + __I uint32_t USBHS_HSTPIPIMR[10]; /**< \brief (Usbhs Offset: 0x5C0) Host Pipe Mask Register (n = 0) */ + __I uint32_t Reserved15[2]; + __O uint32_t USBHS_HSTPIPIER[10]; /**< \brief (Usbhs Offset: 0x5F0) Host Pipe Enable Register (n = 0) */ + __I uint32_t Reserved16[2]; + __O uint32_t USBHS_HSTPIPIDR[10]; /**< \brief (Usbhs Offset: 0x620) Host Pipe Disable Register (n = 0) */ + __I uint32_t Reserved17[2]; + __IO uint32_t USBHS_HSTPIPINRQ[10]; /**< \brief (Usbhs Offset: 0x650) Host Pipe IN Request Register (n = 0) */ + __I uint32_t Reserved18[2]; + __IO uint32_t USBHS_HSTPIPERR[10]; /**< \brief (Usbhs Offset: 0x680) Host Pipe Error Register (n = 0) */ + __I uint32_t Reserved19[26]; + UsbhsHstdma USBHS_HSTDMA[USBHSHSTDMA_NUMBER]; /**< \brief (Usbhs Offset: 0x710) n = 1 .. 7 */ + __I uint32_t Reserved20[32]; + __IO uint32_t USBHS_CTRL; /**< \brief (Usbhs Offset: 0x0800) General Control Register */ + __I uint32_t USBHS_SR; /**< \brief (Usbhs Offset: 0x0804) General Status Register */ + __O uint32_t USBHS_SCR; /**< \brief (Usbhs Offset: 0x0808) General Status Clear Register */ + __O uint32_t USBHS_SFR; /**< \brief (Usbhs Offset: 0x080C) General Status Set Register */ + __IO uint32_t USBHS_TSTA1; /**< \brief (Usbhs Offset: 0x0810) General Test A1 Register */ + __IO uint32_t USBHS_TSTA2; /**< \brief (Usbhs Offset: 0x0814) General Test A2 Register */ + __I uint32_t USBHS_VERSION; /**< \brief (Usbhs Offset: 0x0818) General Version Register */ + __I uint32_t Reserved21[4]; + __I uint32_t USBHS_FSM; /**< \brief (Usbhs Offset: 0x082C) General Finite State Machine Register */ +} Usbhs; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- USBHS_DEVCTRL : (USBHS Offset: 0x0000) Device General Control Register -------- */ +#define USBHS_DEVCTRL_UADD_Pos 0 +#define USBHS_DEVCTRL_UADD_Msk (0x7fu << USBHS_DEVCTRL_UADD_Pos) /**< \brief (USBHS_DEVCTRL) USB Address */ +#define USBHS_DEVCTRL_UADD(value) ((USBHS_DEVCTRL_UADD_Msk & ((value) << USBHS_DEVCTRL_UADD_Pos))) +#define USBHS_DEVCTRL_ADDEN (0x1u << 7) /**< \brief (USBHS_DEVCTRL) Address Enable */ +#define USBHS_DEVCTRL_DETACH (0x1u << 8) /**< \brief (USBHS_DEVCTRL) Detach */ +#define USBHS_DEVCTRL_RMWKUP (0x1u << 9) /**< \brief (USBHS_DEVCTRL) Remote Wake-Up */ +#define USBHS_DEVCTRL_SPDCONF_Pos 10 +#define USBHS_DEVCTRL_SPDCONF_Msk (0x3u << USBHS_DEVCTRL_SPDCONF_Pos) /**< \brief (USBHS_DEVCTRL) Mode Configuration */ +#define USBHS_DEVCTRL_SPDCONF(value) ((USBHS_DEVCTRL_SPDCONF_Msk & ((value) << USBHS_DEVCTRL_SPDCONF_Pos))) +#define USBHS_DEVCTRL_SPDCONF_NORMAL (0x0u << 10) /**< \brief (USBHS_DEVCTRL) The peripheral starts in Full-speed mode and performs a high-speed reset to switch to High-speed mode if the host is high-speed-capable. */ +#define USBHS_DEVCTRL_SPDCONF_LOW_POWER (0x1u << 10) /**< \brief (USBHS_DEVCTRL) For a better consumption, if high speed is not needed. */ +#define USBHS_DEVCTRL_SPDCONF_HIGH_SPEED (0x2u << 10) /**< \brief (USBHS_DEVCTRL) Forced high speed. */ +#define USBHS_DEVCTRL_SPDCONF_FORCED_FS (0x3u << 10) /**< \brief (USBHS_DEVCTRL) The peripheral remains in Full-speed mode whatever the host speed capability. */ +#define USBHS_DEVCTRL_LS (0x1u << 12) /**< \brief (USBHS_DEVCTRL) Low-Speed Mode Force */ +#define USBHS_DEVCTRL_TSTJ (0x1u << 13) /**< \brief (USBHS_DEVCTRL) Test mode J */ +#define USBHS_DEVCTRL_TSTK (0x1u << 14) /**< \brief (USBHS_DEVCTRL) Test mode K */ +#define USBHS_DEVCTRL_TSTPCKT (0x1u << 15) /**< \brief (USBHS_DEVCTRL) Test packet mode */ +#define USBHS_DEVCTRL_OPMODE2 (0x1u << 16) /**< \brief (USBHS_DEVCTRL) Specific Operational mode */ +/* -------- USBHS_DEVISR : (USBHS Offset: 0x0004) Device Global Interrupt Status Register -------- */ +#define USBHS_DEVISR_SUSP (0x1u << 0) /**< \brief (USBHS_DEVISR) Suspend Interrupt */ +#define USBHS_DEVISR_MSOF (0x1u << 1) /**< \brief (USBHS_DEVISR) Micro Start of Frame Interrupt */ +#define USBHS_DEVISR_SOF (0x1u << 2) /**< \brief (USBHS_DEVISR) Start of Frame Interrupt */ +#define USBHS_DEVISR_EORST (0x1u << 3) /**< \brief (USBHS_DEVISR) End of Reset Interrupt */ +#define USBHS_DEVISR_WAKEUP (0x1u << 4) /**< \brief (USBHS_DEVISR) Wake-Up Interrupt */ +#define USBHS_DEVISR_EORSM (0x1u << 5) /**< \brief (USBHS_DEVISR) End of Resume Interrupt */ +#define USBHS_DEVISR_UPRSM (0x1u << 6) /**< \brief (USBHS_DEVISR) Upstream Resume Interrupt */ +#define USBHS_DEVISR_PEP_0 (0x1u << 12) /**< \brief (USBHS_DEVISR) Endpoint 0 Interrupt */ +#define USBHS_DEVISR_PEP_1 (0x1u << 13) /**< \brief (USBHS_DEVISR) Endpoint 1 Interrupt */ +#define USBHS_DEVISR_PEP_2 (0x1u << 14) /**< \brief (USBHS_DEVISR) Endpoint 2 Interrupt */ +#define USBHS_DEVISR_PEP_3 (0x1u << 15) /**< \brief (USBHS_DEVISR) Endpoint 3 Interrupt */ +#define USBHS_DEVISR_PEP_4 (0x1u << 16) /**< \brief (USBHS_DEVISR) Endpoint 4 Interrupt */ +#define USBHS_DEVISR_PEP_5 (0x1u << 17) /**< \brief (USBHS_DEVISR) Endpoint 5 Interrupt */ +#define USBHS_DEVISR_PEP_6 (0x1u << 18) /**< \brief (USBHS_DEVISR) Endpoint 6 Interrupt */ +#define USBHS_DEVISR_PEP_7 (0x1u << 19) /**< \brief (USBHS_DEVISR) Endpoint 7 Interrupt */ +#define USBHS_DEVISR_PEP_8 (0x1u << 20) /**< \brief (USBHS_DEVISR) Endpoint 8 Interrupt */ +#define USBHS_DEVISR_PEP_9 (0x1u << 21) /**< \brief (USBHS_DEVISR) Endpoint 9 Interrupt */ +#define USBHS_DEVISR_DMA_1 (0x1u << 25) /**< \brief (USBHS_DEVISR) DMA Channel 1 Interrupt */ +#define USBHS_DEVISR_DMA_2 (0x1u << 26) /**< \brief (USBHS_DEVISR) DMA Channel 2 Interrupt */ +#define USBHS_DEVISR_DMA_3 (0x1u << 27) /**< \brief (USBHS_DEVISR) DMA Channel 3 Interrupt */ +#define USBHS_DEVISR_DMA_4 (0x1u << 28) /**< \brief (USBHS_DEVISR) DMA Channel 4 Interrupt */ +#define USBHS_DEVISR_DMA_5 (0x1u << 29) /**< \brief (USBHS_DEVISR) DMA Channel 5 Interrupt */ +#define USBHS_DEVISR_DMA_6 (0x1u << 30) /**< \brief (USBHS_DEVISR) DMA Channel 6 Interrupt */ +#define USBHS_DEVISR_DMA_7 (0x1u << 31) /**< \brief (USBHS_DEVISR) DMA Channel 7 Interrupt */ +/* -------- USBHS_DEVICR : (USBHS Offset: 0x0008) Device Global Interrupt Clear Register -------- */ +#define USBHS_DEVICR_SUSPC (0x1u << 0) /**< \brief (USBHS_DEVICR) Suspend Interrupt Clear */ +#define USBHS_DEVICR_MSOFC (0x1u << 1) /**< \brief (USBHS_DEVICR) Micro Start of Frame Interrupt Clear */ +#define USBHS_DEVICR_SOFC (0x1u << 2) /**< \brief (USBHS_DEVICR) Start of Frame Interrupt Clear */ +#define USBHS_DEVICR_EORSTC (0x1u << 3) /**< \brief (USBHS_DEVICR) End of Reset Interrupt Clear */ +#define USBHS_DEVICR_WAKEUPC (0x1u << 4) /**< \brief (USBHS_DEVICR) Wake-Up Interrupt Clear */ +#define USBHS_DEVICR_EORSMC (0x1u << 5) /**< \brief (USBHS_DEVICR) End of Resume Interrupt Clear */ +#define USBHS_DEVICR_UPRSMC (0x1u << 6) /**< \brief (USBHS_DEVICR) Upstream Resume Interrupt Clear */ +/* -------- USBHS_DEVIFR : (USBHS Offset: 0x000C) Device Global Interrupt Set Register -------- */ +#define USBHS_DEVIFR_SUSPS (0x1u << 0) /**< \brief (USBHS_DEVIFR) Suspend Interrupt Set */ +#define USBHS_DEVIFR_MSOFS (0x1u << 1) /**< \brief (USBHS_DEVIFR) Micro Start of Frame Interrupt Set */ +#define USBHS_DEVIFR_SOFS (0x1u << 2) /**< \brief (USBHS_DEVIFR) Start of Frame Interrupt Set */ +#define USBHS_DEVIFR_EORSTS (0x1u << 3) /**< \brief (USBHS_DEVIFR) End of Reset Interrupt Set */ +#define USBHS_DEVIFR_WAKEUPS (0x1u << 4) /**< \brief (USBHS_DEVIFR) Wake-Up Interrupt Set */ +#define USBHS_DEVIFR_EORSMS (0x1u << 5) /**< \brief (USBHS_DEVIFR) End of Resume Interrupt Set */ +#define USBHS_DEVIFR_UPRSMS (0x1u << 6) /**< \brief (USBHS_DEVIFR) Upstream Resume Interrupt Set */ +#define USBHS_DEVIFR_DMA_1 (0x1u << 25) /**< \brief (USBHS_DEVIFR) DMA Channel 1 Interrupt Set */ +#define USBHS_DEVIFR_DMA_2 (0x1u << 26) /**< \brief (USBHS_DEVIFR) DMA Channel 2 Interrupt Set */ +#define USBHS_DEVIFR_DMA_3 (0x1u << 27) /**< \brief (USBHS_DEVIFR) DMA Channel 3 Interrupt Set */ +#define USBHS_DEVIFR_DMA_4 (0x1u << 28) /**< \brief (USBHS_DEVIFR) DMA Channel 4 Interrupt Set */ +#define USBHS_DEVIFR_DMA_5 (0x1u << 29) /**< \brief (USBHS_DEVIFR) DMA Channel 5 Interrupt Set */ +#define USBHS_DEVIFR_DMA_6 (0x1u << 30) /**< \brief (USBHS_DEVIFR) DMA Channel 6 Interrupt Set */ +#define USBHS_DEVIFR_DMA_7 (0x1u << 31) /**< \brief (USBHS_DEVIFR) DMA Channel 7 Interrupt Set */ +/* -------- USBHS_DEVIMR : (USBHS Offset: 0x0010) Device Global Interrupt Mask Register -------- */ +#define USBHS_DEVIMR_SUSPE (0x1u << 0) /**< \brief (USBHS_DEVIMR) Suspend Interrupt Mask */ +#define USBHS_DEVIMR_MSOFE (0x1u << 1) /**< \brief (USBHS_DEVIMR) Micro Start of Frame Interrupt Mask */ +#define USBHS_DEVIMR_SOFE (0x1u << 2) /**< \brief (USBHS_DEVIMR) Start of Frame Interrupt Mask */ +#define USBHS_DEVIMR_EORSTE (0x1u << 3) /**< \brief (USBHS_DEVIMR) End of Reset Interrupt Mask */ +#define USBHS_DEVIMR_WAKEUPE (0x1u << 4) /**< \brief (USBHS_DEVIMR) Wake-Up Interrupt Mask */ +#define USBHS_DEVIMR_EORSME (0x1u << 5) /**< \brief (USBHS_DEVIMR) End of Resume Interrupt Mask */ +#define USBHS_DEVIMR_UPRSME (0x1u << 6) /**< \brief (USBHS_DEVIMR) Upstream Resume Interrupt Mask */ +#define USBHS_DEVIMR_PEP_0 (0x1u << 12) /**< \brief (USBHS_DEVIMR) Endpoint 0 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_1 (0x1u << 13) /**< \brief (USBHS_DEVIMR) Endpoint 1 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_2 (0x1u << 14) /**< \brief (USBHS_DEVIMR) Endpoint 2 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_3 (0x1u << 15) /**< \brief (USBHS_DEVIMR) Endpoint 3 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_4 (0x1u << 16) /**< \brief (USBHS_DEVIMR) Endpoint 4 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_5 (0x1u << 17) /**< \brief (USBHS_DEVIMR) Endpoint 5 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_6 (0x1u << 18) /**< \brief (USBHS_DEVIMR) Endpoint 6 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_7 (0x1u << 19) /**< \brief (USBHS_DEVIMR) Endpoint 7 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_8 (0x1u << 20) /**< \brief (USBHS_DEVIMR) Endpoint 8 Interrupt Mask */ +#define USBHS_DEVIMR_PEP_9 (0x1u << 21) /**< \brief (USBHS_DEVIMR) Endpoint 9 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_1 (0x1u << 25) /**< \brief (USBHS_DEVIMR) DMA Channel 1 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_2 (0x1u << 26) /**< \brief (USBHS_DEVIMR) DMA Channel 2 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_3 (0x1u << 27) /**< \brief (USBHS_DEVIMR) DMA Channel 3 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_4 (0x1u << 28) /**< \brief (USBHS_DEVIMR) DMA Channel 4 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_5 (0x1u << 29) /**< \brief (USBHS_DEVIMR) DMA Channel 5 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_6 (0x1u << 30) /**< \brief (USBHS_DEVIMR) DMA Channel 6 Interrupt Mask */ +#define USBHS_DEVIMR_DMA_7 (0x1u << 31) /**< \brief (USBHS_DEVIMR) DMA Channel 7 Interrupt Mask */ +/* -------- USBHS_DEVIDR : (USBHS Offset: 0x0014) Device Global Interrupt Disable Register -------- */ +#define USBHS_DEVIDR_SUSPEC (0x1u << 0) /**< \brief (USBHS_DEVIDR) Suspend Interrupt Disable */ +#define USBHS_DEVIDR_MSOFEC (0x1u << 1) /**< \brief (USBHS_DEVIDR) Micro Start of Frame Interrupt Disable */ +#define USBHS_DEVIDR_SOFEC (0x1u << 2) /**< \brief (USBHS_DEVIDR) Start of Frame Interrupt Disable */ +#define USBHS_DEVIDR_EORSTEC (0x1u << 3) /**< \brief (USBHS_DEVIDR) End of Reset Interrupt Disable */ +#define USBHS_DEVIDR_WAKEUPEC (0x1u << 4) /**< \brief (USBHS_DEVIDR) Wake-Up Interrupt Disable */ +#define USBHS_DEVIDR_EORSMEC (0x1u << 5) /**< \brief (USBHS_DEVIDR) End of Resume Interrupt Disable */ +#define USBHS_DEVIDR_UPRSMEC (0x1u << 6) /**< \brief (USBHS_DEVIDR) Upstream Resume Interrupt Disable */ +#define USBHS_DEVIDR_PEP_0 (0x1u << 12) /**< \brief (USBHS_DEVIDR) Endpoint 0 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_1 (0x1u << 13) /**< \brief (USBHS_DEVIDR) Endpoint 1 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_2 (0x1u << 14) /**< \brief (USBHS_DEVIDR) Endpoint 2 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_3 (0x1u << 15) /**< \brief (USBHS_DEVIDR) Endpoint 3 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_4 (0x1u << 16) /**< \brief (USBHS_DEVIDR) Endpoint 4 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_5 (0x1u << 17) /**< \brief (USBHS_DEVIDR) Endpoint 5 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_6 (0x1u << 18) /**< \brief (USBHS_DEVIDR) Endpoint 6 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_7 (0x1u << 19) /**< \brief (USBHS_DEVIDR) Endpoint 7 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_8 (0x1u << 20) /**< \brief (USBHS_DEVIDR) Endpoint 8 Interrupt Disable */ +#define USBHS_DEVIDR_PEP_9 (0x1u << 21) /**< \brief (USBHS_DEVIDR) Endpoint 9 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_1 (0x1u << 25) /**< \brief (USBHS_DEVIDR) DMA Channel 1 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_2 (0x1u << 26) /**< \brief (USBHS_DEVIDR) DMA Channel 2 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_3 (0x1u << 27) /**< \brief (USBHS_DEVIDR) DMA Channel 3 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_4 (0x1u << 28) /**< \brief (USBHS_DEVIDR) DMA Channel 4 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_5 (0x1u << 29) /**< \brief (USBHS_DEVIDR) DMA Channel 5 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_6 (0x1u << 30) /**< \brief (USBHS_DEVIDR) DMA Channel 6 Interrupt Disable */ +#define USBHS_DEVIDR_DMA_7 (0x1u << 31) /**< \brief (USBHS_DEVIDR) DMA Channel 7 Interrupt Disable */ +/* -------- USBHS_DEVIER : (USBHS Offset: 0x0018) Device Global Interrupt Enable Register -------- */ +#define USBHS_DEVIER_SUSPES (0x1u << 0) /**< \brief (USBHS_DEVIER) Suspend Interrupt Enable */ +#define USBHS_DEVIER_MSOFES (0x1u << 1) /**< \brief (USBHS_DEVIER) Micro Start of Frame Interrupt Enable */ +#define USBHS_DEVIER_SOFES (0x1u << 2) /**< \brief (USBHS_DEVIER) Start of Frame Interrupt Enable */ +#define USBHS_DEVIER_EORSTES (0x1u << 3) /**< \brief (USBHS_DEVIER) End of Reset Interrupt Enable */ +#define USBHS_DEVIER_WAKEUPES (0x1u << 4) /**< \brief (USBHS_DEVIER) Wake-Up Interrupt Enable */ +#define USBHS_DEVIER_EORSMES (0x1u << 5) /**< \brief (USBHS_DEVIER) End of Resume Interrupt Enable */ +#define USBHS_DEVIER_UPRSMES (0x1u << 6) /**< \brief (USBHS_DEVIER) Upstream Resume Interrupt Enable */ +#define USBHS_DEVIER_PEP_0 (0x1u << 12) /**< \brief (USBHS_DEVIER) Endpoint 0 Interrupt Enable */ +#define USBHS_DEVIER_PEP_1 (0x1u << 13) /**< \brief (USBHS_DEVIER) Endpoint 1 Interrupt Enable */ +#define USBHS_DEVIER_PEP_2 (0x1u << 14) /**< \brief (USBHS_DEVIER) Endpoint 2 Interrupt Enable */ +#define USBHS_DEVIER_PEP_3 (0x1u << 15) /**< \brief (USBHS_DEVIER) Endpoint 3 Interrupt Enable */ +#define USBHS_DEVIER_PEP_4 (0x1u << 16) /**< \brief (USBHS_DEVIER) Endpoint 4 Interrupt Enable */ +#define USBHS_DEVIER_PEP_5 (0x1u << 17) /**< \brief (USBHS_DEVIER) Endpoint 5 Interrupt Enable */ +#define USBHS_DEVIER_PEP_6 (0x1u << 18) /**< \brief (USBHS_DEVIER) Endpoint 6 Interrupt Enable */ +#define USBHS_DEVIER_PEP_7 (0x1u << 19) /**< \brief (USBHS_DEVIER) Endpoint 7 Interrupt Enable */ +#define USBHS_DEVIER_PEP_8 (0x1u << 20) /**< \brief (USBHS_DEVIER) Endpoint 8 Interrupt Enable */ +#define USBHS_DEVIER_PEP_9 (0x1u << 21) /**< \brief (USBHS_DEVIER) Endpoint 9 Interrupt Enable */ +#define USBHS_DEVIER_DMA_1 (0x1u << 25) /**< \brief (USBHS_DEVIER) DMA Channel 1 Interrupt Enable */ +#define USBHS_DEVIER_DMA_2 (0x1u << 26) /**< \brief (USBHS_DEVIER) DMA Channel 2 Interrupt Enable */ +#define USBHS_DEVIER_DMA_3 (0x1u << 27) /**< \brief (USBHS_DEVIER) DMA Channel 3 Interrupt Enable */ +#define USBHS_DEVIER_DMA_4 (0x1u << 28) /**< \brief (USBHS_DEVIER) DMA Channel 4 Interrupt Enable */ +#define USBHS_DEVIER_DMA_5 (0x1u << 29) /**< \brief (USBHS_DEVIER) DMA Channel 5 Interrupt Enable */ +#define USBHS_DEVIER_DMA_6 (0x1u << 30) /**< \brief (USBHS_DEVIER) DMA Channel 6 Interrupt Enable */ +#define USBHS_DEVIER_DMA_7 (0x1u << 31) /**< \brief (USBHS_DEVIER) DMA Channel 7 Interrupt Enable */ +/* -------- USBHS_DEVEPT : (USBHS Offset: 0x001C) Device Endpoint Register -------- */ +#define USBHS_DEVEPT_EPEN0 (0x1u << 0) /**< \brief (USBHS_DEVEPT) Endpoint 0 Enable */ +#define USBHS_DEVEPT_EPEN1 (0x1u << 1) /**< \brief (USBHS_DEVEPT) Endpoint 1 Enable */ +#define USBHS_DEVEPT_EPEN2 (0x1u << 2) /**< \brief (USBHS_DEVEPT) Endpoint 2 Enable */ +#define USBHS_DEVEPT_EPEN3 (0x1u << 3) /**< \brief (USBHS_DEVEPT) Endpoint 3 Enable */ +#define USBHS_DEVEPT_EPEN4 (0x1u << 4) /**< \brief (USBHS_DEVEPT) Endpoint 4 Enable */ +#define USBHS_DEVEPT_EPEN5 (0x1u << 5) /**< \brief (USBHS_DEVEPT) Endpoint 5 Enable */ +#define USBHS_DEVEPT_EPEN6 (0x1u << 6) /**< \brief (USBHS_DEVEPT) Endpoint 6 Enable */ +#define USBHS_DEVEPT_EPEN7 (0x1u << 7) /**< \brief (USBHS_DEVEPT) Endpoint 7 Enable */ +#define USBHS_DEVEPT_EPEN8 (0x1u << 8) /**< \brief (USBHS_DEVEPT) Endpoint 8 Enable */ +#define USBHS_DEVEPT_EPEN9 (0x1u << 9) /**< \brief (USBHS_DEVEPT) Endpoint 9 Enable */ +#define USBHS_DEVEPT_EPRST0 (0x1u << 16) /**< \brief (USBHS_DEVEPT) Endpoint 0 Reset */ +#define USBHS_DEVEPT_EPRST1 (0x1u << 17) /**< \brief (USBHS_DEVEPT) Endpoint 1 Reset */ +#define USBHS_DEVEPT_EPRST2 (0x1u << 18) /**< \brief (USBHS_DEVEPT) Endpoint 2 Reset */ +#define USBHS_DEVEPT_EPRST3 (0x1u << 19) /**< \brief (USBHS_DEVEPT) Endpoint 3 Reset */ +#define USBHS_DEVEPT_EPRST4 (0x1u << 20) /**< \brief (USBHS_DEVEPT) Endpoint 4 Reset */ +#define USBHS_DEVEPT_EPRST5 (0x1u << 21) /**< \brief (USBHS_DEVEPT) Endpoint 5 Reset */ +#define USBHS_DEVEPT_EPRST6 (0x1u << 22) /**< \brief (USBHS_DEVEPT) Endpoint 6 Reset */ +#define USBHS_DEVEPT_EPRST7 (0x1u << 23) /**< \brief (USBHS_DEVEPT) Endpoint 7 Reset */ +#define USBHS_DEVEPT_EPRST8 (0x1u << 24) /**< \brief (USBHS_DEVEPT) Endpoint 8 Reset */ +#define USBHS_DEVEPT_EPRST9 (0x1u << 25) /**< \brief (USBHS_DEVEPT) Endpoint 9 Reset */ +/* -------- USBHS_DEVFNUM : (USBHS Offset: 0x0020) Device Frame Number Register -------- */ +#define USBHS_DEVFNUM_MFNUM_Pos 0 +#define USBHS_DEVFNUM_MFNUM_Msk (0x7u << USBHS_DEVFNUM_MFNUM_Pos) /**< \brief (USBHS_DEVFNUM) Micro Frame Number */ +#define USBHS_DEVFNUM_FNUM_Pos 3 +#define USBHS_DEVFNUM_FNUM_Msk (0x7ffu << USBHS_DEVFNUM_FNUM_Pos) /**< \brief (USBHS_DEVFNUM) Frame Number */ +#define USBHS_DEVFNUM_FNCERR (0x1u << 15) /**< \brief (USBHS_DEVFNUM) Frame Number CRC Error */ +/* -------- USBHS_DEVEPTCFG[10] : (USBHS Offset: 0x100) Device Endpoint Configuration Register (n = 0) -------- */ +#define USBHS_DEVEPTCFG_ALLOC (0x1u << 1) /**< \brief (USBHS_DEVEPTCFG[10]) Endpoint Memory Allocate */ +#define USBHS_DEVEPTCFG_EPBK_Pos 2 +#define USBHS_DEVEPTCFG_EPBK_Msk (0x3u << USBHS_DEVEPTCFG_EPBK_Pos) /**< \brief (USBHS_DEVEPTCFG[10]) Endpoint Banks */ +#define USBHS_DEVEPTCFG_EPBK(value) ((USBHS_DEVEPTCFG_EPBK_Msk & ((value) << USBHS_DEVEPTCFG_EPBK_Pos))) +#define USBHS_DEVEPTCFG_EPBK_1_BANK (0x0u << 2) /**< \brief (USBHS_DEVEPTCFG[10]) Single-bank endpoint */ +#define USBHS_DEVEPTCFG_EPBK_2_BANK (0x1u << 2) /**< \brief (USBHS_DEVEPTCFG[10]) Double-bank endpoint */ +#define USBHS_DEVEPTCFG_EPBK_3_BANK (0x2u << 2) /**< \brief (USBHS_DEVEPTCFG[10]) Triple-bank endpoint */ +#define USBHS_DEVEPTCFG_EPSIZE_Pos 4 +#define USBHS_DEVEPTCFG_EPSIZE_Msk (0x7u << USBHS_DEVEPTCFG_EPSIZE_Pos) /**< \brief (USBHS_DEVEPTCFG[10]) Endpoint Size */ +#define USBHS_DEVEPTCFG_EPSIZE(value) ((USBHS_DEVEPTCFG_EPSIZE_Msk & ((value) << USBHS_DEVEPTCFG_EPSIZE_Pos))) +#define USBHS_DEVEPTCFG_EPSIZE_8_BYTE (0x0u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 8 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_16_BYTE (0x1u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 16 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_32_BYTE (0x2u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 32 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_64_BYTE (0x3u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 64 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_128_BYTE (0x4u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 128 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_256_BYTE (0x5u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 256 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_512_BYTE (0x6u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 512 bytes */ +#define USBHS_DEVEPTCFG_EPSIZE_1024_BYTE (0x7u << 4) /**< \brief (USBHS_DEVEPTCFG[10]) 1024 bytes */ +#define USBHS_DEVEPTCFG_EPDIR (0x1u << 8) /**< \brief (USBHS_DEVEPTCFG[10]) Endpoint Direction */ +#define USBHS_DEVEPTCFG_EPDIR_OUT (0x0u << 8) /**< \brief (USBHS_DEVEPTCFG[10]) The endpoint direction is OUT. */ +#define USBHS_DEVEPTCFG_EPDIR_IN (0x1u << 8) /**< \brief (USBHS_DEVEPTCFG[10]) The endpoint direction is IN (nor for control endpoints). */ +#define USBHS_DEVEPTCFG_AUTOSW (0x1u << 9) /**< \brief (USBHS_DEVEPTCFG[10]) Automatic Switch */ +#define USBHS_DEVEPTCFG_EPTYPE_Pos 11 +#define USBHS_DEVEPTCFG_EPTYPE_Msk (0x3u << USBHS_DEVEPTCFG_EPTYPE_Pos) /**< \brief (USBHS_DEVEPTCFG[10]) Endpoint Type */ +#define USBHS_DEVEPTCFG_EPTYPE(value) ((USBHS_DEVEPTCFG_EPTYPE_Msk & ((value) << USBHS_DEVEPTCFG_EPTYPE_Pos))) +#define USBHS_DEVEPTCFG_EPTYPE_CTRL (0x0u << 11) /**< \brief (USBHS_DEVEPTCFG[10]) Control */ +#define USBHS_DEVEPTCFG_EPTYPE_ISO (0x1u << 11) /**< \brief (USBHS_DEVEPTCFG[10]) Isochronous */ +#define USBHS_DEVEPTCFG_EPTYPE_BLK (0x2u << 11) /**< \brief (USBHS_DEVEPTCFG[10]) Bulk */ +#define USBHS_DEVEPTCFG_EPTYPE_INTRPT (0x3u << 11) /**< \brief (USBHS_DEVEPTCFG[10]) Interrupt */ +#define USBHS_DEVEPTCFG_NBTRANS_Pos 13 +#define USBHS_DEVEPTCFG_NBTRANS_Msk (0x3u << USBHS_DEVEPTCFG_NBTRANS_Pos) /**< \brief (USBHS_DEVEPTCFG[10]) Number of transactions per microframe for isochronous endpoint */ +#define USBHS_DEVEPTCFG_NBTRANS(value) ((USBHS_DEVEPTCFG_NBTRANS_Msk & ((value) << USBHS_DEVEPTCFG_NBTRANS_Pos))) +#define USBHS_DEVEPTCFG_NBTRANS_0_TRANS (0x0u << 13) /**< \brief (USBHS_DEVEPTCFG[10]) Reserved to endpoint that does not have the high-bandwidth isochronous capability. */ +#define USBHS_DEVEPTCFG_NBTRANS_1_TRANS (0x1u << 13) /**< \brief (USBHS_DEVEPTCFG[10]) Default value: one transaction per microframe. */ +#define USBHS_DEVEPTCFG_NBTRANS_2_TRANS (0x2u << 13) /**< \brief (USBHS_DEVEPTCFG[10]) Two transactions per microframe. This endpoint should be configured as double-bank. */ +#define USBHS_DEVEPTCFG_NBTRANS_3_TRANS (0x3u << 13) /**< \brief (USBHS_DEVEPTCFG[10]) Three transactions per microframe. This endpoint should be configured as triple-bank. */ +/* -------- USBHS_DEVEPTISR[10] : (USBHS Offset: 0x130) Device Endpoint Status Register (n = 0) -------- */ +#define USBHS_DEVEPTISR_TXINI (0x1u << 0) /**< \brief (USBHS_DEVEPTISR[10]) Transmitted IN Data Interrupt */ +#define USBHS_DEVEPTISR_RXOUTI (0x1u << 1) /**< \brief (USBHS_DEVEPTISR[10]) Received OUT Data Interrupt */ +#define USBHS_DEVEPTISR_RXSTPI (0x1u << 2) /**< \brief (USBHS_DEVEPTISR[10]) Received SETUP Interrupt */ +#define USBHS_DEVEPTISR_NAKOUTI (0x1u << 3) /**< \brief (USBHS_DEVEPTISR[10]) NAKed OUT Interrupt */ +#define USBHS_DEVEPTISR_NAKINI (0x1u << 4) /**< \brief (USBHS_DEVEPTISR[10]) NAKed IN Interrupt */ +#define USBHS_DEVEPTISR_OVERFI (0x1u << 5) /**< \brief (USBHS_DEVEPTISR[10]) Overflow Interrupt */ +#define USBHS_DEVEPTISR_STALLEDI (0x1u << 6) /**< \brief (USBHS_DEVEPTISR[10]) STALLed Interrupt */ +#define USBHS_DEVEPTISR_SHORTPACKET (0x1u << 7) /**< \brief (USBHS_DEVEPTISR[10]) Short Packet Interrupt */ +#define USBHS_DEVEPTISR_DTSEQ_Pos 8 +#define USBHS_DEVEPTISR_DTSEQ_Msk (0x3u << USBHS_DEVEPTISR_DTSEQ_Pos) /**< \brief (USBHS_DEVEPTISR[10]) Data Toggle Sequence */ +#define USBHS_DEVEPTISR_DTSEQ_DATA0 (0x0u << 8) /**< \brief (USBHS_DEVEPTISR[10]) Data0 toggle sequence */ +#define USBHS_DEVEPTISR_DTSEQ_DATA1 (0x1u << 8) /**< \brief (USBHS_DEVEPTISR[10]) Data1 toggle sequence */ +#define USBHS_DEVEPTISR_DTSEQ_DATA2 (0x2u << 8) /**< \brief (USBHS_DEVEPTISR[10]) Reserved for high-bandwidth isochronous endpoint */ +#define USBHS_DEVEPTISR_DTSEQ_MDATA (0x3u << 8) /**< \brief (USBHS_DEVEPTISR[10]) Reserved for high-bandwidth isochronous endpoint */ +#define USBHS_DEVEPTISR_NBUSYBK_Pos 12 +#define USBHS_DEVEPTISR_NBUSYBK_Msk (0x3u << USBHS_DEVEPTISR_NBUSYBK_Pos) /**< \brief (USBHS_DEVEPTISR[10]) Number of Busy Banks */ +#define USBHS_DEVEPTISR_NBUSYBK_0_BUSY (0x0u << 12) /**< \brief (USBHS_DEVEPTISR[10]) 0 busy bank (all banks free) */ +#define USBHS_DEVEPTISR_NBUSYBK_1_BUSY (0x1u << 12) /**< \brief (USBHS_DEVEPTISR[10]) 1 busy bank */ +#define USBHS_DEVEPTISR_NBUSYBK_2_BUSY (0x2u << 12) /**< \brief (USBHS_DEVEPTISR[10]) 2 busy banks */ +#define USBHS_DEVEPTISR_NBUSYBK_3_BUSY (0x3u << 12) /**< \brief (USBHS_DEVEPTISR[10]) 3 busy banks */ +#define USBHS_DEVEPTISR_CURRBK_Pos 14 +#define USBHS_DEVEPTISR_CURRBK_Msk (0x3u << USBHS_DEVEPTISR_CURRBK_Pos) /**< \brief (USBHS_DEVEPTISR[10]) Current Bank */ +#define USBHS_DEVEPTISR_CURRBK_BANK0 (0x0u << 14) /**< \brief (USBHS_DEVEPTISR[10]) Current bank is bank0 */ +#define USBHS_DEVEPTISR_CURRBK_BANK1 (0x1u << 14) /**< \brief (USBHS_DEVEPTISR[10]) Current bank is bank1 */ +#define USBHS_DEVEPTISR_CURRBK_BANK2 (0x2u << 14) /**< \brief (USBHS_DEVEPTISR[10]) Current bank is bank2 */ +#define USBHS_DEVEPTISR_RWALL (0x1u << 16) /**< \brief (USBHS_DEVEPTISR[10]) Read/Write Allowed */ +#define USBHS_DEVEPTISR_CTRLDIR (0x1u << 17) /**< \brief (USBHS_DEVEPTISR[10]) Control Direction */ +#define USBHS_DEVEPTISR_CFGOK (0x1u << 18) /**< \brief (USBHS_DEVEPTISR[10]) Configuration OK Status */ +#define USBHS_DEVEPTISR_BYCT_Pos 20 +#define USBHS_DEVEPTISR_BYCT_Msk (0x7ffu << USBHS_DEVEPTISR_BYCT_Pos) /**< \brief (USBHS_DEVEPTISR[10]) Byte Count */ +#define USBHS_DEVEPTISR_UNDERFI (0x1u << 2) /**< \brief (USBHS_DEVEPTISR[10]) Underflow Interrupt */ +#define USBHS_DEVEPTISR_HBISOINERRI (0x1u << 3) /**< \brief (USBHS_DEVEPTISR[10]) High Bandwidth Isochronous IN Underflow Error Interrupt */ +#define USBHS_DEVEPTISR_HBISOFLUSHI (0x1u << 4) /**< \brief (USBHS_DEVEPTISR[10]) High Bandwidth Isochronous IN Flush Interrupt */ +#define USBHS_DEVEPTISR_CRCERRI (0x1u << 6) /**< \brief (USBHS_DEVEPTISR[10]) CRC Error Interrupt */ +#define USBHS_DEVEPTISR_ERRORTRANS (0x1u << 10) /**< \brief (USBHS_DEVEPTISR[10]) High-bandwidth Isochronous OUT Endpoint Transaction Error Interrupt */ +/* -------- USBHS_DEVEPTICR[10] : (USBHS Offset: 0x160) Device Endpoint Clear Register (n = 0) -------- */ +#define USBHS_DEVEPTICR_TXINIC (0x1u << 0) /**< \brief (USBHS_DEVEPTICR[10]) Transmitted IN Data Interrupt Clear */ +#define USBHS_DEVEPTICR_RXOUTIC (0x1u << 1) /**< \brief (USBHS_DEVEPTICR[10]) Received OUT Data Interrupt Clear */ +#define USBHS_DEVEPTICR_RXSTPIC (0x1u << 2) /**< \brief (USBHS_DEVEPTICR[10]) Received SETUP Interrupt Clear */ +#define USBHS_DEVEPTICR_NAKOUTIC (0x1u << 3) /**< \brief (USBHS_DEVEPTICR[10]) NAKed OUT Interrupt Clear */ +#define USBHS_DEVEPTICR_NAKINIC (0x1u << 4) /**< \brief (USBHS_DEVEPTICR[10]) NAKed IN Interrupt Clear */ +#define USBHS_DEVEPTICR_OVERFIC (0x1u << 5) /**< \brief (USBHS_DEVEPTICR[10]) Overflow Interrupt Clear */ +#define USBHS_DEVEPTICR_STALLEDIC (0x1u << 6) /**< \brief (USBHS_DEVEPTICR[10]) STALLed Interrupt Clear */ +#define USBHS_DEVEPTICR_SHORTPACKETC (0x1u << 7) /**< \brief (USBHS_DEVEPTICR[10]) Short Packet Interrupt Clear */ +#define USBHS_DEVEPTICR_UNDERFIC (0x1u << 2) /**< \brief (USBHS_DEVEPTICR[10]) Underflow Interrupt Clear */ +#define USBHS_DEVEPTICR_HBISOINERRIC (0x1u << 3) /**< \brief (USBHS_DEVEPTICR[10]) High Bandwidth Isochronous IN Underflow Error Interrupt Clear */ +#define USBHS_DEVEPTICR_HBISOFLUSHIC (0x1u << 4) /**< \brief (USBHS_DEVEPTICR[10]) High Bandwidth Isochronous IN Flush Interrupt Clear */ +#define USBHS_DEVEPTICR_CRCERRIC (0x1u << 6) /**< \brief (USBHS_DEVEPTICR[10]) CRC Error Interrupt Clear */ +/* -------- USBHS_DEVEPTIFR[10] : (USBHS Offset: 0x190) Device Endpoint Set Register (n = 0) -------- */ +#define USBHS_DEVEPTIFR_TXINIS (0x1u << 0) /**< \brief (USBHS_DEVEPTIFR[10]) Transmitted IN Data Interrupt Set */ +#define USBHS_DEVEPTIFR_RXOUTIS (0x1u << 1) /**< \brief (USBHS_DEVEPTIFR[10]) Received OUT Data Interrupt Set */ +#define USBHS_DEVEPTIFR_RXSTPIS (0x1u << 2) /**< \brief (USBHS_DEVEPTIFR[10]) Received SETUP Interrupt Set */ +#define USBHS_DEVEPTIFR_NAKOUTIS (0x1u << 3) /**< \brief (USBHS_DEVEPTIFR[10]) NAKed OUT Interrupt Set */ +#define USBHS_DEVEPTIFR_NAKINIS (0x1u << 4) /**< \brief (USBHS_DEVEPTIFR[10]) NAKed IN Interrupt Set */ +#define USBHS_DEVEPTIFR_OVERFIS (0x1u << 5) /**< \brief (USBHS_DEVEPTIFR[10]) Overflow Interrupt Set */ +#define USBHS_DEVEPTIFR_STALLEDIS (0x1u << 6) /**< \brief (USBHS_DEVEPTIFR[10]) STALLed Interrupt Set */ +#define USBHS_DEVEPTIFR_SHORTPACKETS (0x1u << 7) /**< \brief (USBHS_DEVEPTIFR[10]) Short Packet Interrupt Set */ +#define USBHS_DEVEPTIFR_NBUSYBKS (0x1u << 12) /**< \brief (USBHS_DEVEPTIFR[10]) Number of Busy Banks Interrupt Set */ +#define USBHS_DEVEPTIFR_UNDERFIS (0x1u << 2) /**< \brief (USBHS_DEVEPTIFR[10]) Underflow Interrupt Set */ +#define USBHS_DEVEPTIFR_HBISOINERRIS (0x1u << 3) /**< \brief (USBHS_DEVEPTIFR[10]) High Bandwidth Isochronous IN Underflow Error Interrupt Set */ +#define USBHS_DEVEPTIFR_HBISOFLUSHIS (0x1u << 4) /**< \brief (USBHS_DEVEPTIFR[10]) High Bandwidth Isochronous IN Flush Interrupt Set */ +#define USBHS_DEVEPTIFR_CRCERRIS (0x1u << 6) /**< \brief (USBHS_DEVEPTIFR[10]) CRC Error Interrupt Set */ +/* -------- USBHS_DEVEPTIMR[10] : (USBHS Offset: 0x1C0) Device Endpoint Mask Register (n = 0) -------- */ +#define USBHS_DEVEPTIMR_TXINE (0x1u << 0) /**< \brief (USBHS_DEVEPTIMR[10]) Transmitted IN Data Interrupt */ +#define USBHS_DEVEPTIMR_RXOUTE (0x1u << 1) /**< \brief (USBHS_DEVEPTIMR[10]) Received OUT Data Interrupt */ +#define USBHS_DEVEPTIMR_RXSTPE (0x1u << 2) /**< \brief (USBHS_DEVEPTIMR[10]) Received SETUP Interrupt */ +#define USBHS_DEVEPTIMR_NAKOUTE (0x1u << 3) /**< \brief (USBHS_DEVEPTIMR[10]) NAKed OUT Interrupt */ +#define USBHS_DEVEPTIMR_NAKINE (0x1u << 4) /**< \brief (USBHS_DEVEPTIMR[10]) NAKed IN Interrupt */ +#define USBHS_DEVEPTIMR_OVERFE (0x1u << 5) /**< \brief (USBHS_DEVEPTIMR[10]) Overflow Interrupt */ +#define USBHS_DEVEPTIMR_STALLEDE (0x1u << 6) /**< \brief (USBHS_DEVEPTIMR[10]) STALLed Interrupt */ +#define USBHS_DEVEPTIMR_SHORTPACKETE (0x1u << 7) /**< \brief (USBHS_DEVEPTIMR[10]) Short Packet Interrupt */ +#define USBHS_DEVEPTIMR_NBUSYBKE (0x1u << 12) /**< \brief (USBHS_DEVEPTIMR[10]) Number of Busy Banks Interrupt */ +#define USBHS_DEVEPTIMR_KILLBK (0x1u << 13) /**< \brief (USBHS_DEVEPTIMR[10]) Kill IN Bank */ +#define USBHS_DEVEPTIMR_FIFOCON (0x1u << 14) /**< \brief (USBHS_DEVEPTIMR[10]) FIFO Control */ +#define USBHS_DEVEPTIMR_EPDISHDMA (0x1u << 16) /**< \brief (USBHS_DEVEPTIMR[10]) Endpoint Interrupts Disable HDMA Request */ +#define USBHS_DEVEPTIMR_NYETDIS (0x1u << 17) /**< \brief (USBHS_DEVEPTIMR[10]) NYET Token Disable */ +#define USBHS_DEVEPTIMR_RSTDT (0x1u << 18) /**< \brief (USBHS_DEVEPTIMR[10]) Reset Data Toggle */ +#define USBHS_DEVEPTIMR_STALLRQ (0x1u << 19) /**< \brief (USBHS_DEVEPTIMR[10]) STALL Request */ +#define USBHS_DEVEPTIMR_UNDERFE (0x1u << 2) /**< \brief (USBHS_DEVEPTIMR[10]) Underflow Interrupt */ +#define USBHS_DEVEPTIMR_HBISOINERRE (0x1u << 3) /**< \brief (USBHS_DEVEPTIMR[10]) High Bandwidth Isochronous IN Error Interrupt */ +#define USBHS_DEVEPTIMR_HBISOFLUSHE (0x1u << 4) /**< \brief (USBHS_DEVEPTIMR[10]) High Bandwidth Isochronous IN Flush Interrupt */ +#define USBHS_DEVEPTIMR_CRCERRE (0x1u << 6) /**< \brief (USBHS_DEVEPTIMR[10]) CRC Error Interrupt */ +#define USBHS_DEVEPTIMR_MDATAE (0x1u << 8) /**< \brief (USBHS_DEVEPTIMR[10]) MData Interrupt */ +#define USBHS_DEVEPTIMR_DATAXE (0x1u << 9) /**< \brief (USBHS_DEVEPTIMR[10]) DataX Interrupt */ +#define USBHS_DEVEPTIMR_ERRORTRANSE (0x1u << 10) /**< \brief (USBHS_DEVEPTIMR[10]) Transaction Error Interrupt */ +/* -------- USBHS_DEVEPTIER[10] : (USBHS Offset: 0x1F0) Device Endpoint Enable Register (n = 0) -------- */ +#define USBHS_DEVEPTIER_TXINES (0x1u << 0) /**< \brief (USBHS_DEVEPTIER[10]) Transmitted IN Data Interrupt Enable */ +#define USBHS_DEVEPTIER_RXOUTES (0x1u << 1) /**< \brief (USBHS_DEVEPTIER[10]) Received OUT Data Interrupt Enable */ +#define USBHS_DEVEPTIER_RXSTPES (0x1u << 2) /**< \brief (USBHS_DEVEPTIER[10]) Received SETUP Interrupt Enable */ +#define USBHS_DEVEPTIER_NAKOUTES (0x1u << 3) /**< \brief (USBHS_DEVEPTIER[10]) NAKed OUT Interrupt Enable */ +#define USBHS_DEVEPTIER_NAKINES (0x1u << 4) /**< \brief (USBHS_DEVEPTIER[10]) NAKed IN Interrupt Enable */ +#define USBHS_DEVEPTIER_OVERFES (0x1u << 5) /**< \brief (USBHS_DEVEPTIER[10]) Overflow Interrupt Enable */ +#define USBHS_DEVEPTIER_STALLEDES (0x1u << 6) /**< \brief (USBHS_DEVEPTIER[10]) STALLed Interrupt Enable */ +#define USBHS_DEVEPTIER_SHORTPACKETES (0x1u << 7) /**< \brief (USBHS_DEVEPTIER[10]) Short Packet Interrupt Enable */ +#define USBHS_DEVEPTIER_NBUSYBKES (0x1u << 12) /**< \brief (USBHS_DEVEPTIER[10]) Number of Busy Banks Interrupt Enable */ +#define USBHS_DEVEPTIER_KILLBKS (0x1u << 13) /**< \brief (USBHS_DEVEPTIER[10]) Kill IN Bank */ +#define USBHS_DEVEPTIER_FIFOCONS (0x1u << 14) /**< \brief (USBHS_DEVEPTIER[10]) FIFO Control */ +#define USBHS_DEVEPTIER_EPDISHDMAS (0x1u << 16) /**< \brief (USBHS_DEVEPTIER[10]) Endpoint Interrupts Disable HDMA Request Enable */ +#define USBHS_DEVEPTIER_NYETDISS (0x1u << 17) /**< \brief (USBHS_DEVEPTIER[10]) NYET Token Disable Enable */ +#define USBHS_DEVEPTIER_RSTDTS (0x1u << 18) /**< \brief (USBHS_DEVEPTIER[10]) Reset Data Toggle Enable */ +#define USBHS_DEVEPTIER_STALLRQS (0x1u << 19) /**< \brief (USBHS_DEVEPTIER[10]) STALL Request Enable */ +#define USBHS_DEVEPTIER_UNDERFES (0x1u << 2) /**< \brief (USBHS_DEVEPTIER[10]) Underflow Interrupt Enable */ +#define USBHS_DEVEPTIER_HBISOINERRES (0x1u << 3) /**< \brief (USBHS_DEVEPTIER[10]) High Bandwidth Isochronous IN Error Interrupt Enable */ +#define USBHS_DEVEPTIER_HBISOFLUSHES (0x1u << 4) /**< \brief (USBHS_DEVEPTIER[10]) High Bandwidth Isochronous IN Flush Interrupt Enable */ +#define USBHS_DEVEPTIER_CRCERRES (0x1u << 6) /**< \brief (USBHS_DEVEPTIER[10]) CRC Error Interrupt Enable */ +#define USBHS_DEVEPTIER_MDATAES (0x1u << 8) /**< \brief (USBHS_DEVEPTIER[10]) MData Interrupt Enable */ +#define USBHS_DEVEPTIER_DATAXES (0x1u << 9) /**< \brief (USBHS_DEVEPTIER[10]) DataX Interrupt Enable */ +#define USBHS_DEVEPTIER_ERRORTRANSES (0x1u << 10) /**< \brief (USBHS_DEVEPTIER[10]) Transaction Error Interrupt Enable */ +/* -------- USBHS_DEVEPTIDR[10] : (USBHS Offset: 0x220) Device Endpoint Disable Register (n = 0) -------- */ +#define USBHS_DEVEPTIDR_TXINEC (0x1u << 0) /**< \brief (USBHS_DEVEPTIDR[10]) Transmitted IN Interrupt Clear */ +#define USBHS_DEVEPTIDR_RXOUTEC (0x1u << 1) /**< \brief (USBHS_DEVEPTIDR[10]) Received OUT Data Interrupt Clear */ +#define USBHS_DEVEPTIDR_RXSTPEC (0x1u << 2) /**< \brief (USBHS_DEVEPTIDR[10]) Received SETUP Interrupt Clear */ +#define USBHS_DEVEPTIDR_NAKOUTEC (0x1u << 3) /**< \brief (USBHS_DEVEPTIDR[10]) NAKed OUT Interrupt Clear */ +#define USBHS_DEVEPTIDR_NAKINEC (0x1u << 4) /**< \brief (USBHS_DEVEPTIDR[10]) NAKed IN Interrupt Clear */ +#define USBHS_DEVEPTIDR_OVERFEC (0x1u << 5) /**< \brief (USBHS_DEVEPTIDR[10]) Overflow Interrupt Clear */ +#define USBHS_DEVEPTIDR_STALLEDEC (0x1u << 6) /**< \brief (USBHS_DEVEPTIDR[10]) STALLed Interrupt Clear */ +#define USBHS_DEVEPTIDR_SHORTPACKETEC (0x1u << 7) /**< \brief (USBHS_DEVEPTIDR[10]) Shortpacket Interrupt Clear */ +#define USBHS_DEVEPTIDR_NBUSYBKEC (0x1u << 12) /**< \brief (USBHS_DEVEPTIDR[10]) Number of Busy Banks Interrupt Clear */ +#define USBHS_DEVEPTIDR_FIFOCONC (0x1u << 14) /**< \brief (USBHS_DEVEPTIDR[10]) FIFO Control Clear */ +#define USBHS_DEVEPTIDR_EPDISHDMAC (0x1u << 16) /**< \brief (USBHS_DEVEPTIDR[10]) Endpoint Interrupts Disable HDMA Request Clear */ +#define USBHS_DEVEPTIDR_NYETDISC (0x1u << 17) /**< \brief (USBHS_DEVEPTIDR[10]) NYET Token Disable Clear */ +#define USBHS_DEVEPTIDR_STALLRQC (0x1u << 19) /**< \brief (USBHS_DEVEPTIDR[10]) STALL Request Clear */ +#define USBHS_DEVEPTIDR_UNDERFEC (0x1u << 2) /**< \brief (USBHS_DEVEPTIDR[10]) Underflow Interrupt Clear */ +#define USBHS_DEVEPTIDR_HBISOINERREC (0x1u << 3) /**< \brief (USBHS_DEVEPTIDR[10]) High Bandwidth Isochronous IN Error Interrupt Clear */ +#define USBHS_DEVEPTIDR_HBISOFLUSHEC (0x1u << 4) /**< \brief (USBHS_DEVEPTIDR[10]) High Bandwidth Isochronous IN Flush Interrupt Clear */ +#define USBHS_DEVEPTIDR_CRCERREC (0x1u << 6) /**< \brief (USBHS_DEVEPTIDR[10]) CRC Error Interrupt Clear */ +#define USBHS_DEVEPTIDR_MDATEC (0x1u << 8) /**< \brief (USBHS_DEVEPTIDR[10]) MData Interrupt Clear */ +#define USBHS_DEVEPTIDR_DATAXEC (0x1u << 9) /**< \brief (USBHS_DEVEPTIDR[10]) DataX Interrupt Clear */ +#define USBHS_DEVEPTIDR_ERRORTRANSEC (0x1u << 10) /**< \brief (USBHS_DEVEPTIDR[10]) Transaction Error Interrupt Clear */ +/* -------- USBHS_DEVDMANXTDSC : (USBHS Offset: N/A) Device DMA Channel Next Descriptor Address Register -------- */ +#define USBHS_DEVDMANXTDSC_NXT_DSC_ADD_Pos 0 +#define USBHS_DEVDMANXTDSC_NXT_DSC_ADD_Msk (0xffffffffu << USBHS_DEVDMANXTDSC_NXT_DSC_ADD_Pos) /**< \brief (USBHS_DEVDMANXTDSC) Next Descriptor Address */ +#define USBHS_DEVDMANXTDSC_NXT_DSC_ADD(value) ((USBHS_DEVDMANXTDSC_NXT_DSC_ADD_Msk & ((value) << USBHS_DEVDMANXTDSC_NXT_DSC_ADD_Pos))) +/* -------- USBHS_DEVDMAADDRESS : (USBHS Offset: N/A) Device DMA Channel Address Register -------- */ +#define USBHS_DEVDMAADDRESS_BUFF_ADD_Pos 0 +#define USBHS_DEVDMAADDRESS_BUFF_ADD_Msk (0xffffffffu << USBHS_DEVDMAADDRESS_BUFF_ADD_Pos) /**< \brief (USBHS_DEVDMAADDRESS) Buffer Address */ +#define USBHS_DEVDMAADDRESS_BUFF_ADD(value) ((USBHS_DEVDMAADDRESS_BUFF_ADD_Msk & ((value) << USBHS_DEVDMAADDRESS_BUFF_ADD_Pos))) +/* -------- USBHS_DEVDMACONTROL : (USBHS Offset: N/A) Device DMA Channel Control Register -------- */ +#define USBHS_DEVDMACONTROL_CHANN_ENB (0x1u << 0) /**< \brief (USBHS_DEVDMACONTROL) Channel Enable Command */ +#define USBHS_DEVDMACONTROL_LDNXT_DSC (0x1u << 1) /**< \brief (USBHS_DEVDMACONTROL) Load Next Channel Transfer Descriptor Enable Command */ +#define USBHS_DEVDMACONTROL_END_TR_EN (0x1u << 2) /**< \brief (USBHS_DEVDMACONTROL) End of Transfer Enable Control (OUT transfers only) */ +#define USBHS_DEVDMACONTROL_END_B_EN (0x1u << 3) /**< \brief (USBHS_DEVDMACONTROL) End of Buffer Enable Control */ +#define USBHS_DEVDMACONTROL_END_TR_IT (0x1u << 4) /**< \brief (USBHS_DEVDMACONTROL) End of Transfer Interrupt Enable */ +#define USBHS_DEVDMACONTROL_END_BUFFIT (0x1u << 5) /**< \brief (USBHS_DEVDMACONTROL) End of Buffer Interrupt Enable */ +#define USBHS_DEVDMACONTROL_DESC_LD_IT (0x1u << 6) /**< \brief (USBHS_DEVDMACONTROL) Descriptor Loaded Interrupt Enable */ +#define USBHS_DEVDMACONTROL_BURST_LCK (0x1u << 7) /**< \brief (USBHS_DEVDMACONTROL) Burst Lock Enable */ +#define USBHS_DEVDMACONTROL_BUFF_LENGTH_Pos 16 +#define USBHS_DEVDMACONTROL_BUFF_LENGTH_Msk (0xffffu << USBHS_DEVDMACONTROL_BUFF_LENGTH_Pos) /**< \brief (USBHS_DEVDMACONTROL) Buffer Byte Length (Write-only) */ +#define USBHS_DEVDMACONTROL_BUFF_LENGTH(value) ((USBHS_DEVDMACONTROL_BUFF_LENGTH_Msk & ((value) << USBHS_DEVDMACONTROL_BUFF_LENGTH_Pos))) +/* -------- USBHS_DEVDMASTATUS : (USBHS Offset: N/A) Device DMA Channel Status Register -------- */ +#define USBHS_DEVDMASTATUS_CHANN_ENB (0x1u << 0) /**< \brief (USBHS_DEVDMASTATUS) Channel Enable Status */ +#define USBHS_DEVDMASTATUS_CHANN_ACT (0x1u << 1) /**< \brief (USBHS_DEVDMASTATUS) Channel Active Status */ +#define USBHS_DEVDMASTATUS_END_TR_ST (0x1u << 4) /**< \brief (USBHS_DEVDMASTATUS) End of Channel Transfer Status */ +#define USBHS_DEVDMASTATUS_END_BF_ST (0x1u << 5) /**< \brief (USBHS_DEVDMASTATUS) End of Channel Buffer Status */ +#define USBHS_DEVDMASTATUS_DESC_LDST (0x1u << 6) /**< \brief (USBHS_DEVDMASTATUS) Descriptor Loaded Status */ +#define USBHS_DEVDMASTATUS_BUFF_COUNT_Pos 16 +#define USBHS_DEVDMASTATUS_BUFF_COUNT_Msk (0xffffu << USBHS_DEVDMASTATUS_BUFF_COUNT_Pos) /**< \brief (USBHS_DEVDMASTATUS) Buffer Byte Count */ +#define USBHS_DEVDMASTATUS_BUFF_COUNT(value) ((USBHS_DEVDMASTATUS_BUFF_COUNT_Msk & ((value) << USBHS_DEVDMASTATUS_BUFF_COUNT_Pos))) +/* -------- USBHS_HSTCTRL : (USBHS Offset: 0x0400) Host General Control Register -------- */ +#define USBHS_HSTCTRL_SOFE (0x1u << 8) /**< \brief (USBHS_HSTCTRL) Start of Frame Generation Enable */ +#define USBHS_HSTCTRL_RESET (0x1u << 9) /**< \brief (USBHS_HSTCTRL) Send USB Reset */ +#define USBHS_HSTCTRL_RESUME (0x1u << 10) /**< \brief (USBHS_HSTCTRL) Send USB Resume */ +#define USBHS_HSTCTRL_SPDCONF_Pos 12 +#define USBHS_HSTCTRL_SPDCONF_Msk (0x3u << USBHS_HSTCTRL_SPDCONF_Pos) /**< \brief (USBHS_HSTCTRL) Mode Configuration */ +#define USBHS_HSTCTRL_SPDCONF(value) ((USBHS_HSTCTRL_SPDCONF_Msk & ((value) << USBHS_HSTCTRL_SPDCONF_Pos))) +#define USBHS_HSTCTRL_SPDCONF_NORMAL (0x0u << 12) /**< \brief (USBHS_HSTCTRL) The host starts in Full-speed mode and performs a high-speed reset to switch to High-speed mode if the downstream peripheral is high-speed capable. */ +#define USBHS_HSTCTRL_SPDCONF_LOW_POWER (0x1u << 12) /**< \brief (USBHS_HSTCTRL) For a better consumption, if high speed is not needed. */ +#define USBHS_HSTCTRL_SPDCONF_HIGH_SPEED (0x2u << 12) /**< \brief (USBHS_HSTCTRL) Forced high speed. */ +#define USBHS_HSTCTRL_SPDCONF_FORCED_FS (0x3u << 12) /**< \brief (USBHS_HSTCTRL) The host remains in Full-speed mode whatever the peripheral speed capability. */ +/* -------- USBHS_HSTISR : (USBHS Offset: 0x0404) Host Global Interrupt Status Register -------- */ +#define USBHS_HSTISR_DCONNI (0x1u << 0) /**< \brief (USBHS_HSTISR) Device Connection Interrupt */ +#define USBHS_HSTISR_DDISCI (0x1u << 1) /**< \brief (USBHS_HSTISR) Device Disconnection Interrupt */ +#define USBHS_HSTISR_RSTI (0x1u << 2) /**< \brief (USBHS_HSTISR) USB Reset Sent Interrupt */ +#define USBHS_HSTISR_RSMEDI (0x1u << 3) /**< \brief (USBHS_HSTISR) Downstream Resume Sent Interrupt */ +#define USBHS_HSTISR_RXRSMI (0x1u << 4) /**< \brief (USBHS_HSTISR) Upstream Resume Received Interrupt */ +#define USBHS_HSTISR_HSOFI (0x1u << 5) /**< \brief (USBHS_HSTISR) Host Start of Frame Interrupt */ +#define USBHS_HSTISR_HWUPI (0x1u << 6) /**< \brief (USBHS_HSTISR) Host Wake-Up Interrupt */ +#define USBHS_HSTISR_PEP_0 (0x1u << 8) /**< \brief (USBHS_HSTISR) Pipe 0 Interrupt */ +#define USBHS_HSTISR_PEP_1 (0x1u << 9) /**< \brief (USBHS_HSTISR) Pipe 1 Interrupt */ +#define USBHS_HSTISR_PEP_2 (0x1u << 10) /**< \brief (USBHS_HSTISR) Pipe 2 Interrupt */ +#define USBHS_HSTISR_PEP_3 (0x1u << 11) /**< \brief (USBHS_HSTISR) Pipe 3 Interrupt */ +#define USBHS_HSTISR_PEP_4 (0x1u << 12) /**< \brief (USBHS_HSTISR) Pipe 4 Interrupt */ +#define USBHS_HSTISR_PEP_5 (0x1u << 13) /**< \brief (USBHS_HSTISR) Pipe 5 Interrupt */ +#define USBHS_HSTISR_PEP_6 (0x1u << 14) /**< \brief (USBHS_HSTISR) Pipe 6 Interrupt */ +#define USBHS_HSTISR_PEP_7 (0x1u << 15) /**< \brief (USBHS_HSTISR) Pipe 7 Interrupt */ +#define USBHS_HSTISR_PEP_8 (0x1u << 16) /**< \brief (USBHS_HSTISR) Pipe 8 Interrupt */ +#define USBHS_HSTISR_PEP_9 (0x1u << 17) /**< \brief (USBHS_HSTISR) Pipe 9 Interrupt */ +#define USBHS_HSTISR_DMA_1 (0x1u << 25) /**< \brief (USBHS_HSTISR) DMA Channel 1 Interrupt */ +#define USBHS_HSTISR_DMA_2 (0x1u << 26) /**< \brief (USBHS_HSTISR) DMA Channel 2 Interrupt */ +#define USBHS_HSTISR_DMA_3 (0x1u << 27) /**< \brief (USBHS_HSTISR) DMA Channel 3 Interrupt */ +#define USBHS_HSTISR_DMA_4 (0x1u << 28) /**< \brief (USBHS_HSTISR) DMA Channel 4 Interrupt */ +#define USBHS_HSTISR_DMA_5 (0x1u << 29) /**< \brief (USBHS_HSTISR) DMA Channel 5 Interrupt */ +#define USBHS_HSTISR_DMA_6 (0x1u << 30) /**< \brief (USBHS_HSTISR) DMA Channel 6 Interrupt */ +#define USBHS_HSTISR_DMA_7 (0x1u << 31) /**< \brief (USBHS_HSTISR) DMA Channel 7 Interrupt */ +/* -------- USBHS_HSTICR : (USBHS Offset: 0x0408) Host Global Interrupt Clear Register -------- */ +#define USBHS_HSTICR_DCONNIC (0x1u << 0) /**< \brief (USBHS_HSTICR) Device Connection Interrupt Clear */ +#define USBHS_HSTICR_DDISCIC (0x1u << 1) /**< \brief (USBHS_HSTICR) Device Disconnection Interrupt Clear */ +#define USBHS_HSTICR_RSTIC (0x1u << 2) /**< \brief (USBHS_HSTICR) USB Reset Sent Interrupt Clear */ +#define USBHS_HSTICR_RSMEDIC (0x1u << 3) /**< \brief (USBHS_HSTICR) Downstream Resume Sent Interrupt Clear */ +#define USBHS_HSTICR_RXRSMIC (0x1u << 4) /**< \brief (USBHS_HSTICR) Upstream Resume Received Interrupt Clear */ +#define USBHS_HSTICR_HSOFIC (0x1u << 5) /**< \brief (USBHS_HSTICR) Host Start of Frame Interrupt Clear */ +#define USBHS_HSTICR_HWUPIC (0x1u << 6) /**< \brief (USBHS_HSTICR) Host Wake-Up Interrupt Clear */ +/* -------- USBHS_HSTIFR : (USBHS Offset: 0x040C) Host Global Interrupt Set Register -------- */ +#define USBHS_HSTIFR_DCONNIS (0x1u << 0) /**< \brief (USBHS_HSTIFR) Device Connection Interrupt Set */ +#define USBHS_HSTIFR_DDISCIS (0x1u << 1) /**< \brief (USBHS_HSTIFR) Device Disconnection Interrupt Set */ +#define USBHS_HSTIFR_RSTIS (0x1u << 2) /**< \brief (USBHS_HSTIFR) USB Reset Sent Interrupt Set */ +#define USBHS_HSTIFR_RSMEDIS (0x1u << 3) /**< \brief (USBHS_HSTIFR) Downstream Resume Sent Interrupt Set */ +#define USBHS_HSTIFR_RXRSMIS (0x1u << 4) /**< \brief (USBHS_HSTIFR) Upstream Resume Received Interrupt Set */ +#define USBHS_HSTIFR_HSOFIS (0x1u << 5) /**< \brief (USBHS_HSTIFR) Host Start of Frame Interrupt Set */ +#define USBHS_HSTIFR_HWUPIS (0x1u << 6) /**< \brief (USBHS_HSTIFR) Host Wake-Up Interrupt Set */ +#define USBHS_HSTIFR_DMA_1 (0x1u << 25) /**< \brief (USBHS_HSTIFR) DMA Channel 1 Interrupt Set */ +#define USBHS_HSTIFR_DMA_2 (0x1u << 26) /**< \brief (USBHS_HSTIFR) DMA Channel 2 Interrupt Set */ +#define USBHS_HSTIFR_DMA_3 (0x1u << 27) /**< \brief (USBHS_HSTIFR) DMA Channel 3 Interrupt Set */ +#define USBHS_HSTIFR_DMA_4 (0x1u << 28) /**< \brief (USBHS_HSTIFR) DMA Channel 4 Interrupt Set */ +#define USBHS_HSTIFR_DMA_5 (0x1u << 29) /**< \brief (USBHS_HSTIFR) DMA Channel 5 Interrupt Set */ +#define USBHS_HSTIFR_DMA_6 (0x1u << 30) /**< \brief (USBHS_HSTIFR) DMA Channel 6 Interrupt Set */ +#define USBHS_HSTIFR_DMA_7 (0x1u << 31) /**< \brief (USBHS_HSTIFR) DMA Channel 7 Interrupt Set */ +/* -------- USBHS_HSTIMR : (USBHS Offset: 0x0410) Host Global Interrupt Mask Register -------- */ +#define USBHS_HSTIMR_DCONNIE (0x1u << 0) /**< \brief (USBHS_HSTIMR) Device Connection Interrupt Enable */ +#define USBHS_HSTIMR_DDISCIE (0x1u << 1) /**< \brief (USBHS_HSTIMR) Device Disconnection Interrupt Enable */ +#define USBHS_HSTIMR_RSTIE (0x1u << 2) /**< \brief (USBHS_HSTIMR) USB Reset Sent Interrupt Enable */ +#define USBHS_HSTIMR_RSMEDIE (0x1u << 3) /**< \brief (USBHS_HSTIMR) Downstream Resume Sent Interrupt Enable */ +#define USBHS_HSTIMR_RXRSMIE (0x1u << 4) /**< \brief (USBHS_HSTIMR) Upstream Resume Received Interrupt Enable */ +#define USBHS_HSTIMR_HSOFIE (0x1u << 5) /**< \brief (USBHS_HSTIMR) Host Start of Frame Interrupt Enable */ +#define USBHS_HSTIMR_HWUPIE (0x1u << 6) /**< \brief (USBHS_HSTIMR) Host Wake-Up Interrupt Enable */ +#define USBHS_HSTIMR_PEP_0 (0x1u << 8) /**< \brief (USBHS_HSTIMR) Pipe 0 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_1 (0x1u << 9) /**< \brief (USBHS_HSTIMR) Pipe 1 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_2 (0x1u << 10) /**< \brief (USBHS_HSTIMR) Pipe 2 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_3 (0x1u << 11) /**< \brief (USBHS_HSTIMR) Pipe 3 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_4 (0x1u << 12) /**< \brief (USBHS_HSTIMR) Pipe 4 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_5 (0x1u << 13) /**< \brief (USBHS_HSTIMR) Pipe 5 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_6 (0x1u << 14) /**< \brief (USBHS_HSTIMR) Pipe 6 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_7 (0x1u << 15) /**< \brief (USBHS_HSTIMR) Pipe 7 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_8 (0x1u << 16) /**< \brief (USBHS_HSTIMR) Pipe 8 Interrupt Enable */ +#define USBHS_HSTIMR_PEP_9 (0x1u << 17) /**< \brief (USBHS_HSTIMR) Pipe 9 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_1 (0x1u << 25) /**< \brief (USBHS_HSTIMR) DMA Channel 1 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_2 (0x1u << 26) /**< \brief (USBHS_HSTIMR) DMA Channel 2 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_3 (0x1u << 27) /**< \brief (USBHS_HSTIMR) DMA Channel 3 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_4 (0x1u << 28) /**< \brief (USBHS_HSTIMR) DMA Channel 4 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_5 (0x1u << 29) /**< \brief (USBHS_HSTIMR) DMA Channel 5 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_6 (0x1u << 30) /**< \brief (USBHS_HSTIMR) DMA Channel 6 Interrupt Enable */ +#define USBHS_HSTIMR_DMA_7 (0x1u << 31) /**< \brief (USBHS_HSTIMR) DMA Channel 7 Interrupt Enable */ +/* -------- USBHS_HSTIDR : (USBHS Offset: 0x0414) Host Global Interrupt Disable Register -------- */ +#define USBHS_HSTIDR_DCONNIEC (0x1u << 0) /**< \brief (USBHS_HSTIDR) Device Connection Interrupt Disable */ +#define USBHS_HSTIDR_DDISCIEC (0x1u << 1) /**< \brief (USBHS_HSTIDR) Device Disconnection Interrupt Disable */ +#define USBHS_HSTIDR_RSTIEC (0x1u << 2) /**< \brief (USBHS_HSTIDR) USB Reset Sent Interrupt Disable */ +#define USBHS_HSTIDR_RSMEDIEC (0x1u << 3) /**< \brief (USBHS_HSTIDR) Downstream Resume Sent Interrupt Disable */ +#define USBHS_HSTIDR_RXRSMIEC (0x1u << 4) /**< \brief (USBHS_HSTIDR) Upstream Resume Received Interrupt Disable */ +#define USBHS_HSTIDR_HSOFIEC (0x1u << 5) /**< \brief (USBHS_HSTIDR) Host Start of Frame Interrupt Disable */ +#define USBHS_HSTIDR_HWUPIEC (0x1u << 6) /**< \brief (USBHS_HSTIDR) Host Wake-Up Interrupt Disable */ +#define USBHS_HSTIDR_PEP_0 (0x1u << 8) /**< \brief (USBHS_HSTIDR) Pipe 0 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_1 (0x1u << 9) /**< \brief (USBHS_HSTIDR) Pipe 1 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_2 (0x1u << 10) /**< \brief (USBHS_HSTIDR) Pipe 2 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_3 (0x1u << 11) /**< \brief (USBHS_HSTIDR) Pipe 3 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_4 (0x1u << 12) /**< \brief (USBHS_HSTIDR) Pipe 4 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_5 (0x1u << 13) /**< \brief (USBHS_HSTIDR) Pipe 5 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_6 (0x1u << 14) /**< \brief (USBHS_HSTIDR) Pipe 6 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_7 (0x1u << 15) /**< \brief (USBHS_HSTIDR) Pipe 7 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_8 (0x1u << 16) /**< \brief (USBHS_HSTIDR) Pipe 8 Interrupt Disable */ +#define USBHS_HSTIDR_PEP_9 (0x1u << 17) /**< \brief (USBHS_HSTIDR) Pipe 9 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_1 (0x1u << 25) /**< \brief (USBHS_HSTIDR) DMA Channel 1 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_2 (0x1u << 26) /**< \brief (USBHS_HSTIDR) DMA Channel 2 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_3 (0x1u << 27) /**< \brief (USBHS_HSTIDR) DMA Channel 3 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_4 (0x1u << 28) /**< \brief (USBHS_HSTIDR) DMA Channel 4 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_5 (0x1u << 29) /**< \brief (USBHS_HSTIDR) DMA Channel 5 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_6 (0x1u << 30) /**< \brief (USBHS_HSTIDR) DMA Channel 6 Interrupt Disable */ +#define USBHS_HSTIDR_DMA_7 (0x1u << 31) /**< \brief (USBHS_HSTIDR) DMA Channel 7 Interrupt Disable */ +/* -------- USBHS_HSTIER : (USBHS Offset: 0x0418) Host Global Interrupt Enable Register -------- */ +#define USBHS_HSTIER_DCONNIES (0x1u << 0) /**< \brief (USBHS_HSTIER) Device Connection Interrupt Enable */ +#define USBHS_HSTIER_DDISCIES (0x1u << 1) /**< \brief (USBHS_HSTIER) Device Disconnection Interrupt Enable */ +#define USBHS_HSTIER_RSTIES (0x1u << 2) /**< \brief (USBHS_HSTIER) USB Reset Sent Interrupt Enable */ +#define USBHS_HSTIER_RSMEDIES (0x1u << 3) /**< \brief (USBHS_HSTIER) Downstream Resume Sent Interrupt Enable */ +#define USBHS_HSTIER_RXRSMIES (0x1u << 4) /**< \brief (USBHS_HSTIER) Upstream Resume Received Interrupt Enable */ +#define USBHS_HSTIER_HSOFIES (0x1u << 5) /**< \brief (USBHS_HSTIER) Host Start of Frame Interrupt Enable */ +#define USBHS_HSTIER_HWUPIES (0x1u << 6) /**< \brief (USBHS_HSTIER) Host Wake-Up Interrupt Enable */ +#define USBHS_HSTIER_PEP_0 (0x1u << 8) /**< \brief (USBHS_HSTIER) Pipe 0 Interrupt Enable */ +#define USBHS_HSTIER_PEP_1 (0x1u << 9) /**< \brief (USBHS_HSTIER) Pipe 1 Interrupt Enable */ +#define USBHS_HSTIER_PEP_2 (0x1u << 10) /**< \brief (USBHS_HSTIER) Pipe 2 Interrupt Enable */ +#define USBHS_HSTIER_PEP_3 (0x1u << 11) /**< \brief (USBHS_HSTIER) Pipe 3 Interrupt Enable */ +#define USBHS_HSTIER_PEP_4 (0x1u << 12) /**< \brief (USBHS_HSTIER) Pipe 4 Interrupt Enable */ +#define USBHS_HSTIER_PEP_5 (0x1u << 13) /**< \brief (USBHS_HSTIER) Pipe 5 Interrupt Enable */ +#define USBHS_HSTIER_PEP_6 (0x1u << 14) /**< \brief (USBHS_HSTIER) Pipe 6 Interrupt Enable */ +#define USBHS_HSTIER_PEP_7 (0x1u << 15) /**< \brief (USBHS_HSTIER) Pipe 7 Interrupt Enable */ +#define USBHS_HSTIER_PEP_8 (0x1u << 16) /**< \brief (USBHS_HSTIER) Pipe 8 Interrupt Enable */ +#define USBHS_HSTIER_PEP_9 (0x1u << 17) /**< \brief (USBHS_HSTIER) Pipe 9 Interrupt Enable */ +#define USBHS_HSTIER_DMA_1 (0x1u << 25) /**< \brief (USBHS_HSTIER) DMA Channel 1 Interrupt Enable */ +#define USBHS_HSTIER_DMA_2 (0x1u << 26) /**< \brief (USBHS_HSTIER) DMA Channel 2 Interrupt Enable */ +#define USBHS_HSTIER_DMA_3 (0x1u << 27) /**< \brief (USBHS_HSTIER) DMA Channel 3 Interrupt Enable */ +#define USBHS_HSTIER_DMA_4 (0x1u << 28) /**< \brief (USBHS_HSTIER) DMA Channel 4 Interrupt Enable */ +#define USBHS_HSTIER_DMA_5 (0x1u << 29) /**< \brief (USBHS_HSTIER) DMA Channel 5 Interrupt Enable */ +#define USBHS_HSTIER_DMA_6 (0x1u << 30) /**< \brief (USBHS_HSTIER) DMA Channel 6 Interrupt Enable */ +#define USBHS_HSTIER_DMA_7 (0x1u << 31) /**< \brief (USBHS_HSTIER) DMA Channel 7 Interrupt Enable */ +/* -------- USBHS_HSTPIP : (USBHS Offset: 0x0041C) Host Pipe Register -------- */ +#define USBHS_HSTPIP_PEN0 (0x1u << 0) /**< \brief (USBHS_HSTPIP) Pipe 0 Enable */ +#define USBHS_HSTPIP_PEN1 (0x1u << 1) /**< \brief (USBHS_HSTPIP) Pipe 1 Enable */ +#define USBHS_HSTPIP_PEN2 (0x1u << 2) /**< \brief (USBHS_HSTPIP) Pipe 2 Enable */ +#define USBHS_HSTPIP_PEN3 (0x1u << 3) /**< \brief (USBHS_HSTPIP) Pipe 3 Enable */ +#define USBHS_HSTPIP_PEN4 (0x1u << 4) /**< \brief (USBHS_HSTPIP) Pipe 4 Enable */ +#define USBHS_HSTPIP_PEN5 (0x1u << 5) /**< \brief (USBHS_HSTPIP) Pipe 5 Enable */ +#define USBHS_HSTPIP_PEN6 (0x1u << 6) /**< \brief (USBHS_HSTPIP) Pipe 6 Enable */ +#define USBHS_HSTPIP_PEN7 (0x1u << 7) /**< \brief (USBHS_HSTPIP) Pipe 7 Enable */ +#define USBHS_HSTPIP_PEN8 (0x1u << 8) /**< \brief (USBHS_HSTPIP) Pipe 8 Enable */ +#define USBHS_HSTPIP_PRST0 (0x1u << 16) /**< \brief (USBHS_HSTPIP) Pipe 0 Reset */ +#define USBHS_HSTPIP_PRST1 (0x1u << 17) /**< \brief (USBHS_HSTPIP) Pipe 1 Reset */ +#define USBHS_HSTPIP_PRST2 (0x1u << 18) /**< \brief (USBHS_HSTPIP) Pipe 2 Reset */ +#define USBHS_HSTPIP_PRST3 (0x1u << 19) /**< \brief (USBHS_HSTPIP) Pipe 3 Reset */ +#define USBHS_HSTPIP_PRST4 (0x1u << 20) /**< \brief (USBHS_HSTPIP) Pipe 4 Reset */ +#define USBHS_HSTPIP_PRST5 (0x1u << 21) /**< \brief (USBHS_HSTPIP) Pipe 5 Reset */ +#define USBHS_HSTPIP_PRST6 (0x1u << 22) /**< \brief (USBHS_HSTPIP) Pipe 6 Reset */ +#define USBHS_HSTPIP_PRST7 (0x1u << 23) /**< \brief (USBHS_HSTPIP) Pipe 7 Reset */ +#define USBHS_HSTPIP_PRST8 (0x1u << 24) /**< \brief (USBHS_HSTPIP) Pipe 8 Reset */ +/* -------- USBHS_HSTFNUM : (USBHS Offset: 0x0420) Host Frame Number Register -------- */ +#define USBHS_HSTFNUM_MFNUM_Pos 0 +#define USBHS_HSTFNUM_MFNUM_Msk (0x7u << USBHS_HSTFNUM_MFNUM_Pos) /**< \brief (USBHS_HSTFNUM) Micro Frame Number */ +#define USBHS_HSTFNUM_MFNUM(value) ((USBHS_HSTFNUM_MFNUM_Msk & ((value) << USBHS_HSTFNUM_MFNUM_Pos))) +#define USBHS_HSTFNUM_FNUM_Pos 3 +#define USBHS_HSTFNUM_FNUM_Msk (0x7ffu << USBHS_HSTFNUM_FNUM_Pos) /**< \brief (USBHS_HSTFNUM) Frame Number */ +#define USBHS_HSTFNUM_FNUM(value) ((USBHS_HSTFNUM_FNUM_Msk & ((value) << USBHS_HSTFNUM_FNUM_Pos))) +#define USBHS_HSTFNUM_FLENHIGH_Pos 16 +#define USBHS_HSTFNUM_FLENHIGH_Msk (0xffu << USBHS_HSTFNUM_FLENHIGH_Pos) /**< \brief (USBHS_HSTFNUM) Frame Length */ +#define USBHS_HSTFNUM_FLENHIGH(value) ((USBHS_HSTFNUM_FLENHIGH_Msk & ((value) << USBHS_HSTFNUM_FLENHIGH_Pos))) +/* -------- USBHS_HSTADDR1 : (USBHS Offset: 0x0424) Host Address 1 Register -------- */ +#define USBHS_HSTADDR1_HSTADDRP0_Pos 0 +#define USBHS_HSTADDR1_HSTADDRP0_Msk (0x7fu << USBHS_HSTADDR1_HSTADDRP0_Pos) /**< \brief (USBHS_HSTADDR1) USB Host Address */ +#define USBHS_HSTADDR1_HSTADDRP0(value) ((USBHS_HSTADDR1_HSTADDRP0_Msk & ((value) << USBHS_HSTADDR1_HSTADDRP0_Pos))) +#define USBHS_HSTADDR1_HSTADDRP1_Pos 8 +#define USBHS_HSTADDR1_HSTADDRP1_Msk (0x7fu << USBHS_HSTADDR1_HSTADDRP1_Pos) /**< \brief (USBHS_HSTADDR1) USB Host Address */ +#define USBHS_HSTADDR1_HSTADDRP1(value) ((USBHS_HSTADDR1_HSTADDRP1_Msk & ((value) << USBHS_HSTADDR1_HSTADDRP1_Pos))) +#define USBHS_HSTADDR1_HSTADDRP2_Pos 16 +#define USBHS_HSTADDR1_HSTADDRP2_Msk (0x7fu << USBHS_HSTADDR1_HSTADDRP2_Pos) /**< \brief (USBHS_HSTADDR1) USB Host Address */ +#define USBHS_HSTADDR1_HSTADDRP2(value) ((USBHS_HSTADDR1_HSTADDRP2_Msk & ((value) << USBHS_HSTADDR1_HSTADDRP2_Pos))) +#define USBHS_HSTADDR1_HSTADDRP3_Pos 24 +#define USBHS_HSTADDR1_HSTADDRP3_Msk (0x7fu << USBHS_HSTADDR1_HSTADDRP3_Pos) /**< \brief (USBHS_HSTADDR1) USB Host Address */ +#define USBHS_HSTADDR1_HSTADDRP3(value) ((USBHS_HSTADDR1_HSTADDRP3_Msk & ((value) << USBHS_HSTADDR1_HSTADDRP3_Pos))) +/* -------- USBHS_HSTADDR2 : (USBHS Offset: 0x0428) Host Address 2 Register -------- */ +#define USBHS_HSTADDR2_HSTADDRP4_Pos 0 +#define USBHS_HSTADDR2_HSTADDRP4_Msk (0x7fu << USBHS_HSTADDR2_HSTADDRP4_Pos) /**< \brief (USBHS_HSTADDR2) USB Host Address */ +#define USBHS_HSTADDR2_HSTADDRP4(value) ((USBHS_HSTADDR2_HSTADDRP4_Msk & ((value) << USBHS_HSTADDR2_HSTADDRP4_Pos))) +#define USBHS_HSTADDR2_HSTADDRP5_Pos 8 +#define USBHS_HSTADDR2_HSTADDRP5_Msk (0x7fu << USBHS_HSTADDR2_HSTADDRP5_Pos) /**< \brief (USBHS_HSTADDR2) USB Host Address */ +#define USBHS_HSTADDR2_HSTADDRP5(value) ((USBHS_HSTADDR2_HSTADDRP5_Msk & ((value) << USBHS_HSTADDR2_HSTADDRP5_Pos))) +#define USBHS_HSTADDR2_HSTADDRP6_Pos 16 +#define USBHS_HSTADDR2_HSTADDRP6_Msk (0x7fu << USBHS_HSTADDR2_HSTADDRP6_Pos) /**< \brief (USBHS_HSTADDR2) USB Host Address */ +#define USBHS_HSTADDR2_HSTADDRP6(value) ((USBHS_HSTADDR2_HSTADDRP6_Msk & ((value) << USBHS_HSTADDR2_HSTADDRP6_Pos))) +#define USBHS_HSTADDR2_HSTADDRP7_Pos 24 +#define USBHS_HSTADDR2_HSTADDRP7_Msk (0x7fu << USBHS_HSTADDR2_HSTADDRP7_Pos) /**< \brief (USBHS_HSTADDR2) USB Host Address */ +#define USBHS_HSTADDR2_HSTADDRP7(value) ((USBHS_HSTADDR2_HSTADDRP7_Msk & ((value) << USBHS_HSTADDR2_HSTADDRP7_Pos))) +/* -------- USBHS_HSTADDR3 : (USBHS Offset: 0x042C) Host Address 3 Register -------- */ +#define USBHS_HSTADDR3_HSTADDRP8_Pos 0 +#define USBHS_HSTADDR3_HSTADDRP8_Msk (0x7fu << USBHS_HSTADDR3_HSTADDRP8_Pos) /**< \brief (USBHS_HSTADDR3) USB Host Address */ +#define USBHS_HSTADDR3_HSTADDRP8(value) ((USBHS_HSTADDR3_HSTADDRP8_Msk & ((value) << USBHS_HSTADDR3_HSTADDRP8_Pos))) +#define USBHS_HSTADDR3_HSTADDRP9_Pos 8 +#define USBHS_HSTADDR3_HSTADDRP9_Msk (0x7fu << USBHS_HSTADDR3_HSTADDRP9_Pos) /**< \brief (USBHS_HSTADDR3) USB Host Address */ +#define USBHS_HSTADDR3_HSTADDRP9(value) ((USBHS_HSTADDR3_HSTADDRP9_Msk & ((value) << USBHS_HSTADDR3_HSTADDRP9_Pos))) +/* -------- USBHS_HSTPIPCFG[10] : (USBHS Offset: 0x500) Host Pipe Configuration Register (n = 0) -------- */ +#define USBHS_HSTPIPCFG_ALLOC (0x1u << 1) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Memory Allocate */ +#define USBHS_HSTPIPCFG_PBK_Pos 2 +#define USBHS_HSTPIPCFG_PBK_Msk (0x3u << USBHS_HSTPIPCFG_PBK_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Banks */ +#define USBHS_HSTPIPCFG_PBK(value) ((USBHS_HSTPIPCFG_PBK_Msk & ((value) << USBHS_HSTPIPCFG_PBK_Pos))) +#define USBHS_HSTPIPCFG_PBK_1_BANK (0x0u << 2) /**< \brief (USBHS_HSTPIPCFG[10]) Single-bank pipe */ +#define USBHS_HSTPIPCFG_PBK_2_BANK (0x1u << 2) /**< \brief (USBHS_HSTPIPCFG[10]) Double-bank pipe */ +#define USBHS_HSTPIPCFG_PBK_3_BANK (0x2u << 2) /**< \brief (USBHS_HSTPIPCFG[10]) Triple-bank pipe */ +#define USBHS_HSTPIPCFG_PSIZE_Pos 4 +#define USBHS_HSTPIPCFG_PSIZE_Msk (0x7u << USBHS_HSTPIPCFG_PSIZE_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Size */ +#define USBHS_HSTPIPCFG_PSIZE(value) ((USBHS_HSTPIPCFG_PSIZE_Msk & ((value) << USBHS_HSTPIPCFG_PSIZE_Pos))) +#define USBHS_HSTPIPCFG_PSIZE_8_BYTE (0x0u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 8 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_16_BYTE (0x1u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 16 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_32_BYTE (0x2u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 32 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_64_BYTE (0x3u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 64 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_128_BYTE (0x4u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 128 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_256_BYTE (0x5u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 256 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_512_BYTE (0x6u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 512 bytes */ +#define USBHS_HSTPIPCFG_PSIZE_1024_BYTE (0x7u << 4) /**< \brief (USBHS_HSTPIPCFG[10]) 1024 bytes */ +#define USBHS_HSTPIPCFG_PTOKEN_Pos 8 +#define USBHS_HSTPIPCFG_PTOKEN_Msk (0x3u << USBHS_HSTPIPCFG_PTOKEN_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Token */ +#define USBHS_HSTPIPCFG_PTOKEN(value) ((USBHS_HSTPIPCFG_PTOKEN_Msk & ((value) << USBHS_HSTPIPCFG_PTOKEN_Pos))) +#define USBHS_HSTPIPCFG_PTOKEN_SETUP (0x0u << 8) /**< \brief (USBHS_HSTPIPCFG[10]) SETUP */ +#define USBHS_HSTPIPCFG_PTOKEN_IN (0x1u << 8) /**< \brief (USBHS_HSTPIPCFG[10]) IN */ +#define USBHS_HSTPIPCFG_PTOKEN_OUT (0x2u << 8) /**< \brief (USBHS_HSTPIPCFG[10]) OUT */ +#define USBHS_HSTPIPCFG_AUTOSW (0x1u << 10) /**< \brief (USBHS_HSTPIPCFG[10]) Automatic Switch */ +#define USBHS_HSTPIPCFG_PTYPE_Pos 12 +#define USBHS_HSTPIPCFG_PTYPE_Msk (0x3u << USBHS_HSTPIPCFG_PTYPE_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Type */ +#define USBHS_HSTPIPCFG_PTYPE(value) ((USBHS_HSTPIPCFG_PTYPE_Msk & ((value) << USBHS_HSTPIPCFG_PTYPE_Pos))) +#define USBHS_HSTPIPCFG_PTYPE_CTRL (0x0u << 12) /**< \brief (USBHS_HSTPIPCFG[10]) Control */ +#define USBHS_HSTPIPCFG_PTYPE_ISO (0x1u << 12) /**< \brief (USBHS_HSTPIPCFG[10]) Isochronous */ +#define USBHS_HSTPIPCFG_PTYPE_BLK (0x2u << 12) /**< \brief (USBHS_HSTPIPCFG[10]) Bulk */ +#define USBHS_HSTPIPCFG_PTYPE_INTRPT (0x3u << 12) /**< \brief (USBHS_HSTPIPCFG[10]) Interrupt */ +#define USBHS_HSTPIPCFG_PEPNUM_Pos 16 +#define USBHS_HSTPIPCFG_PEPNUM_Msk (0xfu << USBHS_HSTPIPCFG_PEPNUM_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Endpoint Number */ +#define USBHS_HSTPIPCFG_PEPNUM(value) ((USBHS_HSTPIPCFG_PEPNUM_Msk & ((value) << USBHS_HSTPIPCFG_PEPNUM_Pos))) +#define USBHS_HSTPIPCFG_INTFRQ_Pos 24 +#define USBHS_HSTPIPCFG_INTFRQ_Msk (0xffu << USBHS_HSTPIPCFG_INTFRQ_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Pipe Interrupt Request Frequency */ +#define USBHS_HSTPIPCFG_INTFRQ(value) ((USBHS_HSTPIPCFG_INTFRQ_Msk & ((value) << USBHS_HSTPIPCFG_INTFRQ_Pos))) +#define USBHS_HSTPIPCFG_PINGEN (0x1u << 20) /**< \brief (USBHS_HSTPIPCFG[10]) Ping Enable */ +#define USBHS_HSTPIPCFG_BINTERVAL_Pos 24 +#define USBHS_HSTPIPCFG_BINTERVAL_Msk (0xffu << USBHS_HSTPIPCFG_BINTERVAL_Pos) /**< \brief (USBHS_HSTPIPCFG[10]) Binterval Parameter for the Bulk-Out/Ping Transaction */ +#define USBHS_HSTPIPCFG_BINTERVAL(value) ((USBHS_HSTPIPCFG_BINTERVAL_Msk & ((value) << USBHS_HSTPIPCFG_BINTERVAL_Pos))) +/* -------- USBHS_HSTPIPISR[10] : (USBHS Offset: 0x530) Host Pipe Status Register (n = 0) -------- */ +#define USBHS_HSTPIPISR_RXINI (0x1u << 0) /**< \brief (USBHS_HSTPIPISR[10]) Received IN Data Interrupt */ +#define USBHS_HSTPIPISR_TXOUTI (0x1u << 1) /**< \brief (USBHS_HSTPIPISR[10]) Transmitted OUT Data Interrupt */ +#define USBHS_HSTPIPISR_TXSTPI (0x1u << 2) /**< \brief (USBHS_HSTPIPISR[10]) Transmitted SETUP Interrupt */ +#define USBHS_HSTPIPISR_PERRI (0x1u << 3) /**< \brief (USBHS_HSTPIPISR[10]) Pipe Error Interrupt */ +#define USBHS_HSTPIPISR_NAKEDI (0x1u << 4) /**< \brief (USBHS_HSTPIPISR[10]) NAKed Interrupt */ +#define USBHS_HSTPIPISR_OVERFI (0x1u << 5) /**< \brief (USBHS_HSTPIPISR[10]) Overflow Interrupt */ +#define USBHS_HSTPIPISR_RXSTALLDI (0x1u << 6) /**< \brief (USBHS_HSTPIPISR[10]) Received STALLed Interrupt */ +#define USBHS_HSTPIPISR_SHORTPACKETI (0x1u << 7) /**< \brief (USBHS_HSTPIPISR[10]) Short Packet Interrupt */ +#define USBHS_HSTPIPISR_DTSEQ_Pos 8 +#define USBHS_HSTPIPISR_DTSEQ_Msk (0x3u << USBHS_HSTPIPISR_DTSEQ_Pos) /**< \brief (USBHS_HSTPIPISR[10]) Data Toggle Sequence */ +#define USBHS_HSTPIPISR_DTSEQ_DATA0 (0x0u << 8) /**< \brief (USBHS_HSTPIPISR[10]) Data0 toggle sequence */ +#define USBHS_HSTPIPISR_DTSEQ_DATA1 (0x1u << 8) /**< \brief (USBHS_HSTPIPISR[10]) Data1 toggle sequence */ +#define USBHS_HSTPIPISR_NBUSYBK_Pos 12 +#define USBHS_HSTPIPISR_NBUSYBK_Msk (0x3u << USBHS_HSTPIPISR_NBUSYBK_Pos) /**< \brief (USBHS_HSTPIPISR[10]) Number of Busy Banks */ +#define USBHS_HSTPIPISR_NBUSYBK_0_BUSY (0x0u << 12) /**< \brief (USBHS_HSTPIPISR[10]) 0 busy bank (all banks free) */ +#define USBHS_HSTPIPISR_NBUSYBK_1_BUSY (0x1u << 12) /**< \brief (USBHS_HSTPIPISR[10]) 1 busy bank */ +#define USBHS_HSTPIPISR_NBUSYBK_2_BUSY (0x2u << 12) /**< \brief (USBHS_HSTPIPISR[10]) 2 busy banks */ +#define USBHS_HSTPIPISR_NBUSYBK_3_BUSY (0x3u << 12) /**< \brief (USBHS_HSTPIPISR[10]) 3 busy banks */ +#define USBHS_HSTPIPISR_CURRBK_Pos 14 +#define USBHS_HSTPIPISR_CURRBK_Msk (0x3u << USBHS_HSTPIPISR_CURRBK_Pos) /**< \brief (USBHS_HSTPIPISR[10]) Current Bank */ +#define USBHS_HSTPIPISR_CURRBK_BANK0 (0x0u << 14) /**< \brief (USBHS_HSTPIPISR[10]) Current bank is bank0 */ +#define USBHS_HSTPIPISR_CURRBK_BANK1 (0x1u << 14) /**< \brief (USBHS_HSTPIPISR[10]) Current bank is bank1 */ +#define USBHS_HSTPIPISR_CURRBK_BANK2 (0x2u << 14) /**< \brief (USBHS_HSTPIPISR[10]) Current bank is bank2 */ +#define USBHS_HSTPIPISR_RWALL (0x1u << 16) /**< \brief (USBHS_HSTPIPISR[10]) Read/Write Allowed */ +#define USBHS_HSTPIPISR_CFGOK (0x1u << 18) /**< \brief (USBHS_HSTPIPISR[10]) Configuration OK Status */ +#define USBHS_HSTPIPISR_PBYCT_Pos 20 +#define USBHS_HSTPIPISR_PBYCT_Msk (0x7ffu << USBHS_HSTPIPISR_PBYCT_Pos) /**< \brief (USBHS_HSTPIPISR[10]) Pipe Byte Count */ +#define USBHS_HSTPIPISR_UNDERFI (0x1u << 2) /**< \brief (USBHS_HSTPIPISR[10]) Underflow Interrupt */ +#define USBHS_HSTPIPISR_CRCERRI (0x1u << 6) /**< \brief (USBHS_HSTPIPISR[10]) CRC Error Interrupt */ +/* -------- USBHS_HSTPIPICR[10] : (USBHS Offset: 0x560) Host Pipe Clear Register (n = 0) -------- */ +#define USBHS_HSTPIPICR_RXINIC (0x1u << 0) /**< \brief (USBHS_HSTPIPICR[10]) Received IN Data Interrupt Clear */ +#define USBHS_HSTPIPICR_TXOUTIC (0x1u << 1) /**< \brief (USBHS_HSTPIPICR[10]) Transmitted OUT Data Interrupt Clear */ +#define USBHS_HSTPIPICR_TXSTPIC (0x1u << 2) /**< \brief (USBHS_HSTPIPICR[10]) Transmitted SETUP Interrupt Clear */ +#define USBHS_HSTPIPICR_NAKEDIC (0x1u << 4) /**< \brief (USBHS_HSTPIPICR[10]) NAKed Interrupt Clear */ +#define USBHS_HSTPIPICR_OVERFIC (0x1u << 5) /**< \brief (USBHS_HSTPIPICR[10]) Overflow Interrupt Clear */ +#define USBHS_HSTPIPICR_RXSTALLDIC (0x1u << 6) /**< \brief (USBHS_HSTPIPICR[10]) Received STALLed Interrupt Clear */ +#define USBHS_HSTPIPICR_SHORTPACKETIC (0x1u << 7) /**< \brief (USBHS_HSTPIPICR[10]) Short Packet Interrupt Clear */ +#define USBHS_HSTPIPICR_UNDERFIC (0x1u << 2) /**< \brief (USBHS_HSTPIPICR[10]) Underflow Interrupt Clear */ +#define USBHS_HSTPIPICR_CRCERRIC (0x1u << 6) /**< \brief (USBHS_HSTPIPICR[10]) CRC Error Interrupt Clear */ +/* -------- USBHS_HSTPIPIFR[10] : (USBHS Offset: 0x590) Host Pipe Set Register (n = 0) -------- */ +#define USBHS_HSTPIPIFR_RXINIS (0x1u << 0) /**< \brief (USBHS_HSTPIPIFR[10]) Received IN Data Interrupt Set */ +#define USBHS_HSTPIPIFR_TXOUTIS (0x1u << 1) /**< \brief (USBHS_HSTPIPIFR[10]) Transmitted OUT Data Interrupt Set */ +#define USBHS_HSTPIPIFR_TXSTPIS (0x1u << 2) /**< \brief (USBHS_HSTPIPIFR[10]) Transmitted SETUP Interrupt Set */ +#define USBHS_HSTPIPIFR_PERRIS (0x1u << 3) /**< \brief (USBHS_HSTPIPIFR[10]) Pipe Error Interrupt Set */ +#define USBHS_HSTPIPIFR_NAKEDIS (0x1u << 4) /**< \brief (USBHS_HSTPIPIFR[10]) NAKed Interrupt Set */ +#define USBHS_HSTPIPIFR_OVERFIS (0x1u << 5) /**< \brief (USBHS_HSTPIPIFR[10]) Overflow Interrupt Set */ +#define USBHS_HSTPIPIFR_RXSTALLDIS (0x1u << 6) /**< \brief (USBHS_HSTPIPIFR[10]) Received STALLed Interrupt Set */ +#define USBHS_HSTPIPIFR_SHORTPACKETIS (0x1u << 7) /**< \brief (USBHS_HSTPIPIFR[10]) Short Packet Interrupt Set */ +#define USBHS_HSTPIPIFR_NBUSYBKS (0x1u << 12) /**< \brief (USBHS_HSTPIPIFR[10]) Number of Busy Banks Set */ +#define USBHS_HSTPIPIFR_UNDERFIS (0x1u << 2) /**< \brief (USBHS_HSTPIPIFR[10]) Underflow Interrupt Set */ +#define USBHS_HSTPIPIFR_CRCERRIS (0x1u << 6) /**< \brief (USBHS_HSTPIPIFR[10]) CRC Error Interrupt Set */ +/* -------- USBHS_HSTPIPIMR[10] : (USBHS Offset: 0x5C0) Host Pipe Mask Register (n = 0) -------- */ +#define USBHS_HSTPIPIMR_RXINE (0x1u << 0) /**< \brief (USBHS_HSTPIPIMR[10]) Received IN Data Interrupt Enable */ +#define USBHS_HSTPIPIMR_TXOUTE (0x1u << 1) /**< \brief (USBHS_HSTPIPIMR[10]) Transmitted OUT Data Interrupt Enable */ +#define USBHS_HSTPIPIMR_TXSTPE (0x1u << 2) /**< \brief (USBHS_HSTPIPIMR[10]) Transmitted SETUP Interrupt Enable */ +#define USBHS_HSTPIPIMR_PERRE (0x1u << 3) /**< \brief (USBHS_HSTPIPIMR[10]) Pipe Error Interrupt Enable */ +#define USBHS_HSTPIPIMR_NAKEDE (0x1u << 4) /**< \brief (USBHS_HSTPIPIMR[10]) NAKed Interrupt Enable */ +#define USBHS_HSTPIPIMR_OVERFIE (0x1u << 5) /**< \brief (USBHS_HSTPIPIMR[10]) Overflow Interrupt Enable */ +#define USBHS_HSTPIPIMR_RXSTALLDE (0x1u << 6) /**< \brief (USBHS_HSTPIPIMR[10]) Received STALLed Interrupt Enable */ +#define USBHS_HSTPIPIMR_SHORTPACKETIE (0x1u << 7) /**< \brief (USBHS_HSTPIPIMR[10]) Short Packet Interrupt Enable */ +#define USBHS_HSTPIPIMR_NBUSYBKE (0x1u << 12) /**< \brief (USBHS_HSTPIPIMR[10]) Number of Busy Banks Interrupt Enable */ +#define USBHS_HSTPIPIMR_FIFOCON (0x1u << 14) /**< \brief (USBHS_HSTPIPIMR[10]) FIFO Control */ +#define USBHS_HSTPIPIMR_PDISHDMA (0x1u << 16) /**< \brief (USBHS_HSTPIPIMR[10]) Pipe Interrupts Disable HDMA Request Enable */ +#define USBHS_HSTPIPIMR_PFREEZE (0x1u << 17) /**< \brief (USBHS_HSTPIPIMR[10]) Pipe Freeze */ +#define USBHS_HSTPIPIMR_RSTDT (0x1u << 18) /**< \brief (USBHS_HSTPIPIMR[10]) Reset Data Toggle */ +#define USBHS_HSTPIPIMR_UNDERFIE (0x1u << 2) /**< \brief (USBHS_HSTPIPIMR[10]) Underflow Interrupt Enable */ +#define USBHS_HSTPIPIMR_CRCERRE (0x1u << 6) /**< \brief (USBHS_HSTPIPIMR[10]) CRC Error Interrupt Enable */ +/* -------- USBHS_HSTPIPIER[10] : (USBHS Offset: 0x5F0) Host Pipe Enable Register (n = 0) -------- */ +#define USBHS_HSTPIPIER_RXINES (0x1u << 0) /**< \brief (USBHS_HSTPIPIER[10]) Received IN Data Interrupt Enable */ +#define USBHS_HSTPIPIER_TXOUTES (0x1u << 1) /**< \brief (USBHS_HSTPIPIER[10]) Transmitted OUT Data Interrupt Enable */ +#define USBHS_HSTPIPIER_TXSTPES (0x1u << 2) /**< \brief (USBHS_HSTPIPIER[10]) Transmitted SETUP Interrupt Enable */ +#define USBHS_HSTPIPIER_PERRES (0x1u << 3) /**< \brief (USBHS_HSTPIPIER[10]) Pipe Error Interrupt Enable */ +#define USBHS_HSTPIPIER_NAKEDES (0x1u << 4) /**< \brief (USBHS_HSTPIPIER[10]) NAKed Interrupt Enable */ +#define USBHS_HSTPIPIER_OVERFIES (0x1u << 5) /**< \brief (USBHS_HSTPIPIER[10]) Overflow Interrupt Enable */ +#define USBHS_HSTPIPIER_RXSTALLDES (0x1u << 6) /**< \brief (USBHS_HSTPIPIER[10]) Received STALLed Interrupt Enable */ +#define USBHS_HSTPIPIER_SHORTPACKETIES (0x1u << 7) /**< \brief (USBHS_HSTPIPIER[10]) Short Packet Interrupt Enable */ +#define USBHS_HSTPIPIER_NBUSYBKES (0x1u << 12) /**< \brief (USBHS_HSTPIPIER[10]) Number of Busy Banks Enable */ +#define USBHS_HSTPIPIER_PDISHDMAS (0x1u << 16) /**< \brief (USBHS_HSTPIPIER[10]) Pipe Interrupts Disable HDMA Request Enable */ +#define USBHS_HSTPIPIER_PFREEZES (0x1u << 17) /**< \brief (USBHS_HSTPIPIER[10]) Pipe Freeze Enable */ +#define USBHS_HSTPIPIER_RSTDTS (0x1u << 18) /**< \brief (USBHS_HSTPIPIER[10]) Reset Data Toggle Enable */ +#define USBHS_HSTPIPIER_UNDERFIES (0x1u << 2) /**< \brief (USBHS_HSTPIPIER[10]) Underflow Interrupt Enable */ +#define USBHS_HSTPIPIER_CRCERRES (0x1u << 6) /**< \brief (USBHS_HSTPIPIER[10]) CRC Error Interrupt Enable */ +/* -------- USBHS_HSTPIPIDR[10] : (USBHS Offset: 0x620) Host Pipe Disable Register (n = 0) -------- */ +#define USBHS_HSTPIPIDR_RXINEC (0x1u << 0) /**< \brief (USBHS_HSTPIPIDR[10]) Received IN Data Interrupt Disable */ +#define USBHS_HSTPIPIDR_TXOUTEC (0x1u << 1) /**< \brief (USBHS_HSTPIPIDR[10]) Transmitted OUT Data Interrupt Disable */ +#define USBHS_HSTPIPIDR_TXSTPEC (0x1u << 2) /**< \brief (USBHS_HSTPIPIDR[10]) Transmitted SETUP Interrupt Disable */ +#define USBHS_HSTPIPIDR_PERREC (0x1u << 3) /**< \brief (USBHS_HSTPIPIDR[10]) Pipe Error Interrupt Disable */ +#define USBHS_HSTPIPIDR_NAKEDEC (0x1u << 4) /**< \brief (USBHS_HSTPIPIDR[10]) NAKed Interrupt Disable */ +#define USBHS_HSTPIPIDR_OVERFIEC (0x1u << 5) /**< \brief (USBHS_HSTPIPIDR[10]) Overflow Interrupt Disable */ +#define USBHS_HSTPIPIDR_RXSTALLDEC (0x1u << 6) /**< \brief (USBHS_HSTPIPIDR[10]) Received STALLed Interrupt Disable */ +#define USBHS_HSTPIPIDR_SHORTPACKETIEC (0x1u << 7) /**< \brief (USBHS_HSTPIPIDR[10]) Short Packet Interrupt Disable */ +#define USBHS_HSTPIPIDR_NBUSYBKEC (0x1u << 12) /**< \brief (USBHS_HSTPIPIDR[10]) Number of Busy Banks Disable */ +#define USBHS_HSTPIPIDR_FIFOCONC (0x1u << 14) /**< \brief (USBHS_HSTPIPIDR[10]) FIFO Control Disable */ +#define USBHS_HSTPIPIDR_PDISHDMAC (0x1u << 16) /**< \brief (USBHS_HSTPIPIDR[10]) Pipe Interrupts Disable HDMA Request Disable */ +#define USBHS_HSTPIPIDR_PFREEZEC (0x1u << 17) /**< \brief (USBHS_HSTPIPIDR[10]) Pipe Freeze Disable */ +#define USBHS_HSTPIPIDR_UNDERFIEC (0x1u << 2) /**< \brief (USBHS_HSTPIPIDR[10]) Underflow Interrupt Disable */ +#define USBHS_HSTPIPIDR_CRCERREC (0x1u << 6) /**< \brief (USBHS_HSTPIPIDR[10]) CRC Error Interrupt Disable */ +/* -------- USBHS_HSTPIPINRQ[10] : (USBHS Offset: 0x650) Host Pipe IN Request Register (n = 0) -------- */ +#define USBHS_HSTPIPINRQ_INRQ_Pos 0 +#define USBHS_HSTPIPINRQ_INRQ_Msk (0xffu << USBHS_HSTPIPINRQ_INRQ_Pos) /**< \brief (USBHS_HSTPIPINRQ[10]) IN Request Number before Freeze */ +#define USBHS_HSTPIPINRQ_INRQ(value) ((USBHS_HSTPIPINRQ_INRQ_Msk & ((value) << USBHS_HSTPIPINRQ_INRQ_Pos))) +#define USBHS_HSTPIPINRQ_INMODE (0x1u << 8) /**< \brief (USBHS_HSTPIPINRQ[10]) IN Request Mode */ +/* -------- USBHS_HSTPIPERR[10] : (USBHS Offset: 0x680) Host Pipe Error Register (n = 0) -------- */ +#define USBHS_HSTPIPERR_DATATGL (0x1u << 0) /**< \brief (USBHS_HSTPIPERR[10]) Data Toggle Error */ +#define USBHS_HSTPIPERR_DATAPID (0x1u << 1) /**< \brief (USBHS_HSTPIPERR[10]) Data PID Error */ +#define USBHS_HSTPIPERR_PID (0x1u << 2) /**< \brief (USBHS_HSTPIPERR[10]) Data PID Error */ +#define USBHS_HSTPIPERR_TIMEOUT (0x1u << 3) /**< \brief (USBHS_HSTPIPERR[10]) Time-Out Error */ +#define USBHS_HSTPIPERR_CRC16 (0x1u << 4) /**< \brief (USBHS_HSTPIPERR[10]) CRC16 Error */ +#define USBHS_HSTPIPERR_COUNTER_Pos 5 +#define USBHS_HSTPIPERR_COUNTER_Msk (0x3u << USBHS_HSTPIPERR_COUNTER_Pos) /**< \brief (USBHS_HSTPIPERR[10]) Error Counter */ +#define USBHS_HSTPIPERR_COUNTER(value) ((USBHS_HSTPIPERR_COUNTER_Msk & ((value) << USBHS_HSTPIPERR_COUNTER_Pos))) +/* -------- USBHS_HSTDMANXTDSC : (USBHS Offset: N/A) Host DMA Channel Next Descriptor Address Register -------- */ +#define USBHS_HSTDMANXTDSC_NXT_DSC_ADD_Pos 0 +#define USBHS_HSTDMANXTDSC_NXT_DSC_ADD_Msk (0xffffffffu << USBHS_HSTDMANXTDSC_NXT_DSC_ADD_Pos) /**< \brief (USBHS_HSTDMANXTDSC) Next Descriptor Address */ +#define USBHS_HSTDMANXTDSC_NXT_DSC_ADD(value) ((USBHS_HSTDMANXTDSC_NXT_DSC_ADD_Msk & ((value) << USBHS_HSTDMANXTDSC_NXT_DSC_ADD_Pos))) +/* -------- USBHS_HSTDMAADDRESS : (USBHS Offset: N/A) Host DMA Channel Address Register -------- */ +#define USBHS_HSTDMAADDRESS_BUFF_ADD_Pos 0 +#define USBHS_HSTDMAADDRESS_BUFF_ADD_Msk (0xffffffffu << USBHS_HSTDMAADDRESS_BUFF_ADD_Pos) /**< \brief (USBHS_HSTDMAADDRESS) Buffer Address */ +#define USBHS_HSTDMAADDRESS_BUFF_ADD(value) ((USBHS_HSTDMAADDRESS_BUFF_ADD_Msk & ((value) << USBHS_HSTDMAADDRESS_BUFF_ADD_Pos))) +/* -------- USBHS_HSTDMACONTROL : (USBHS Offset: N/A) Host DMA Channel Control Register -------- */ +#define USBHS_HSTDMACONTROL_CHANN_ENB (0x1u << 0) /**< \brief (USBHS_HSTDMACONTROL) Channel Enable Command */ +#define USBHS_HSTDMACONTROL_LDNXT_DSC (0x1u << 1) /**< \brief (USBHS_HSTDMACONTROL) Load Next Channel Transfer Descriptor Enable Command */ +#define USBHS_HSTDMACONTROL_END_TR_EN (0x1u << 2) /**< \brief (USBHS_HSTDMACONTROL) End of Transfer Enable Control (OUT transfers only) */ +#define USBHS_HSTDMACONTROL_END_B_EN (0x1u << 3) /**< \brief (USBHS_HSTDMACONTROL) End of Buffer Enable Control */ +#define USBHS_HSTDMACONTROL_END_TR_IT (0x1u << 4) /**< \brief (USBHS_HSTDMACONTROL) End of Transfer Interrupt Enable */ +#define USBHS_HSTDMACONTROL_END_BUFFIT (0x1u << 5) /**< \brief (USBHS_HSTDMACONTROL) End of Buffer Interrupt Enable */ +#define USBHS_HSTDMACONTROL_DESC_LD_IT (0x1u << 6) /**< \brief (USBHS_HSTDMACONTROL) Descriptor Loaded Interrupt Enable */ +#define USBHS_HSTDMACONTROL_BURST_LCK (0x1u << 7) /**< \brief (USBHS_HSTDMACONTROL) Burst Lock Enable */ +#define USBHS_HSTDMACONTROL_BUFF_LENGTH_Pos 16 +#define USBHS_HSTDMACONTROL_BUFF_LENGTH_Msk (0xffffu << USBHS_HSTDMACONTROL_BUFF_LENGTH_Pos) /**< \brief (USBHS_HSTDMACONTROL) Buffer Byte Length (Write-only) */ +#define USBHS_HSTDMACONTROL_BUFF_LENGTH(value) ((USBHS_HSTDMACONTROL_BUFF_LENGTH_Msk & ((value) << USBHS_HSTDMACONTROL_BUFF_LENGTH_Pos))) +/* -------- USBHS_HSTDMASTATUS : (USBHS Offset: N/A) Host DMA Channel Status Register -------- */ +#define USBHS_HSTDMASTATUS_CHANN_ENB (0x1u << 0) /**< \brief (USBHS_HSTDMASTATUS) Channel Enable Status */ +#define USBHS_HSTDMASTATUS_CHANN_ACT (0x1u << 1) /**< \brief (USBHS_HSTDMASTATUS) Channel Active Status */ +#define USBHS_HSTDMASTATUS_END_TR_ST (0x1u << 4) /**< \brief (USBHS_HSTDMASTATUS) End of Channel Transfer Status */ +#define USBHS_HSTDMASTATUS_END_BF_ST (0x1u << 5) /**< \brief (USBHS_HSTDMASTATUS) End of Channel Buffer Status */ +#define USBHS_HSTDMASTATUS_DESC_LDST (0x1u << 6) /**< \brief (USBHS_HSTDMASTATUS) Descriptor Loaded Status */ +#define USBHS_HSTDMASTATUS_BUFF_COUNT_Pos 16 +#define USBHS_HSTDMASTATUS_BUFF_COUNT_Msk (0xffffu << USBHS_HSTDMASTATUS_BUFF_COUNT_Pos) /**< \brief (USBHS_HSTDMASTATUS) Buffer Byte Count */ +#define USBHS_HSTDMASTATUS_BUFF_COUNT(value) ((USBHS_HSTDMASTATUS_BUFF_COUNT_Msk & ((value) << USBHS_HSTDMASTATUS_BUFF_COUNT_Pos))) +/* -------- USBHS_CTRL : (USBHS Offset: 0x0800) General Control Register -------- */ +#define USBHS_CTRL_RDERRE (0x1u << 4) /**< \brief (USBHS_CTRL) Remote Device Connection Error Interrupt Enable */ +#define USBHS_CTRL_VBUSHWC (0x1u << 8) /**< \brief (USBHS_CTRL) VBUS Hardware Control */ +#define USBHS_CTRL_FRZCLK (0x1u << 14) /**< \brief (USBHS_CTRL) Freeze USB Clock */ +#define USBHS_CTRL_USBE (0x1u << 15) /**< \brief (USBHS_CTRL) USBHS Enable */ +#define USBHS_CTRL_UIMOD (0x1u << 25) /**< \brief (USBHS_CTRL) USBHS Mode */ +#define USBHS_CTRL_UIMOD_HOST (0x0u << 25) /**< \brief (USBHS_CTRL) The module is in USB Host mode. */ +#define USBHS_CTRL_UIMOD_DEVICE (0x1u << 25) /**< \brief (USBHS_CTRL) The module is in USB Device mode. */ +/* -------- USBHS_SR : (USBHS Offset: 0x0804) General Status Register -------- */ +#define USBHS_SR_RDERRI (0x1u << 4) /**< \brief (USBHS_SR) Remote Device Connection Error Interrupt (Host mode only) */ +#define USBHS_SR_VBUSRQ (0x1u << 9) /**< \brief (USBHS_SR) VBus Request (Host mode only) */ +#define USBHS_SR_SPEED_Pos 12 +#define USBHS_SR_SPEED_Msk (0x3u << USBHS_SR_SPEED_Pos) /**< \brief (USBHS_SR) Speed Status (Device mode only) */ +#define USBHS_SR_SPEED_FULL_SPEED (0x0u << 12) /**< \brief (USBHS_SR) Full-Speed mode */ +#define USBHS_SR_SPEED_HIGH_SPEED (0x1u << 12) /**< \brief (USBHS_SR) High-Speed mode */ +#define USBHS_SR_SPEED_LOW_SPEED (0x2u << 12) /**< \brief (USBHS_SR) Low-Speed mode */ +#define USBHS_SR_CLKUSABLE (0x1u << 14) /**< \brief (USBHS_SR) UTMI Clock Usable */ +/* -------- USBHS_SCR : (USBHS Offset: 0x0808) General Status Clear Register -------- */ +#define USBHS_SCR_RDERRIC (0x1u << 4) /**< \brief (USBHS_SCR) Remote Device Connection Error Interrupt Clear */ +#define USBHS_SCR_VBUSRQC (0x1u << 9) /**< \brief (USBHS_SCR) VBus Request Clear */ +/* -------- USBHS_SFR : (USBHS Offset: 0x080C) General Status Set Register -------- */ +#define USBHS_SFR_RDERRIS (0x1u << 4) /**< \brief (USBHS_SFR) Remote Device Connection Error Interrupt Set */ +#define USBHS_SFR_VBUSRQS (0x1u << 9) /**< \brief (USBHS_SFR) VBus Request Set */ +/* -------- USBHS_TSTA1 : (USBHS Offset: 0x0810) General Test A1 Register -------- */ +#define USBHS_TSTA1_CounterA_Pos 0 +#define USBHS_TSTA1_CounterA_Msk (0x7fffu << USBHS_TSTA1_CounterA_Pos) /**< \brief (USBHS_TSTA1) Counter A */ +#define USBHS_TSTA1_CounterA(value) ((USBHS_TSTA1_CounterA_Msk & ((value) << USBHS_TSTA1_CounterA_Pos))) +#define USBHS_TSTA1_LoadCntA (0x1u << 15) /**< \brief (USBHS_TSTA1) Load CounterA */ +#define USBHS_TSTA1_CounterB_Pos 16 +#define USBHS_TSTA1_CounterB_Msk (0x3fu << USBHS_TSTA1_CounterB_Pos) /**< \brief (USBHS_TSTA1) Counter B */ +#define USBHS_TSTA1_CounterB(value) ((USBHS_TSTA1_CounterB_Msk & ((value) << USBHS_TSTA1_CounterB_Pos))) +#define USBHS_TSTA1_LoadCntB (0x1u << 23) /**< \brief (USBHS_TSTA1) Load CounterB */ +#define USBHS_TSTA1_SOFCntMa1_Pos 24 +#define USBHS_TSTA1_SOFCntMa1_Msk (0x7fu << USBHS_TSTA1_SOFCntMa1_Pos) /**< \brief (USBHS_TSTA1) SOF Counter Max */ +#define USBHS_TSTA1_SOFCntMa1(value) ((USBHS_TSTA1_SOFCntMa1_Msk & ((value) << USBHS_TSTA1_SOFCntMa1_Pos))) +#define USBHS_TSTA1_LoadSOFCnt (0x1u << 31) /**< \brief (USBHS_TSTA1) Load SOF Counter */ +/* -------- USBHS_TSTA2 : (USBHS Offset: 0x0814) General Test A2 Register -------- */ +#define USBHS_TSTA2_FullDetachEn (0x1u << 0) /**< \brief (USBHS_TSTA2) Full Detach Enable */ +#define USBHS_TSTA2_HSSerialMode (0x1u << 1) /**< \brief (USBHS_TSTA2) HS Serial Mode */ +#define USBHS_TSTA2_LoopBackMode (0x1u << 2) /**< \brief (USBHS_TSTA2) Loop-back Mode */ +#define USBHS_TSTA2_DisableGatedClock (0x1u << 3) /**< \brief (USBHS_TSTA2) Disable Gated Clock */ +#define USBHS_TSTA2_ForceSuspendMTo1 (0x1u << 4) /**< \brief (USBHS_TSTA2) Force SuspendM to 1 */ +#define USBHS_TSTA2_ByPassDpll (0x1u << 5) /**< \brief (USBHS_TSTA2) Bypass DPLL */ +#define USBHS_TSTA2_HostHSDisconnectDisable (0x1u << 6) /**< \brief (USBHS_TSTA2) Host HS Disconnect Disable */ +#define USBHS_TSTA2_ForceHSRst_50ms (0x1u << 7) /**< \brief (USBHS_TSTA2) Force HS Reset to 50 ms */ +#define USBHS_TSTA2_RemovePUWhenTX (0x1u << 9) /**< \brief (USBHS_TSTA2) Remove Pull-up When TX */ +/* -------- USBHS_VERSION : (USBHS Offset: 0x0818) General Version Register -------- */ +#define USBHS_VERSION_VERSION_Pos 0 +#define USBHS_VERSION_VERSION_Msk (0xfffu << USBHS_VERSION_VERSION_Pos) /**< \brief (USBHS_VERSION) Version Number */ +#define USBHS_VERSION_MFN_Pos 16 +#define USBHS_VERSION_MFN_Msk (0xfu << USBHS_VERSION_MFN_Pos) /**< \brief (USBHS_VERSION) Metal Fix Number */ +/* -------- USBHS_FSM : (USBHS Offset: 0x082C) General Finite State Machine Register -------- */ +#define USBHS_FSM_DRDSTATE_Pos 0 +#define USBHS_FSM_DRDSTATE_Msk (0xfu << USBHS_FSM_DRDSTATE_Pos) /**< \brief (USBHS_FSM) Dual Role Device State */ +#define USBHS_FSM_DRDSTATE_A_IDLESTATE (0x0u << 0) /**< \brief (USBHS_FSM) This is the start state for A-devices (when the ID pin is 0) */ +#define USBHS_FSM_DRDSTATE_A_WAIT_VRISE (0x1u << 0) /**< \brief (USBHS_FSM) In this state, the A-device waits for the voltage on VBus to rise above the A-device VBus Valid threshold (4.4 V). */ +#define USBHS_FSM_DRDSTATE_A_WAIT_BCON (0x2u << 0) /**< \brief (USBHS_FSM) In this state, the A-device waits for the B-device to signal a connection. */ +#define USBHS_FSM_DRDSTATE_A_HOST (0x3u << 0) /**< \brief (USBHS_FSM) In this state, the A-device that operates in Host mode is operational. */ +#define USBHS_FSM_DRDSTATE_A_SUSPEND (0x4u << 0) /**< \brief (USBHS_FSM) The A-device operating as a host is in the Suspend mode. */ +#define USBHS_FSM_DRDSTATE_A_PERIPHERAL (0x5u << 0) /**< \brief (USBHS_FSM) The A-device operates as a peripheral. */ +#define USBHS_FSM_DRDSTATE_A_WAIT_VFALL (0x6u << 0) /**< \brief (USBHS_FSM) In this state, the A-device waits for the voltage on VBus to drop below the A-device Session Valid threshold (1.4 V). */ +#define USBHS_FSM_DRDSTATE_A_VBUS_ERR (0x7u << 0) /**< \brief (USBHS_FSM) In this state, the A-device waits for recovery of the over-current condition that caused it to enter this state. */ +#define USBHS_FSM_DRDSTATE_A_WAIT_DISCHARGE (0x8u << 0) /**< \brief (USBHS_FSM) In this state, the A-device waits for the data USB line to discharge (100 us). */ +#define USBHS_FSM_DRDSTATE_B_IDLE (0x9u << 0) /**< \brief (USBHS_FSM) This is the start state for B-device (when the ID pin is 1). */ +#define USBHS_FSM_DRDSTATE_B_PERIPHERAL (0xAu << 0) /**< \brief (USBHS_FSM) In this state, the B-device acts as the peripheral. */ +#define USBHS_FSM_DRDSTATE_B_WAIT_BEGIN_HNP (0xBu << 0) /**< \brief (USBHS_FSM) In this state, the B-device is in Suspend mode and waits until 3 ms before initiating the HNP protocol if requested. */ +#define USBHS_FSM_DRDSTATE_B_WAIT_DISCHARGE (0xCu << 0) /**< \brief (USBHS_FSM) In this state, the B-device waits for the data USB line to discharge (100 us)) before becoming Host. */ +#define USBHS_FSM_DRDSTATE_B_WAIT_ACON (0xDu << 0) /**< \brief (USBHS_FSM) In this state, the B-device waits for the A-device to signal a connect before becoming B-Host. */ +#define USBHS_FSM_DRDSTATE_B_HOST (0xEu << 0) /**< \brief (USBHS_FSM) In this state, the B-device acts as the Host. */ +#define USBHS_FSM_DRDSTATE_B_SRP_INIT (0xFu << 0) /**< \brief (USBHS_FSM) In this state, the B-device attempts to start a session using the SRP protocol. */ + +/*@}*/ + + +#endif /* _SAME70_USBHS_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h new file mode 100644 index 00000000..89fcd725 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h @@ -0,0 +1,68 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UTMI_COMPONENT_ +#define _SAME70_UTMI_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR USB Transmitter Interface Macrocell */ +/* ============================================================================= */ +/** \addtogroup SAME70_UTMI USB Transmitter Interface Macrocell */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Utmi hardware registers */ +typedef struct { + __I uint32_t Reserved1[4]; + __IO uint32_t UTMI_OHCIICR; /**< \brief (Utmi Offset: 0x10) OHCI Interrupt Configuration Register */ + __I uint32_t Reserved2[7]; + __IO uint32_t UTMI_CKTRIM; /**< \brief (Utmi Offset: 0x30) UTMI Clock Trimming Register */ +} Utmi; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- UTMI_OHCIICR : (UTMI Offset: 0x10) OHCI Interrupt Configuration Register -------- */ +#define UTMI_OHCIICR_RES0 (0x1u << 0) /**< \brief (UTMI_OHCIICR) USB PORTx Reset */ +#define UTMI_OHCIICR_ARIE (0x1u << 4) /**< \brief (UTMI_OHCIICR) OHCI Asynchronous Resume Interrupt Enable */ +#define UTMI_OHCIICR_APPSTART (0x1u << 5) /**< \brief (UTMI_OHCIICR) Reserved */ +#define UTMI_OHCIICR_UDPPUDIS (0x1u << 23) /**< \brief (UTMI_OHCIICR) USB Device Pull-up Disable */ +/* -------- UTMI_CKTRIM : (UTMI Offset: 0x30) UTMI Clock Trimming Register -------- */ +#define UTMI_CKTRIM_FREQ_Pos 0 +#define UTMI_CKTRIM_FREQ_Msk (0x3u << UTMI_CKTRIM_FREQ_Pos) /**< \brief (UTMI_CKTRIM) UTMI Reference Clock Frequency */ +#define UTMI_CKTRIM_FREQ(value) ((UTMI_CKTRIM_FREQ_Msk & ((value) << UTMI_CKTRIM_FREQ_Pos))) +#define UTMI_CKTRIM_FREQ_XTAL12 (0x0u << 0) /**< \brief (UTMI_CKTRIM) 12 MHz reference clock */ +#define UTMI_CKTRIM_FREQ_XTAL16 (0x1u << 0) /**< \brief (UTMI_CKTRIM) 16 MHz reference clock */ + +/*@}*/ + + +#endif /* _SAME70_UTMI_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h new file mode 100644 index 00000000..655c9934 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h @@ -0,0 +1,77 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_WDT_COMPONENT_ +#define _SAME70_WDT_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Watchdog Timer */ +/* ============================================================================= */ +/** \addtogroup SAME70_WDT Watchdog Timer */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief Wdt hardware registers */ +typedef struct { + __O uint32_t WDT_CR; /**< \brief (Wdt Offset: 0x00) Control Register */ + __IO uint32_t WDT_MR; /**< \brief (Wdt Offset: 0x04) Mode Register */ + __I uint32_t WDT_SR; /**< \brief (Wdt Offset: 0x08) Status Register */ +} Wdt; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- WDT_CR : (WDT Offset: 0x00) Control Register -------- */ +#define WDT_CR_WDRSTT (0x1u << 0) /**< \brief (WDT_CR) Watchdog Restart */ +#define WDT_CR_KEY_Pos 24 +#define WDT_CR_KEY_Msk (0xffu << WDT_CR_KEY_Pos) /**< \brief (WDT_CR) Password */ +#define WDT_CR_KEY(value) ((WDT_CR_KEY_Msk & ((value) << WDT_CR_KEY_Pos))) +#define WDT_CR_KEY_PASSWD (0xA5u << 24) /**< \brief (WDT_CR) Writing any other value in this field aborts the write operation. */ +/* -------- WDT_MR : (WDT Offset: 0x04) Mode Register -------- */ +#define WDT_MR_WDV_Pos 0 +#define WDT_MR_WDV_Msk (0xfffu << WDT_MR_WDV_Pos) /**< \brief (WDT_MR) Watchdog Counter Value */ +#define WDT_MR_WDV(value) ((WDT_MR_WDV_Msk & ((value) << WDT_MR_WDV_Pos))) +#define WDT_MR_WDFIEN (0x1u << 12) /**< \brief (WDT_MR) Watchdog Fault Interrupt Enable */ +#define WDT_MR_WDRSTEN (0x1u << 13) /**< \brief (WDT_MR) Watchdog Reset Enable */ +#define WDT_MR_WDDIS (0x1u << 15) /**< \brief (WDT_MR) Watchdog Disable */ +#define WDT_MR_WDD_Pos 16 +#define WDT_MR_WDD_Msk (0xfffu << WDT_MR_WDD_Pos) /**< \brief (WDT_MR) Watchdog Delta Value */ +#define WDT_MR_WDD(value) ((WDT_MR_WDD_Msk & ((value) << WDT_MR_WDD_Pos))) +#define WDT_MR_WDDBGHLT (0x1u << 28) /**< \brief (WDT_MR) Watchdog Debug Halt */ +#define WDT_MR_WDIDLEHLT (0x1u << 29) /**< \brief (WDT_MR) Watchdog Idle Halt */ +/* -------- WDT_SR : (WDT Offset: 0x08) Status Register -------- */ +#define WDT_SR_WDUNF (0x1u << 0) /**< \brief (WDT_SR) Watchdog Underflow (cleared on read) */ +#define WDT_SR_WDERR (0x1u << 1) /**< \brief (WDT_SR) Watchdog Error (cleared on read) */ + +/*@}*/ + + +#endif /* _SAME70_WDT_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h new file mode 100644 index 00000000..9c8bd211 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h @@ -0,0 +1,633 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_XDMAC_COMPONENT_ +#define _SAME70_XDMAC_COMPONENT_ + +/* ============================================================================= */ +/** SOFTWARE API DEFINITION FOR Extensible DMA Controller */ +/* ============================================================================= */ +/** \addtogroup SAME70_XDMAC Extensible DMA Controller */ +/*@{*/ + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +/** \brief XdmacChid hardware registers */ +typedef struct { + __O uint32_t XDMAC_CIE; /**< \brief (XdmacChid Offset: 0x0) Channel Interrupt Enable Register */ + __O uint32_t XDMAC_CID; /**< \brief (XdmacChid Offset: 0x4) Channel Interrupt Disable Register */ + __I uint32_t XDMAC_CIM; /**< \brief (XdmacChid Offset: 0x8) Channel Interrupt Mask Register */ + __I uint32_t XDMAC_CIS; /**< \brief (XdmacChid Offset: 0xC) Channel Interrupt Status Register */ + __IO uint32_t XDMAC_CSA; /**< \brief (XdmacChid Offset: 0x10) Channel Source Address Register */ + __IO uint32_t XDMAC_CDA; /**< \brief (XdmacChid Offset: 0x14) Channel Destination Address Register */ + __IO uint32_t XDMAC_CNDA; /**< \brief (XdmacChid Offset: 0x18) Channel Next Descriptor Address Register */ + __IO uint32_t XDMAC_CNDC; /**< \brief (XdmacChid Offset: 0x1C) Channel Next Descriptor Control Register */ + __IO uint32_t XDMAC_CUBC; /**< \brief (XdmacChid Offset: 0x20) Channel Microblock Control Register */ + __IO uint32_t XDMAC_CBC; /**< \brief (XdmacChid Offset: 0x24) Channel Block Control Register */ + __IO uint32_t XDMAC_CC; /**< \brief (XdmacChid Offset: 0x28) Channel Configuration Register */ + __IO uint32_t XDMAC_CDS_MSP; /**< \brief (XdmacChid Offset: 0x2C) Channel Data Stride Memory Set Pattern */ + __IO uint32_t XDMAC_CSUS; /**< \brief (XdmacChid Offset: 0x30) Channel Source Microblock Stride */ + __IO uint32_t XDMAC_CDUS; /**< \brief (XdmacChid Offset: 0x34) Channel Destination Microblock Stride */ + __I uint32_t Reserved1[2]; +} XdmacChid; +/** \brief Xdmac hardware registers */ +#define XDMACCHID_NUMBER 24 +typedef struct { + __I uint32_t XDMAC_GTYPE; /**< \brief (Xdmac Offset: 0x00) Global Type Register */ + __IO uint32_t XDMAC_GCFG; /**< \brief (Xdmac Offset: 0x04) Global Configuration Register */ + __IO uint32_t XDMAC_GWAC; /**< \brief (Xdmac Offset: 0x08) Global Weighted Arbiter Configuration Register */ + __O uint32_t XDMAC_GIE; /**< \brief (Xdmac Offset: 0x0C) Global Interrupt Enable Register */ + __O uint32_t XDMAC_GID; /**< \brief (Xdmac Offset: 0x10) Global Interrupt Disable Register */ + __I uint32_t XDMAC_GIM; /**< \brief (Xdmac Offset: 0x14) Global Interrupt Mask Register */ + __I uint32_t XDMAC_GIS; /**< \brief (Xdmac Offset: 0x18) Global Interrupt Status Register */ + __O uint32_t XDMAC_GE; /**< \brief (Xdmac Offset: 0x1C) Global Channel Enable Register */ + __O uint32_t XDMAC_GD; /**< \brief (Xdmac Offset: 0x20) Global Channel Disable Register */ + __I uint32_t XDMAC_GS; /**< \brief (Xdmac Offset: 0x24) Global Channel Status Register */ + __IO uint32_t XDMAC_GRS; /**< \brief (Xdmac Offset: 0x28) Global Channel Read Suspend Register */ + __IO uint32_t XDMAC_GWS; /**< \brief (Xdmac Offset: 0x2C) Global Channel Write Suspend Register */ + __O uint32_t XDMAC_GRWS; /**< \brief (Xdmac Offset: 0x30) Global Channel Read Write Suspend Register */ + __O uint32_t XDMAC_GRWR; /**< \brief (Xdmac Offset: 0x34) Global Channel Read Write Resume Register */ + __O uint32_t XDMAC_GSWR; /**< \brief (Xdmac Offset: 0x38) Global Channel Software Request Register */ + __I uint32_t XDMAC_GSWS; /**< \brief (Xdmac Offset: 0x3C) Global Channel Software Request Status Register */ + __O uint32_t XDMAC_GSWF; /**< \brief (Xdmac Offset: 0x40) Global Channel Software Flush Request Register */ + __I uint32_t Reserved1[3]; + XdmacChid XDMAC_CHID[XDMACCHID_NUMBER]; /**< \brief (Xdmac Offset: 0x50) chid = 0 .. 23 */ + __I uint32_t Reserved2[619]; + __IO uint32_t XDMAC_VERSION; /**< \brief (Xdmac Offset: 0xFFC) XDMAC Version Register */ +} Xdmac; +#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/* -------- XDMAC_GTYPE : (XDMAC Offset: 0x00) Global Type Register -------- */ +#define XDMAC_GTYPE_NB_CH_Pos 0 +#define XDMAC_GTYPE_NB_CH_Msk (0x1fu << XDMAC_GTYPE_NB_CH_Pos) /**< \brief (XDMAC_GTYPE) Number of Channels Minus One */ +#define XDMAC_GTYPE_NB_CH(value) ((XDMAC_GTYPE_NB_CH_Msk & ((value) << XDMAC_GTYPE_NB_CH_Pos))) +#define XDMAC_GTYPE_FIFO_SZ_Pos 5 +#define XDMAC_GTYPE_FIFO_SZ_Msk (0x7ffu << XDMAC_GTYPE_FIFO_SZ_Pos) /**< \brief (XDMAC_GTYPE) Number of Bytes */ +#define XDMAC_GTYPE_FIFO_SZ(value) ((XDMAC_GTYPE_FIFO_SZ_Msk & ((value) << XDMAC_GTYPE_FIFO_SZ_Pos))) +#define XDMAC_GTYPE_NB_REQ_Pos 16 +#define XDMAC_GTYPE_NB_REQ_Msk (0x7fu << XDMAC_GTYPE_NB_REQ_Pos) /**< \brief (XDMAC_GTYPE) Number of Peripheral Requests Minus One */ +#define XDMAC_GTYPE_NB_REQ(value) ((XDMAC_GTYPE_NB_REQ_Msk & ((value) << XDMAC_GTYPE_NB_REQ_Pos))) +/* -------- XDMAC_GCFG : (XDMAC Offset: 0x04) Global Configuration Register -------- */ +#define XDMAC_GCFG_CGDISREG (0x1u << 0) /**< \brief (XDMAC_GCFG) Configuration Registers Clock Gating Disable */ +#define XDMAC_GCFG_CGDISPIPE (0x1u << 1) /**< \brief (XDMAC_GCFG) Pipeline Clock Gating Disable */ +#define XDMAC_GCFG_CGDISFIFO (0x1u << 2) /**< \brief (XDMAC_GCFG) FIFO Clock Gating Disable */ +#define XDMAC_GCFG_CGDISIF (0x1u << 3) /**< \brief (XDMAC_GCFG) Bus Interface Clock Gating Disable */ +#define XDMAC_GCFG_BXKBEN (0x1u << 8) /**< \brief (XDMAC_GCFG) Boundary X Kilo byte Enable */ +/* -------- XDMAC_GWAC : (XDMAC Offset: 0x08) Global Weighted Arbiter Configuration Register -------- */ +#define XDMAC_GWAC_PW0_Pos 0 +#define XDMAC_GWAC_PW0_Msk (0xfu << XDMAC_GWAC_PW0_Pos) /**< \brief (XDMAC_GWAC) Pool Weight 0 */ +#define XDMAC_GWAC_PW0(value) ((XDMAC_GWAC_PW0_Msk & ((value) << XDMAC_GWAC_PW0_Pos))) +#define XDMAC_GWAC_PW1_Pos 4 +#define XDMAC_GWAC_PW1_Msk (0xfu << XDMAC_GWAC_PW1_Pos) /**< \brief (XDMAC_GWAC) Pool Weight 1 */ +#define XDMAC_GWAC_PW1(value) ((XDMAC_GWAC_PW1_Msk & ((value) << XDMAC_GWAC_PW1_Pos))) +#define XDMAC_GWAC_PW2_Pos 8 +#define XDMAC_GWAC_PW2_Msk (0xfu << XDMAC_GWAC_PW2_Pos) /**< \brief (XDMAC_GWAC) Pool Weight 2 */ +#define XDMAC_GWAC_PW2(value) ((XDMAC_GWAC_PW2_Msk & ((value) << XDMAC_GWAC_PW2_Pos))) +#define XDMAC_GWAC_PW3_Pos 12 +#define XDMAC_GWAC_PW3_Msk (0xfu << XDMAC_GWAC_PW3_Pos) /**< \brief (XDMAC_GWAC) Pool Weight 3 */ +#define XDMAC_GWAC_PW3(value) ((XDMAC_GWAC_PW3_Msk & ((value) << XDMAC_GWAC_PW3_Pos))) +/* -------- XDMAC_GIE : (XDMAC Offset: 0x0C) Global Interrupt Enable Register -------- */ +#define XDMAC_GIE_IE0 (0x1u << 0) /**< \brief (XDMAC_GIE) XDMAC Channel 0 Interrupt Enable Bit */ +#define XDMAC_GIE_IE1 (0x1u << 1) /**< \brief (XDMAC_GIE) XDMAC Channel 1 Interrupt Enable Bit */ +#define XDMAC_GIE_IE2 (0x1u << 2) /**< \brief (XDMAC_GIE) XDMAC Channel 2 Interrupt Enable Bit */ +#define XDMAC_GIE_IE3 (0x1u << 3) /**< \brief (XDMAC_GIE) XDMAC Channel 3 Interrupt Enable Bit */ +#define XDMAC_GIE_IE4 (0x1u << 4) /**< \brief (XDMAC_GIE) XDMAC Channel 4 Interrupt Enable Bit */ +#define XDMAC_GIE_IE5 (0x1u << 5) /**< \brief (XDMAC_GIE) XDMAC Channel 5 Interrupt Enable Bit */ +#define XDMAC_GIE_IE6 (0x1u << 6) /**< \brief (XDMAC_GIE) XDMAC Channel 6 Interrupt Enable Bit */ +#define XDMAC_GIE_IE7 (0x1u << 7) /**< \brief (XDMAC_GIE) XDMAC Channel 7 Interrupt Enable Bit */ +#define XDMAC_GIE_IE8 (0x1u << 8) /**< \brief (XDMAC_GIE) XDMAC Channel 8 Interrupt Enable Bit */ +#define XDMAC_GIE_IE9 (0x1u << 9) /**< \brief (XDMAC_GIE) XDMAC Channel 9 Interrupt Enable Bit */ +#define XDMAC_GIE_IE10 (0x1u << 10) /**< \brief (XDMAC_GIE) XDMAC Channel 10 Interrupt Enable Bit */ +#define XDMAC_GIE_IE11 (0x1u << 11) /**< \brief (XDMAC_GIE) XDMAC Channel 11 Interrupt Enable Bit */ +#define XDMAC_GIE_IE12 (0x1u << 12) /**< \brief (XDMAC_GIE) XDMAC Channel 12 Interrupt Enable Bit */ +#define XDMAC_GIE_IE13 (0x1u << 13) /**< \brief (XDMAC_GIE) XDMAC Channel 13 Interrupt Enable Bit */ +#define XDMAC_GIE_IE14 (0x1u << 14) /**< \brief (XDMAC_GIE) XDMAC Channel 14 Interrupt Enable Bit */ +#define XDMAC_GIE_IE15 (0x1u << 15) /**< \brief (XDMAC_GIE) XDMAC Channel 15 Interrupt Enable Bit */ +#define XDMAC_GIE_IE16 (0x1u << 16) /**< \brief (XDMAC_GIE) XDMAC Channel 16 Interrupt Enable Bit */ +#define XDMAC_GIE_IE17 (0x1u << 17) /**< \brief (XDMAC_GIE) XDMAC Channel 17 Interrupt Enable Bit */ +#define XDMAC_GIE_IE18 (0x1u << 18) /**< \brief (XDMAC_GIE) XDMAC Channel 18 Interrupt Enable Bit */ +#define XDMAC_GIE_IE19 (0x1u << 19) /**< \brief (XDMAC_GIE) XDMAC Channel 19 Interrupt Enable Bit */ +#define XDMAC_GIE_IE20 (0x1u << 20) /**< \brief (XDMAC_GIE) XDMAC Channel 20 Interrupt Enable Bit */ +#define XDMAC_GIE_IE21 (0x1u << 21) /**< \brief (XDMAC_GIE) XDMAC Channel 21 Interrupt Enable Bit */ +#define XDMAC_GIE_IE22 (0x1u << 22) /**< \brief (XDMAC_GIE) XDMAC Channel 22 Interrupt Enable Bit */ +#define XDMAC_GIE_IE23 (0x1u << 23) /**< \brief (XDMAC_GIE) XDMAC Channel 23 Interrupt Enable Bit */ +/* -------- XDMAC_GID : (XDMAC Offset: 0x10) Global Interrupt Disable Register -------- */ +#define XDMAC_GID_ID0 (0x1u << 0) /**< \brief (XDMAC_GID) XDMAC Channel 0 Interrupt Disable Bit */ +#define XDMAC_GID_ID1 (0x1u << 1) /**< \brief (XDMAC_GID) XDMAC Channel 1 Interrupt Disable Bit */ +#define XDMAC_GID_ID2 (0x1u << 2) /**< \brief (XDMAC_GID) XDMAC Channel 2 Interrupt Disable Bit */ +#define XDMAC_GID_ID3 (0x1u << 3) /**< \brief (XDMAC_GID) XDMAC Channel 3 Interrupt Disable Bit */ +#define XDMAC_GID_ID4 (0x1u << 4) /**< \brief (XDMAC_GID) XDMAC Channel 4 Interrupt Disable Bit */ +#define XDMAC_GID_ID5 (0x1u << 5) /**< \brief (XDMAC_GID) XDMAC Channel 5 Interrupt Disable Bit */ +#define XDMAC_GID_ID6 (0x1u << 6) /**< \brief (XDMAC_GID) XDMAC Channel 6 Interrupt Disable Bit */ +#define XDMAC_GID_ID7 (0x1u << 7) /**< \brief (XDMAC_GID) XDMAC Channel 7 Interrupt Disable Bit */ +#define XDMAC_GID_ID8 (0x1u << 8) /**< \brief (XDMAC_GID) XDMAC Channel 8 Interrupt Disable Bit */ +#define XDMAC_GID_ID9 (0x1u << 9) /**< \brief (XDMAC_GID) XDMAC Channel 9 Interrupt Disable Bit */ +#define XDMAC_GID_ID10 (0x1u << 10) /**< \brief (XDMAC_GID) XDMAC Channel 10 Interrupt Disable Bit */ +#define XDMAC_GID_ID11 (0x1u << 11) /**< \brief (XDMAC_GID) XDMAC Channel 11 Interrupt Disable Bit */ +#define XDMAC_GID_ID12 (0x1u << 12) /**< \brief (XDMAC_GID) XDMAC Channel 12 Interrupt Disable Bit */ +#define XDMAC_GID_ID13 (0x1u << 13) /**< \brief (XDMAC_GID) XDMAC Channel 13 Interrupt Disable Bit */ +#define XDMAC_GID_ID14 (0x1u << 14) /**< \brief (XDMAC_GID) XDMAC Channel 14 Interrupt Disable Bit */ +#define XDMAC_GID_ID15 (0x1u << 15) /**< \brief (XDMAC_GID) XDMAC Channel 15 Interrupt Disable Bit */ +#define XDMAC_GID_ID16 (0x1u << 16) /**< \brief (XDMAC_GID) XDMAC Channel 16 Interrupt Disable Bit */ +#define XDMAC_GID_ID17 (0x1u << 17) /**< \brief (XDMAC_GID) XDMAC Channel 17 Interrupt Disable Bit */ +#define XDMAC_GID_ID18 (0x1u << 18) /**< \brief (XDMAC_GID) XDMAC Channel 18 Interrupt Disable Bit */ +#define XDMAC_GID_ID19 (0x1u << 19) /**< \brief (XDMAC_GID) XDMAC Channel 19 Interrupt Disable Bit */ +#define XDMAC_GID_ID20 (0x1u << 20) /**< \brief (XDMAC_GID) XDMAC Channel 20 Interrupt Disable Bit */ +#define XDMAC_GID_ID21 (0x1u << 21) /**< \brief (XDMAC_GID) XDMAC Channel 21 Interrupt Disable Bit */ +#define XDMAC_GID_ID22 (0x1u << 22) /**< \brief (XDMAC_GID) XDMAC Channel 22 Interrupt Disable Bit */ +#define XDMAC_GID_ID23 (0x1u << 23) /**< \brief (XDMAC_GID) XDMAC Channel 23 Interrupt Disable Bit */ +/* -------- XDMAC_GIM : (XDMAC Offset: 0x14) Global Interrupt Mask Register -------- */ +#define XDMAC_GIM_IM0 (0x1u << 0) /**< \brief (XDMAC_GIM) XDMAC Channel 0 Interrupt Mask Bit */ +#define XDMAC_GIM_IM1 (0x1u << 1) /**< \brief (XDMAC_GIM) XDMAC Channel 1 Interrupt Mask Bit */ +#define XDMAC_GIM_IM2 (0x1u << 2) /**< \brief (XDMAC_GIM) XDMAC Channel 2 Interrupt Mask Bit */ +#define XDMAC_GIM_IM3 (0x1u << 3) /**< \brief (XDMAC_GIM) XDMAC Channel 3 Interrupt Mask Bit */ +#define XDMAC_GIM_IM4 (0x1u << 4) /**< \brief (XDMAC_GIM) XDMAC Channel 4 Interrupt Mask Bit */ +#define XDMAC_GIM_IM5 (0x1u << 5) /**< \brief (XDMAC_GIM) XDMAC Channel 5 Interrupt Mask Bit */ +#define XDMAC_GIM_IM6 (0x1u << 6) /**< \brief (XDMAC_GIM) XDMAC Channel 6 Interrupt Mask Bit */ +#define XDMAC_GIM_IM7 (0x1u << 7) /**< \brief (XDMAC_GIM) XDMAC Channel 7 Interrupt Mask Bit */ +#define XDMAC_GIM_IM8 (0x1u << 8) /**< \brief (XDMAC_GIM) XDMAC Channel 8 Interrupt Mask Bit */ +#define XDMAC_GIM_IM9 (0x1u << 9) /**< \brief (XDMAC_GIM) XDMAC Channel 9 Interrupt Mask Bit */ +#define XDMAC_GIM_IM10 (0x1u << 10) /**< \brief (XDMAC_GIM) XDMAC Channel 10 Interrupt Mask Bit */ +#define XDMAC_GIM_IM11 (0x1u << 11) /**< \brief (XDMAC_GIM) XDMAC Channel 11 Interrupt Mask Bit */ +#define XDMAC_GIM_IM12 (0x1u << 12) /**< \brief (XDMAC_GIM) XDMAC Channel 12 Interrupt Mask Bit */ +#define XDMAC_GIM_IM13 (0x1u << 13) /**< \brief (XDMAC_GIM) XDMAC Channel 13 Interrupt Mask Bit */ +#define XDMAC_GIM_IM14 (0x1u << 14) /**< \brief (XDMAC_GIM) XDMAC Channel 14 Interrupt Mask Bit */ +#define XDMAC_GIM_IM15 (0x1u << 15) /**< \brief (XDMAC_GIM) XDMAC Channel 15 Interrupt Mask Bit */ +#define XDMAC_GIM_IM16 (0x1u << 16) /**< \brief (XDMAC_GIM) XDMAC Channel 16 Interrupt Mask Bit */ +#define XDMAC_GIM_IM17 (0x1u << 17) /**< \brief (XDMAC_GIM) XDMAC Channel 17 Interrupt Mask Bit */ +#define XDMAC_GIM_IM18 (0x1u << 18) /**< \brief (XDMAC_GIM) XDMAC Channel 18 Interrupt Mask Bit */ +#define XDMAC_GIM_IM19 (0x1u << 19) /**< \brief (XDMAC_GIM) XDMAC Channel 19 Interrupt Mask Bit */ +#define XDMAC_GIM_IM20 (0x1u << 20) /**< \brief (XDMAC_GIM) XDMAC Channel 20 Interrupt Mask Bit */ +#define XDMAC_GIM_IM21 (0x1u << 21) /**< \brief (XDMAC_GIM) XDMAC Channel 21 Interrupt Mask Bit */ +#define XDMAC_GIM_IM22 (0x1u << 22) /**< \brief (XDMAC_GIM) XDMAC Channel 22 Interrupt Mask Bit */ +#define XDMAC_GIM_IM23 (0x1u << 23) /**< \brief (XDMAC_GIM) XDMAC Channel 23 Interrupt Mask Bit */ +/* -------- XDMAC_GIS : (XDMAC Offset: 0x18) Global Interrupt Status Register -------- */ +#define XDMAC_GIS_IS0 (0x1u << 0) /**< \brief (XDMAC_GIS) XDMAC Channel 0 Interrupt Status Bit */ +#define XDMAC_GIS_IS1 (0x1u << 1) /**< \brief (XDMAC_GIS) XDMAC Channel 1 Interrupt Status Bit */ +#define XDMAC_GIS_IS2 (0x1u << 2) /**< \brief (XDMAC_GIS) XDMAC Channel 2 Interrupt Status Bit */ +#define XDMAC_GIS_IS3 (0x1u << 3) /**< \brief (XDMAC_GIS) XDMAC Channel 3 Interrupt Status Bit */ +#define XDMAC_GIS_IS4 (0x1u << 4) /**< \brief (XDMAC_GIS) XDMAC Channel 4 Interrupt Status Bit */ +#define XDMAC_GIS_IS5 (0x1u << 5) /**< \brief (XDMAC_GIS) XDMAC Channel 5 Interrupt Status Bit */ +#define XDMAC_GIS_IS6 (0x1u << 6) /**< \brief (XDMAC_GIS) XDMAC Channel 6 Interrupt Status Bit */ +#define XDMAC_GIS_IS7 (0x1u << 7) /**< \brief (XDMAC_GIS) XDMAC Channel 7 Interrupt Status Bit */ +#define XDMAC_GIS_IS8 (0x1u << 8) /**< \brief (XDMAC_GIS) XDMAC Channel 8 Interrupt Status Bit */ +#define XDMAC_GIS_IS9 (0x1u << 9) /**< \brief (XDMAC_GIS) XDMAC Channel 9 Interrupt Status Bit */ +#define XDMAC_GIS_IS10 (0x1u << 10) /**< \brief (XDMAC_GIS) XDMAC Channel 10 Interrupt Status Bit */ +#define XDMAC_GIS_IS11 (0x1u << 11) /**< \brief (XDMAC_GIS) XDMAC Channel 11 Interrupt Status Bit */ +#define XDMAC_GIS_IS12 (0x1u << 12) /**< \brief (XDMAC_GIS) XDMAC Channel 12 Interrupt Status Bit */ +#define XDMAC_GIS_IS13 (0x1u << 13) /**< \brief (XDMAC_GIS) XDMAC Channel 13 Interrupt Status Bit */ +#define XDMAC_GIS_IS14 (0x1u << 14) /**< \brief (XDMAC_GIS) XDMAC Channel 14 Interrupt Status Bit */ +#define XDMAC_GIS_IS15 (0x1u << 15) /**< \brief (XDMAC_GIS) XDMAC Channel 15 Interrupt Status Bit */ +#define XDMAC_GIS_IS16 (0x1u << 16) /**< \brief (XDMAC_GIS) XDMAC Channel 16 Interrupt Status Bit */ +#define XDMAC_GIS_IS17 (0x1u << 17) /**< \brief (XDMAC_GIS) XDMAC Channel 17 Interrupt Status Bit */ +#define XDMAC_GIS_IS18 (0x1u << 18) /**< \brief (XDMAC_GIS) XDMAC Channel 18 Interrupt Status Bit */ +#define XDMAC_GIS_IS19 (0x1u << 19) /**< \brief (XDMAC_GIS) XDMAC Channel 19 Interrupt Status Bit */ +#define XDMAC_GIS_IS20 (0x1u << 20) /**< \brief (XDMAC_GIS) XDMAC Channel 20 Interrupt Status Bit */ +#define XDMAC_GIS_IS21 (0x1u << 21) /**< \brief (XDMAC_GIS) XDMAC Channel 21 Interrupt Status Bit */ +#define XDMAC_GIS_IS22 (0x1u << 22) /**< \brief (XDMAC_GIS) XDMAC Channel 22 Interrupt Status Bit */ +#define XDMAC_GIS_IS23 (0x1u << 23) /**< \brief (XDMAC_GIS) XDMAC Channel 23 Interrupt Status Bit */ +/* -------- XDMAC_GE : (XDMAC Offset: 0x1C) Global Channel Enable Register -------- */ +#define XDMAC_GE_EN0 (0x1u << 0) /**< \brief (XDMAC_GE) XDMAC Channel 0 Enable Bit */ +#define XDMAC_GE_EN1 (0x1u << 1) /**< \brief (XDMAC_GE) XDMAC Channel 1 Enable Bit */ +#define XDMAC_GE_EN2 (0x1u << 2) /**< \brief (XDMAC_GE) XDMAC Channel 2 Enable Bit */ +#define XDMAC_GE_EN3 (0x1u << 3) /**< \brief (XDMAC_GE) XDMAC Channel 3 Enable Bit */ +#define XDMAC_GE_EN4 (0x1u << 4) /**< \brief (XDMAC_GE) XDMAC Channel 4 Enable Bit */ +#define XDMAC_GE_EN5 (0x1u << 5) /**< \brief (XDMAC_GE) XDMAC Channel 5 Enable Bit */ +#define XDMAC_GE_EN6 (0x1u << 6) /**< \brief (XDMAC_GE) XDMAC Channel 6 Enable Bit */ +#define XDMAC_GE_EN7 (0x1u << 7) /**< \brief (XDMAC_GE) XDMAC Channel 7 Enable Bit */ +#define XDMAC_GE_EN8 (0x1u << 8) /**< \brief (XDMAC_GE) XDMAC Channel 8 Enable Bit */ +#define XDMAC_GE_EN9 (0x1u << 9) /**< \brief (XDMAC_GE) XDMAC Channel 9 Enable Bit */ +#define XDMAC_GE_EN10 (0x1u << 10) /**< \brief (XDMAC_GE) XDMAC Channel 10 Enable Bit */ +#define XDMAC_GE_EN11 (0x1u << 11) /**< \brief (XDMAC_GE) XDMAC Channel 11 Enable Bit */ +#define XDMAC_GE_EN12 (0x1u << 12) /**< \brief (XDMAC_GE) XDMAC Channel 12 Enable Bit */ +#define XDMAC_GE_EN13 (0x1u << 13) /**< \brief (XDMAC_GE) XDMAC Channel 13 Enable Bit */ +#define XDMAC_GE_EN14 (0x1u << 14) /**< \brief (XDMAC_GE) XDMAC Channel 14 Enable Bit */ +#define XDMAC_GE_EN15 (0x1u << 15) /**< \brief (XDMAC_GE) XDMAC Channel 15 Enable Bit */ +#define XDMAC_GE_EN16 (0x1u << 16) /**< \brief (XDMAC_GE) XDMAC Channel 16 Enable Bit */ +#define XDMAC_GE_EN17 (0x1u << 17) /**< \brief (XDMAC_GE) XDMAC Channel 17 Enable Bit */ +#define XDMAC_GE_EN18 (0x1u << 18) /**< \brief (XDMAC_GE) XDMAC Channel 18 Enable Bit */ +#define XDMAC_GE_EN19 (0x1u << 19) /**< \brief (XDMAC_GE) XDMAC Channel 19 Enable Bit */ +#define XDMAC_GE_EN20 (0x1u << 20) /**< \brief (XDMAC_GE) XDMAC Channel 20 Enable Bit */ +#define XDMAC_GE_EN21 (0x1u << 21) /**< \brief (XDMAC_GE) XDMAC Channel 21 Enable Bit */ +#define XDMAC_GE_EN22 (0x1u << 22) /**< \brief (XDMAC_GE) XDMAC Channel 22 Enable Bit */ +#define XDMAC_GE_EN23 (0x1u << 23) /**< \brief (XDMAC_GE) XDMAC Channel 23 Enable Bit */ +/* -------- XDMAC_GD : (XDMAC Offset: 0x20) Global Channel Disable Register -------- */ +#define XDMAC_GD_DI0 (0x1u << 0) /**< \brief (XDMAC_GD) XDMAC Channel 0 Disable Bit */ +#define XDMAC_GD_DI1 (0x1u << 1) /**< \brief (XDMAC_GD) XDMAC Channel 1 Disable Bit */ +#define XDMAC_GD_DI2 (0x1u << 2) /**< \brief (XDMAC_GD) XDMAC Channel 2 Disable Bit */ +#define XDMAC_GD_DI3 (0x1u << 3) /**< \brief (XDMAC_GD) XDMAC Channel 3 Disable Bit */ +#define XDMAC_GD_DI4 (0x1u << 4) /**< \brief (XDMAC_GD) XDMAC Channel 4 Disable Bit */ +#define XDMAC_GD_DI5 (0x1u << 5) /**< \brief (XDMAC_GD) XDMAC Channel 5 Disable Bit */ +#define XDMAC_GD_DI6 (0x1u << 6) /**< \brief (XDMAC_GD) XDMAC Channel 6 Disable Bit */ +#define XDMAC_GD_DI7 (0x1u << 7) /**< \brief (XDMAC_GD) XDMAC Channel 7 Disable Bit */ +#define XDMAC_GD_DI8 (0x1u << 8) /**< \brief (XDMAC_GD) XDMAC Channel 8 Disable Bit */ +#define XDMAC_GD_DI9 (0x1u << 9) /**< \brief (XDMAC_GD) XDMAC Channel 9 Disable Bit */ +#define XDMAC_GD_DI10 (0x1u << 10) /**< \brief (XDMAC_GD) XDMAC Channel 10 Disable Bit */ +#define XDMAC_GD_DI11 (0x1u << 11) /**< \brief (XDMAC_GD) XDMAC Channel 11 Disable Bit */ +#define XDMAC_GD_DI12 (0x1u << 12) /**< \brief (XDMAC_GD) XDMAC Channel 12 Disable Bit */ +#define XDMAC_GD_DI13 (0x1u << 13) /**< \brief (XDMAC_GD) XDMAC Channel 13 Disable Bit */ +#define XDMAC_GD_DI14 (0x1u << 14) /**< \brief (XDMAC_GD) XDMAC Channel 14 Disable Bit */ +#define XDMAC_GD_DI15 (0x1u << 15) /**< \brief (XDMAC_GD) XDMAC Channel 15 Disable Bit */ +#define XDMAC_GD_DI16 (0x1u << 16) /**< \brief (XDMAC_GD) XDMAC Channel 16 Disable Bit */ +#define XDMAC_GD_DI17 (0x1u << 17) /**< \brief (XDMAC_GD) XDMAC Channel 17 Disable Bit */ +#define XDMAC_GD_DI18 (0x1u << 18) /**< \brief (XDMAC_GD) XDMAC Channel 18 Disable Bit */ +#define XDMAC_GD_DI19 (0x1u << 19) /**< \brief (XDMAC_GD) XDMAC Channel 19 Disable Bit */ +#define XDMAC_GD_DI20 (0x1u << 20) /**< \brief (XDMAC_GD) XDMAC Channel 20 Disable Bit */ +#define XDMAC_GD_DI21 (0x1u << 21) /**< \brief (XDMAC_GD) XDMAC Channel 21 Disable Bit */ +#define XDMAC_GD_DI22 (0x1u << 22) /**< \brief (XDMAC_GD) XDMAC Channel 22 Disable Bit */ +#define XDMAC_GD_DI23 (0x1u << 23) /**< \brief (XDMAC_GD) XDMAC Channel 23 Disable Bit */ +/* -------- XDMAC_GS : (XDMAC Offset: 0x24) Global Channel Status Register -------- */ +#define XDMAC_GS_ST0 (0x1u << 0) /**< \brief (XDMAC_GS) XDMAC Channel 0 Status Bit */ +#define XDMAC_GS_ST1 (0x1u << 1) /**< \brief (XDMAC_GS) XDMAC Channel 1 Status Bit */ +#define XDMAC_GS_ST2 (0x1u << 2) /**< \brief (XDMAC_GS) XDMAC Channel 2 Status Bit */ +#define XDMAC_GS_ST3 (0x1u << 3) /**< \brief (XDMAC_GS) XDMAC Channel 3 Status Bit */ +#define XDMAC_GS_ST4 (0x1u << 4) /**< \brief (XDMAC_GS) XDMAC Channel 4 Status Bit */ +#define XDMAC_GS_ST5 (0x1u << 5) /**< \brief (XDMAC_GS) XDMAC Channel 5 Status Bit */ +#define XDMAC_GS_ST6 (0x1u << 6) /**< \brief (XDMAC_GS) XDMAC Channel 6 Status Bit */ +#define XDMAC_GS_ST7 (0x1u << 7) /**< \brief (XDMAC_GS) XDMAC Channel 7 Status Bit */ +#define XDMAC_GS_ST8 (0x1u << 8) /**< \brief (XDMAC_GS) XDMAC Channel 8 Status Bit */ +#define XDMAC_GS_ST9 (0x1u << 9) /**< \brief (XDMAC_GS) XDMAC Channel 9 Status Bit */ +#define XDMAC_GS_ST10 (0x1u << 10) /**< \brief (XDMAC_GS) XDMAC Channel 10 Status Bit */ +#define XDMAC_GS_ST11 (0x1u << 11) /**< \brief (XDMAC_GS) XDMAC Channel 11 Status Bit */ +#define XDMAC_GS_ST12 (0x1u << 12) /**< \brief (XDMAC_GS) XDMAC Channel 12 Status Bit */ +#define XDMAC_GS_ST13 (0x1u << 13) /**< \brief (XDMAC_GS) XDMAC Channel 13 Status Bit */ +#define XDMAC_GS_ST14 (0x1u << 14) /**< \brief (XDMAC_GS) XDMAC Channel 14 Status Bit */ +#define XDMAC_GS_ST15 (0x1u << 15) /**< \brief (XDMAC_GS) XDMAC Channel 15 Status Bit */ +#define XDMAC_GS_ST16 (0x1u << 16) /**< \brief (XDMAC_GS) XDMAC Channel 16 Status Bit */ +#define XDMAC_GS_ST17 (0x1u << 17) /**< \brief (XDMAC_GS) XDMAC Channel 17 Status Bit */ +#define XDMAC_GS_ST18 (0x1u << 18) /**< \brief (XDMAC_GS) XDMAC Channel 18 Status Bit */ +#define XDMAC_GS_ST19 (0x1u << 19) /**< \brief (XDMAC_GS) XDMAC Channel 19 Status Bit */ +#define XDMAC_GS_ST20 (0x1u << 20) /**< \brief (XDMAC_GS) XDMAC Channel 20 Status Bit */ +#define XDMAC_GS_ST21 (0x1u << 21) /**< \brief (XDMAC_GS) XDMAC Channel 21 Status Bit */ +#define XDMAC_GS_ST22 (0x1u << 22) /**< \brief (XDMAC_GS) XDMAC Channel 22 Status Bit */ +#define XDMAC_GS_ST23 (0x1u << 23) /**< \brief (XDMAC_GS) XDMAC Channel 23 Status Bit */ +/* -------- XDMAC_GRS : (XDMAC Offset: 0x28) Global Channel Read Suspend Register -------- */ +#define XDMAC_GRS_RS0 (0x1u << 0) /**< \brief (XDMAC_GRS) XDMAC Channel 0 Read Suspend Bit */ +#define XDMAC_GRS_RS1 (0x1u << 1) /**< \brief (XDMAC_GRS) XDMAC Channel 1 Read Suspend Bit */ +#define XDMAC_GRS_RS2 (0x1u << 2) /**< \brief (XDMAC_GRS) XDMAC Channel 2 Read Suspend Bit */ +#define XDMAC_GRS_RS3 (0x1u << 3) /**< \brief (XDMAC_GRS) XDMAC Channel 3 Read Suspend Bit */ +#define XDMAC_GRS_RS4 (0x1u << 4) /**< \brief (XDMAC_GRS) XDMAC Channel 4 Read Suspend Bit */ +#define XDMAC_GRS_RS5 (0x1u << 5) /**< \brief (XDMAC_GRS) XDMAC Channel 5 Read Suspend Bit */ +#define XDMAC_GRS_RS6 (0x1u << 6) /**< \brief (XDMAC_GRS) XDMAC Channel 6 Read Suspend Bit */ +#define XDMAC_GRS_RS7 (0x1u << 7) /**< \brief (XDMAC_GRS) XDMAC Channel 7 Read Suspend Bit */ +#define XDMAC_GRS_RS8 (0x1u << 8) /**< \brief (XDMAC_GRS) XDMAC Channel 8 Read Suspend Bit */ +#define XDMAC_GRS_RS9 (0x1u << 9) /**< \brief (XDMAC_GRS) XDMAC Channel 9 Read Suspend Bit */ +#define XDMAC_GRS_RS10 (0x1u << 10) /**< \brief (XDMAC_GRS) XDMAC Channel 10 Read Suspend Bit */ +#define XDMAC_GRS_RS11 (0x1u << 11) /**< \brief (XDMAC_GRS) XDMAC Channel 11 Read Suspend Bit */ +#define XDMAC_GRS_RS12 (0x1u << 12) /**< \brief (XDMAC_GRS) XDMAC Channel 12 Read Suspend Bit */ +#define XDMAC_GRS_RS13 (0x1u << 13) /**< \brief (XDMAC_GRS) XDMAC Channel 13 Read Suspend Bit */ +#define XDMAC_GRS_RS14 (0x1u << 14) /**< \brief (XDMAC_GRS) XDMAC Channel 14 Read Suspend Bit */ +#define XDMAC_GRS_RS15 (0x1u << 15) /**< \brief (XDMAC_GRS) XDMAC Channel 15 Read Suspend Bit */ +#define XDMAC_GRS_RS16 (0x1u << 16) /**< \brief (XDMAC_GRS) XDMAC Channel 16 Read Suspend Bit */ +#define XDMAC_GRS_RS17 (0x1u << 17) /**< \brief (XDMAC_GRS) XDMAC Channel 17 Read Suspend Bit */ +#define XDMAC_GRS_RS18 (0x1u << 18) /**< \brief (XDMAC_GRS) XDMAC Channel 18 Read Suspend Bit */ +#define XDMAC_GRS_RS19 (0x1u << 19) /**< \brief (XDMAC_GRS) XDMAC Channel 19 Read Suspend Bit */ +#define XDMAC_GRS_RS20 (0x1u << 20) /**< \brief (XDMAC_GRS) XDMAC Channel 20 Read Suspend Bit */ +#define XDMAC_GRS_RS21 (0x1u << 21) /**< \brief (XDMAC_GRS) XDMAC Channel 21 Read Suspend Bit */ +#define XDMAC_GRS_RS22 (0x1u << 22) /**< \brief (XDMAC_GRS) XDMAC Channel 22 Read Suspend Bit */ +#define XDMAC_GRS_RS23 (0x1u << 23) /**< \brief (XDMAC_GRS) XDMAC Channel 23 Read Suspend Bit */ +/* -------- XDMAC_GWS : (XDMAC Offset: 0x2C) Global Channel Write Suspend Register -------- */ +#define XDMAC_GWS_WS0 (0x1u << 0) /**< \brief (XDMAC_GWS) XDMAC Channel 0 Write Suspend Bit */ +#define XDMAC_GWS_WS1 (0x1u << 1) /**< \brief (XDMAC_GWS) XDMAC Channel 1 Write Suspend Bit */ +#define XDMAC_GWS_WS2 (0x1u << 2) /**< \brief (XDMAC_GWS) XDMAC Channel 2 Write Suspend Bit */ +#define XDMAC_GWS_WS3 (0x1u << 3) /**< \brief (XDMAC_GWS) XDMAC Channel 3 Write Suspend Bit */ +#define XDMAC_GWS_WS4 (0x1u << 4) /**< \brief (XDMAC_GWS) XDMAC Channel 4 Write Suspend Bit */ +#define XDMAC_GWS_WS5 (0x1u << 5) /**< \brief (XDMAC_GWS) XDMAC Channel 5 Write Suspend Bit */ +#define XDMAC_GWS_WS6 (0x1u << 6) /**< \brief (XDMAC_GWS) XDMAC Channel 6 Write Suspend Bit */ +#define XDMAC_GWS_WS7 (0x1u << 7) /**< \brief (XDMAC_GWS) XDMAC Channel 7 Write Suspend Bit */ +#define XDMAC_GWS_WS8 (0x1u << 8) /**< \brief (XDMAC_GWS) XDMAC Channel 8 Write Suspend Bit */ +#define XDMAC_GWS_WS9 (0x1u << 9) /**< \brief (XDMAC_GWS) XDMAC Channel 9 Write Suspend Bit */ +#define XDMAC_GWS_WS10 (0x1u << 10) /**< \brief (XDMAC_GWS) XDMAC Channel 10 Write Suspend Bit */ +#define XDMAC_GWS_WS11 (0x1u << 11) /**< \brief (XDMAC_GWS) XDMAC Channel 11 Write Suspend Bit */ +#define XDMAC_GWS_WS12 (0x1u << 12) /**< \brief (XDMAC_GWS) XDMAC Channel 12 Write Suspend Bit */ +#define XDMAC_GWS_WS13 (0x1u << 13) /**< \brief (XDMAC_GWS) XDMAC Channel 13 Write Suspend Bit */ +#define XDMAC_GWS_WS14 (0x1u << 14) /**< \brief (XDMAC_GWS) XDMAC Channel 14 Write Suspend Bit */ +#define XDMAC_GWS_WS15 (0x1u << 15) /**< \brief (XDMAC_GWS) XDMAC Channel 15 Write Suspend Bit */ +#define XDMAC_GWS_WS16 (0x1u << 16) /**< \brief (XDMAC_GWS) XDMAC Channel 16 Write Suspend Bit */ +#define XDMAC_GWS_WS17 (0x1u << 17) /**< \brief (XDMAC_GWS) XDMAC Channel 17 Write Suspend Bit */ +#define XDMAC_GWS_WS18 (0x1u << 18) /**< \brief (XDMAC_GWS) XDMAC Channel 18 Write Suspend Bit */ +#define XDMAC_GWS_WS19 (0x1u << 19) /**< \brief (XDMAC_GWS) XDMAC Channel 19 Write Suspend Bit */ +#define XDMAC_GWS_WS20 (0x1u << 20) /**< \brief (XDMAC_GWS) XDMAC Channel 20 Write Suspend Bit */ +#define XDMAC_GWS_WS21 (0x1u << 21) /**< \brief (XDMAC_GWS) XDMAC Channel 21 Write Suspend Bit */ +#define XDMAC_GWS_WS22 (0x1u << 22) /**< \brief (XDMAC_GWS) XDMAC Channel 22 Write Suspend Bit */ +#define XDMAC_GWS_WS23 (0x1u << 23) /**< \brief (XDMAC_GWS) XDMAC Channel 23 Write Suspend Bit */ +/* -------- XDMAC_GRWS : (XDMAC Offset: 0x30) Global Channel Read Write Suspend Register -------- */ +#define XDMAC_GRWS_RWS0 (0x1u << 0) /**< \brief (XDMAC_GRWS) XDMAC Channel 0 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS1 (0x1u << 1) /**< \brief (XDMAC_GRWS) XDMAC Channel 1 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS2 (0x1u << 2) /**< \brief (XDMAC_GRWS) XDMAC Channel 2 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS3 (0x1u << 3) /**< \brief (XDMAC_GRWS) XDMAC Channel 3 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS4 (0x1u << 4) /**< \brief (XDMAC_GRWS) XDMAC Channel 4 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS5 (0x1u << 5) /**< \brief (XDMAC_GRWS) XDMAC Channel 5 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS6 (0x1u << 6) /**< \brief (XDMAC_GRWS) XDMAC Channel 6 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS7 (0x1u << 7) /**< \brief (XDMAC_GRWS) XDMAC Channel 7 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS8 (0x1u << 8) /**< \brief (XDMAC_GRWS) XDMAC Channel 8 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS9 (0x1u << 9) /**< \brief (XDMAC_GRWS) XDMAC Channel 9 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS10 (0x1u << 10) /**< \brief (XDMAC_GRWS) XDMAC Channel 10 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS11 (0x1u << 11) /**< \brief (XDMAC_GRWS) XDMAC Channel 11 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS12 (0x1u << 12) /**< \brief (XDMAC_GRWS) XDMAC Channel 12 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS13 (0x1u << 13) /**< \brief (XDMAC_GRWS) XDMAC Channel 13 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS14 (0x1u << 14) /**< \brief (XDMAC_GRWS) XDMAC Channel 14 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS15 (0x1u << 15) /**< \brief (XDMAC_GRWS) XDMAC Channel 15 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS16 (0x1u << 16) /**< \brief (XDMAC_GRWS) XDMAC Channel 16 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS17 (0x1u << 17) /**< \brief (XDMAC_GRWS) XDMAC Channel 17 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS18 (0x1u << 18) /**< \brief (XDMAC_GRWS) XDMAC Channel 18 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS19 (0x1u << 19) /**< \brief (XDMAC_GRWS) XDMAC Channel 19 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS20 (0x1u << 20) /**< \brief (XDMAC_GRWS) XDMAC Channel 20 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS21 (0x1u << 21) /**< \brief (XDMAC_GRWS) XDMAC Channel 21 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS22 (0x1u << 22) /**< \brief (XDMAC_GRWS) XDMAC Channel 22 Read Write Suspend Bit */ +#define XDMAC_GRWS_RWS23 (0x1u << 23) /**< \brief (XDMAC_GRWS) XDMAC Channel 23 Read Write Suspend Bit */ +/* -------- XDMAC_GRWR : (XDMAC Offset: 0x34) Global Channel Read Write Resume Register -------- */ +#define XDMAC_GRWR_RWR0 (0x1u << 0) /**< \brief (XDMAC_GRWR) XDMAC Channel 0 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR1 (0x1u << 1) /**< \brief (XDMAC_GRWR) XDMAC Channel 1 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR2 (0x1u << 2) /**< \brief (XDMAC_GRWR) XDMAC Channel 2 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR3 (0x1u << 3) /**< \brief (XDMAC_GRWR) XDMAC Channel 3 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR4 (0x1u << 4) /**< \brief (XDMAC_GRWR) XDMAC Channel 4 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR5 (0x1u << 5) /**< \brief (XDMAC_GRWR) XDMAC Channel 5 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR6 (0x1u << 6) /**< \brief (XDMAC_GRWR) XDMAC Channel 6 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR7 (0x1u << 7) /**< \brief (XDMAC_GRWR) XDMAC Channel 7 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR8 (0x1u << 8) /**< \brief (XDMAC_GRWR) XDMAC Channel 8 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR9 (0x1u << 9) /**< \brief (XDMAC_GRWR) XDMAC Channel 9 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR10 (0x1u << 10) /**< \brief (XDMAC_GRWR) XDMAC Channel 10 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR11 (0x1u << 11) /**< \brief (XDMAC_GRWR) XDMAC Channel 11 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR12 (0x1u << 12) /**< \brief (XDMAC_GRWR) XDMAC Channel 12 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR13 (0x1u << 13) /**< \brief (XDMAC_GRWR) XDMAC Channel 13 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR14 (0x1u << 14) /**< \brief (XDMAC_GRWR) XDMAC Channel 14 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR15 (0x1u << 15) /**< \brief (XDMAC_GRWR) XDMAC Channel 15 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR16 (0x1u << 16) /**< \brief (XDMAC_GRWR) XDMAC Channel 16 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR17 (0x1u << 17) /**< \brief (XDMAC_GRWR) XDMAC Channel 17 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR18 (0x1u << 18) /**< \brief (XDMAC_GRWR) XDMAC Channel 18 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR19 (0x1u << 19) /**< \brief (XDMAC_GRWR) XDMAC Channel 19 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR20 (0x1u << 20) /**< \brief (XDMAC_GRWR) XDMAC Channel 20 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR21 (0x1u << 21) /**< \brief (XDMAC_GRWR) XDMAC Channel 21 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR22 (0x1u << 22) /**< \brief (XDMAC_GRWR) XDMAC Channel 22 Read Write Resume Bit */ +#define XDMAC_GRWR_RWR23 (0x1u << 23) /**< \brief (XDMAC_GRWR) XDMAC Channel 23 Read Write Resume Bit */ +/* -------- XDMAC_GSWR : (XDMAC Offset: 0x38) Global Channel Software Request Register -------- */ +#define XDMAC_GSWR_SWREQ0 (0x1u << 0) /**< \brief (XDMAC_GSWR) XDMAC Channel 0 Software Request Bit */ +#define XDMAC_GSWR_SWREQ1 (0x1u << 1) /**< \brief (XDMAC_GSWR) XDMAC Channel 1 Software Request Bit */ +#define XDMAC_GSWR_SWREQ2 (0x1u << 2) /**< \brief (XDMAC_GSWR) XDMAC Channel 2 Software Request Bit */ +#define XDMAC_GSWR_SWREQ3 (0x1u << 3) /**< \brief (XDMAC_GSWR) XDMAC Channel 3 Software Request Bit */ +#define XDMAC_GSWR_SWREQ4 (0x1u << 4) /**< \brief (XDMAC_GSWR) XDMAC Channel 4 Software Request Bit */ +#define XDMAC_GSWR_SWREQ5 (0x1u << 5) /**< \brief (XDMAC_GSWR) XDMAC Channel 5 Software Request Bit */ +#define XDMAC_GSWR_SWREQ6 (0x1u << 6) /**< \brief (XDMAC_GSWR) XDMAC Channel 6 Software Request Bit */ +#define XDMAC_GSWR_SWREQ7 (0x1u << 7) /**< \brief (XDMAC_GSWR) XDMAC Channel 7 Software Request Bit */ +#define XDMAC_GSWR_SWREQ8 (0x1u << 8) /**< \brief (XDMAC_GSWR) XDMAC Channel 8 Software Request Bit */ +#define XDMAC_GSWR_SWREQ9 (0x1u << 9) /**< \brief (XDMAC_GSWR) XDMAC Channel 9 Software Request Bit */ +#define XDMAC_GSWR_SWREQ10 (0x1u << 10) /**< \brief (XDMAC_GSWR) XDMAC Channel 10 Software Request Bit */ +#define XDMAC_GSWR_SWREQ11 (0x1u << 11) /**< \brief (XDMAC_GSWR) XDMAC Channel 11 Software Request Bit */ +#define XDMAC_GSWR_SWREQ12 (0x1u << 12) /**< \brief (XDMAC_GSWR) XDMAC Channel 12 Software Request Bit */ +#define XDMAC_GSWR_SWREQ13 (0x1u << 13) /**< \brief (XDMAC_GSWR) XDMAC Channel 13 Software Request Bit */ +#define XDMAC_GSWR_SWREQ14 (0x1u << 14) /**< \brief (XDMAC_GSWR) XDMAC Channel 14 Software Request Bit */ +#define XDMAC_GSWR_SWREQ15 (0x1u << 15) /**< \brief (XDMAC_GSWR) XDMAC Channel 15 Software Request Bit */ +#define XDMAC_GSWR_SWREQ16 (0x1u << 16) /**< \brief (XDMAC_GSWR) XDMAC Channel 16 Software Request Bit */ +#define XDMAC_GSWR_SWREQ17 (0x1u << 17) /**< \brief (XDMAC_GSWR) XDMAC Channel 17 Software Request Bit */ +#define XDMAC_GSWR_SWREQ18 (0x1u << 18) /**< \brief (XDMAC_GSWR) XDMAC Channel 18 Software Request Bit */ +#define XDMAC_GSWR_SWREQ19 (0x1u << 19) /**< \brief (XDMAC_GSWR) XDMAC Channel 19 Software Request Bit */ +#define XDMAC_GSWR_SWREQ20 (0x1u << 20) /**< \brief (XDMAC_GSWR) XDMAC Channel 20 Software Request Bit */ +#define XDMAC_GSWR_SWREQ21 (0x1u << 21) /**< \brief (XDMAC_GSWR) XDMAC Channel 21 Software Request Bit */ +#define XDMAC_GSWR_SWREQ22 (0x1u << 22) /**< \brief (XDMAC_GSWR) XDMAC Channel 22 Software Request Bit */ +#define XDMAC_GSWR_SWREQ23 (0x1u << 23) /**< \brief (XDMAC_GSWR) XDMAC Channel 23 Software Request Bit */ +/* -------- XDMAC_GSWS : (XDMAC Offset: 0x3C) Global Channel Software Request Status Register -------- */ +#define XDMAC_GSWS_SWRS0 (0x1u << 0) /**< \brief (XDMAC_GSWS) XDMAC Channel 0 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS1 (0x1u << 1) /**< \brief (XDMAC_GSWS) XDMAC Channel 1 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS2 (0x1u << 2) /**< \brief (XDMAC_GSWS) XDMAC Channel 2 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS3 (0x1u << 3) /**< \brief (XDMAC_GSWS) XDMAC Channel 3 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS4 (0x1u << 4) /**< \brief (XDMAC_GSWS) XDMAC Channel 4 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS5 (0x1u << 5) /**< \brief (XDMAC_GSWS) XDMAC Channel 5 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS6 (0x1u << 6) /**< \brief (XDMAC_GSWS) XDMAC Channel 6 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS7 (0x1u << 7) /**< \brief (XDMAC_GSWS) XDMAC Channel 7 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS8 (0x1u << 8) /**< \brief (XDMAC_GSWS) XDMAC Channel 8 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS9 (0x1u << 9) /**< \brief (XDMAC_GSWS) XDMAC Channel 9 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS10 (0x1u << 10) /**< \brief (XDMAC_GSWS) XDMAC Channel 10 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS11 (0x1u << 11) /**< \brief (XDMAC_GSWS) XDMAC Channel 11 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS12 (0x1u << 12) /**< \brief (XDMAC_GSWS) XDMAC Channel 12 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS13 (0x1u << 13) /**< \brief (XDMAC_GSWS) XDMAC Channel 13 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS14 (0x1u << 14) /**< \brief (XDMAC_GSWS) XDMAC Channel 14 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS15 (0x1u << 15) /**< \brief (XDMAC_GSWS) XDMAC Channel 15 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS16 (0x1u << 16) /**< \brief (XDMAC_GSWS) XDMAC Channel 16 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS17 (0x1u << 17) /**< \brief (XDMAC_GSWS) XDMAC Channel 17 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS18 (0x1u << 18) /**< \brief (XDMAC_GSWS) XDMAC Channel 18 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS19 (0x1u << 19) /**< \brief (XDMAC_GSWS) XDMAC Channel 19 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS20 (0x1u << 20) /**< \brief (XDMAC_GSWS) XDMAC Channel 20 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS21 (0x1u << 21) /**< \brief (XDMAC_GSWS) XDMAC Channel 21 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS22 (0x1u << 22) /**< \brief (XDMAC_GSWS) XDMAC Channel 22 Software Request Status Bit */ +#define XDMAC_GSWS_SWRS23 (0x1u << 23) /**< \brief (XDMAC_GSWS) XDMAC Channel 23 Software Request Status Bit */ +/* -------- XDMAC_GSWF : (XDMAC Offset: 0x40) Global Channel Software Flush Request Register -------- */ +#define XDMAC_GSWF_SWF0 (0x1u << 0) /**< \brief (XDMAC_GSWF) XDMAC Channel 0 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF1 (0x1u << 1) /**< \brief (XDMAC_GSWF) XDMAC Channel 1 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF2 (0x1u << 2) /**< \brief (XDMAC_GSWF) XDMAC Channel 2 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF3 (0x1u << 3) /**< \brief (XDMAC_GSWF) XDMAC Channel 3 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF4 (0x1u << 4) /**< \brief (XDMAC_GSWF) XDMAC Channel 4 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF5 (0x1u << 5) /**< \brief (XDMAC_GSWF) XDMAC Channel 5 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF6 (0x1u << 6) /**< \brief (XDMAC_GSWF) XDMAC Channel 6 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF7 (0x1u << 7) /**< \brief (XDMAC_GSWF) XDMAC Channel 7 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF8 (0x1u << 8) /**< \brief (XDMAC_GSWF) XDMAC Channel 8 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF9 (0x1u << 9) /**< \brief (XDMAC_GSWF) XDMAC Channel 9 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF10 (0x1u << 10) /**< \brief (XDMAC_GSWF) XDMAC Channel 10 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF11 (0x1u << 11) /**< \brief (XDMAC_GSWF) XDMAC Channel 11 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF12 (0x1u << 12) /**< \brief (XDMAC_GSWF) XDMAC Channel 12 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF13 (0x1u << 13) /**< \brief (XDMAC_GSWF) XDMAC Channel 13 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF14 (0x1u << 14) /**< \brief (XDMAC_GSWF) XDMAC Channel 14 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF15 (0x1u << 15) /**< \brief (XDMAC_GSWF) XDMAC Channel 15 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF16 (0x1u << 16) /**< \brief (XDMAC_GSWF) XDMAC Channel 16 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF17 (0x1u << 17) /**< \brief (XDMAC_GSWF) XDMAC Channel 17 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF18 (0x1u << 18) /**< \brief (XDMAC_GSWF) XDMAC Channel 18 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF19 (0x1u << 19) /**< \brief (XDMAC_GSWF) XDMAC Channel 19 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF20 (0x1u << 20) /**< \brief (XDMAC_GSWF) XDMAC Channel 20 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF21 (0x1u << 21) /**< \brief (XDMAC_GSWF) XDMAC Channel 21 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF22 (0x1u << 22) /**< \brief (XDMAC_GSWF) XDMAC Channel 22 Software Flush Request Bit */ +#define XDMAC_GSWF_SWF23 (0x1u << 23) /**< \brief (XDMAC_GSWF) XDMAC Channel 23 Software Flush Request Bit */ +/* -------- XDMAC_CIE : (XDMAC Offset: N/A) Channel Interrupt Enable Register -------- */ +#define XDMAC_CIE_BIE (0x1u << 0) /**< \brief (XDMAC_CIE) End of Block Interrupt Enable Bit */ +#define XDMAC_CIE_LIE (0x1u << 1) /**< \brief (XDMAC_CIE) End of Linked List Interrupt Enable Bit */ +#define XDMAC_CIE_DIE (0x1u << 2) /**< \brief (XDMAC_CIE) End of Disable Interrupt Enable Bit */ +#define XDMAC_CIE_FIE (0x1u << 3) /**< \brief (XDMAC_CIE) End of Flush Interrupt Enable Bit */ +#define XDMAC_CIE_RBIE (0x1u << 4) /**< \brief (XDMAC_CIE) Read Bus Error Interrupt Enable Bit */ +#define XDMAC_CIE_WBIE (0x1u << 5) /**< \brief (XDMAC_CIE) Write Bus Error Interrupt Enable Bit */ +#define XDMAC_CIE_ROIE (0x1u << 6) /**< \brief (XDMAC_CIE) Request Overflow Error Interrupt Enable Bit */ +/* -------- XDMAC_CID : (XDMAC Offset: N/A) Channel Interrupt Disable Register -------- */ +#define XDMAC_CID_BID (0x1u << 0) /**< \brief (XDMAC_CID) End of Block Interrupt Disable Bit */ +#define XDMAC_CID_LID (0x1u << 1) /**< \brief (XDMAC_CID) End of Linked List Interrupt Disable Bit */ +#define XDMAC_CID_DID (0x1u << 2) /**< \brief (XDMAC_CID) End of Disable Interrupt Disable Bit */ +#define XDMAC_CID_FID (0x1u << 3) /**< \brief (XDMAC_CID) End of Flush Interrupt Disable Bit */ +#define XDMAC_CID_RBEID (0x1u << 4) /**< \brief (XDMAC_CID) Read Bus Error Interrupt Disable Bit */ +#define XDMAC_CID_WBEID (0x1u << 5) /**< \brief (XDMAC_CID) Write Bus Error Interrupt Disable Bit */ +#define XDMAC_CID_ROID (0x1u << 6) /**< \brief (XDMAC_CID) Request Overflow Error Interrupt Disable Bit */ +/* -------- XDMAC_CIM : (XDMAC Offset: N/A) Channel Interrupt Mask Register -------- */ +#define XDMAC_CIM_BIM (0x1u << 0) /**< \brief (XDMAC_CIM) End of Block Interrupt Mask Bit */ +#define XDMAC_CIM_LIM (0x1u << 1) /**< \brief (XDMAC_CIM) End of Linked List Interrupt Mask Bit */ +#define XDMAC_CIM_DIM (0x1u << 2) /**< \brief (XDMAC_CIM) End of Disable Interrupt Mask Bit */ +#define XDMAC_CIM_FIM (0x1u << 3) /**< \brief (XDMAC_CIM) End of Flush Interrupt Mask Bit */ +#define XDMAC_CIM_RBEIM (0x1u << 4) /**< \brief (XDMAC_CIM) Read Bus Error Interrupt Mask Bit */ +#define XDMAC_CIM_WBEIM (0x1u << 5) /**< \brief (XDMAC_CIM) Write Bus Error Interrupt Mask Bit */ +#define XDMAC_CIM_ROIM (0x1u << 6) /**< \brief (XDMAC_CIM) Request Overflow Error Interrupt Mask Bit */ +/* -------- XDMAC_CIS : (XDMAC Offset: N/A) Channel Interrupt Status Register -------- */ +#define XDMAC_CIS_BIS (0x1u << 0) /**< \brief (XDMAC_CIS) End of Block Interrupt Status Bit */ +#define XDMAC_CIS_LIS (0x1u << 1) /**< \brief (XDMAC_CIS) End of Linked List Interrupt Status Bit */ +#define XDMAC_CIS_DIS (0x1u << 2) /**< \brief (XDMAC_CIS) End of Disable Interrupt Status Bit */ +#define XDMAC_CIS_FIS (0x1u << 3) /**< \brief (XDMAC_CIS) End of Flush Interrupt Status Bit */ +#define XDMAC_CIS_RBEIS (0x1u << 4) /**< \brief (XDMAC_CIS) Read Bus Error Interrupt Status Bit */ +#define XDMAC_CIS_WBEIS (0x1u << 5) /**< \brief (XDMAC_CIS) Write Bus Error Interrupt Status Bit */ +#define XDMAC_CIS_ROIS (0x1u << 6) /**< \brief (XDMAC_CIS) Request Overflow Error Interrupt Status Bit */ +/* -------- XDMAC_CSA : (XDMAC Offset: N/A) Channel Source Address Register -------- */ +#define XDMAC_CSA_SA_Pos 0 +#define XDMAC_CSA_SA_Msk (0xffffffffu << XDMAC_CSA_SA_Pos) /**< \brief (XDMAC_CSA) Channel x Source Address */ +#define XDMAC_CSA_SA(value) ((XDMAC_CSA_SA_Msk & ((value) << XDMAC_CSA_SA_Pos))) +/* -------- XDMAC_CDA : (XDMAC Offset: N/A) Channel Destination Address Register -------- */ +#define XDMAC_CDA_DA_Pos 0 +#define XDMAC_CDA_DA_Msk (0xffffffffu << XDMAC_CDA_DA_Pos) /**< \brief (XDMAC_CDA) Channel x Destination Address */ +#define XDMAC_CDA_DA(value) ((XDMAC_CDA_DA_Msk & ((value) << XDMAC_CDA_DA_Pos))) +/* -------- XDMAC_CNDA : (XDMAC Offset: N/A) Channel Next Descriptor Address Register -------- */ +#define XDMAC_CNDA_NDAIF (0x1u << 0) /**< \brief (XDMAC_CNDA) Channel x Next Descriptor Interface */ +#define XDMAC_CNDA_NDA_Pos 2 +#define XDMAC_CNDA_NDA_Msk (0x3fffffffu << XDMAC_CNDA_NDA_Pos) /**< \brief (XDMAC_CNDA) Channel x Next Descriptor Address */ +#define XDMAC_CNDA_NDA(value) (XDMAC_CNDA_NDA_Msk & (value)) +/* -------- XDMAC_CNDC : (XDMAC Offset: N/A) Channel Next Descriptor Control Register -------- */ +#define XDMAC_CNDC_NDE (0x1u << 0) /**< \brief (XDMAC_CNDC) Channel x Next Descriptor Enable */ +#define XDMAC_CNDC_NDE_DSCR_FETCH_DIS (0x0u << 0) /**< \brief (XDMAC_CNDC) Descriptor fetch is disabled */ +#define XDMAC_CNDC_NDE_DSCR_FETCH_EN (0x1u << 0) /**< \brief (XDMAC_CNDC) Descriptor fetch is enabled */ +#define XDMAC_CNDC_NDSUP (0x1u << 1) /**< \brief (XDMAC_CNDC) Channel x Next Descriptor Source Update */ +#define XDMAC_CNDC_NDSUP_SRC_PARAMS_UNCHANGED (0x0u << 1) /**< \brief (XDMAC_CNDC) Source parameters remain unchanged. */ +#define XDMAC_CNDC_NDSUP_SRC_PARAMS_UPDATED (0x1u << 1) /**< \brief (XDMAC_CNDC) Source parameters are updated when the descriptor is retrieved. */ +#define XDMAC_CNDC_NDDUP (0x1u << 2) /**< \brief (XDMAC_CNDC) Channel x Next Descriptor Destination Update */ +#define XDMAC_CNDC_NDDUP_DST_PARAMS_UNCHANGED (0x0u << 2) /**< \brief (XDMAC_CNDC) Destination parameters remain unchanged. */ +#define XDMAC_CNDC_NDDUP_DST_PARAMS_UPDATED (0x1u << 2) /**< \brief (XDMAC_CNDC) Destination parameters are updated when the descriptor is retrieved. */ +#define XDMAC_CNDC_NDVIEW_Pos 3 +#define XDMAC_CNDC_NDVIEW_Msk (0x3u << XDMAC_CNDC_NDVIEW_Pos) /**< \brief (XDMAC_CNDC) Channel x Next Descriptor View */ +#define XDMAC_CNDC_NDVIEW(value) ((XDMAC_CNDC_NDVIEW_Msk & ((value) << XDMAC_CNDC_NDVIEW_Pos))) +#define XDMAC_CNDC_NDVIEW_NDV0 (0x0u << 3) /**< \brief (XDMAC_CNDC) Next Descriptor View 0 */ +#define XDMAC_CNDC_NDVIEW_NDV1 (0x1u << 3) /**< \brief (XDMAC_CNDC) Next Descriptor View 1 */ +#define XDMAC_CNDC_NDVIEW_NDV2 (0x2u << 3) /**< \brief (XDMAC_CNDC) Next Descriptor View 2 */ +#define XDMAC_CNDC_NDVIEW_NDV3 (0x3u << 3) /**< \brief (XDMAC_CNDC) Next Descriptor View 3 */ +/* -------- XDMAC_CUBC : (XDMAC Offset: N/A) Channel Microblock Control Register -------- */ +#define XDMAC_CUBC_UBLEN_Pos 0 +#define XDMAC_CUBC_UBLEN_Msk (0xffffffu << XDMAC_CUBC_UBLEN_Pos) /**< \brief (XDMAC_CUBC) Channel x Microblock Length */ +#define XDMAC_CUBC_UBLEN(value) ((XDMAC_CUBC_UBLEN_Msk & ((value) << XDMAC_CUBC_UBLEN_Pos))) +/* -------- XDMAC_CBC : (XDMAC Offset: N/A) Channel Block Control Register -------- */ +#define XDMAC_CBC_BLEN_Pos 0 +#define XDMAC_CBC_BLEN_Msk (0xfffu << XDMAC_CBC_BLEN_Pos) /**< \brief (XDMAC_CBC) Channel x Block Length */ +#define XDMAC_CBC_BLEN(value) ((XDMAC_CBC_BLEN_Msk & ((value) << XDMAC_CBC_BLEN_Pos))) +/* -------- XDMAC_CC : (XDMAC Offset: N/A) Channel Configuration Register -------- */ +#define XDMAC_CC_TYPE (0x1u << 0) /**< \brief (XDMAC_CC) Channel x Transfer Type */ +#define XDMAC_CC_TYPE_MEM_TRAN (0x0u << 0) /**< \brief (XDMAC_CC) Self triggered mode (Memory to Memory Transfer). */ +#define XDMAC_CC_TYPE_PER_TRAN (0x1u << 0) /**< \brief (XDMAC_CC) Synchronized mode (Peripheral to Memory or Memory to Peripheral Transfer). */ +#define XDMAC_CC_MBSIZE_Pos 1 +#define XDMAC_CC_MBSIZE_Msk (0x3u << XDMAC_CC_MBSIZE_Pos) /**< \brief (XDMAC_CC) Channel x Memory Burst Size */ +#define XDMAC_CC_MBSIZE(value) ((XDMAC_CC_MBSIZE_Msk & ((value) << XDMAC_CC_MBSIZE_Pos))) +#define XDMAC_CC_MBSIZE_SINGLE (0x0u << 1) /**< \brief (XDMAC_CC) The memory burst size is set to one. */ +#define XDMAC_CC_MBSIZE_FOUR (0x1u << 1) /**< \brief (XDMAC_CC) The memory burst size is set to four. */ +#define XDMAC_CC_MBSIZE_EIGHT (0x2u << 1) /**< \brief (XDMAC_CC) The memory burst size is set to eight. */ +#define XDMAC_CC_MBSIZE_SIXTEEN (0x3u << 1) /**< \brief (XDMAC_CC) The memory burst size is set to sixteen. */ +#define XDMAC_CC_DSYNC (0x1u << 4) /**< \brief (XDMAC_CC) Channel x Synchronization */ +#define XDMAC_CC_DSYNC_PER2MEM (0x0u << 4) /**< \brief (XDMAC_CC) Peripheral to Memory transfer */ +#define XDMAC_CC_DSYNC_MEM2PER (0x1u << 4) /**< \brief (XDMAC_CC) Memory to Peripheral transfer */ +#define XDMAC_CC_PROT (0x1u << 5) /**< \brief (XDMAC_CC) Channel x Protection */ +#define XDMAC_CC_PROT_SEC (0x0u << 5) /**< \brief (XDMAC_CC) Channel is secured */ +#define XDMAC_CC_PROT_UNSEC (0x1u << 5) /**< \brief (XDMAC_CC) Channel is unsecured */ +#define XDMAC_CC_SWREQ (0x1u << 6) /**< \brief (XDMAC_CC) Channel x Software Request Trigger */ +#define XDMAC_CC_SWREQ_HWR_CONNECTED (0x0u << 6) /**< \brief (XDMAC_CC) Hardware request line is connected to the peripheral request line. */ +#define XDMAC_CC_SWREQ_SWR_CONNECTED (0x1u << 6) /**< \brief (XDMAC_CC) Software request is connected to the peripheral request line. */ +#define XDMAC_CC_MEMSET (0x1u << 7) /**< \brief (XDMAC_CC) Channel x Fill Block of memory */ +#define XDMAC_CC_MEMSET_NORMAL_MODE (0x0u << 7) /**< \brief (XDMAC_CC) Memset is not activated */ +#define XDMAC_CC_MEMSET_HW_MODE (0x1u << 7) /**< \brief (XDMAC_CC) Sets the block of memory pointed by DA field to the specified value. This operation is performed on 8, 16 or 32 bits basis. */ +#define XDMAC_CC_CSIZE_Pos 8 +#define XDMAC_CC_CSIZE_Msk (0x7u << XDMAC_CC_CSIZE_Pos) /**< \brief (XDMAC_CC) Channel x Chunk Size */ +#define XDMAC_CC_CSIZE(value) ((XDMAC_CC_CSIZE_Msk & ((value) << XDMAC_CC_CSIZE_Pos))) +#define XDMAC_CC_CSIZE_CHK_1 (0x0u << 8) /**< \brief (XDMAC_CC) 1 data transferred */ +#define XDMAC_CC_CSIZE_CHK_2 (0x1u << 8) /**< \brief (XDMAC_CC) 2 data transferred */ +#define XDMAC_CC_CSIZE_CHK_4 (0x2u << 8) /**< \brief (XDMAC_CC) 4 data transferred */ +#define XDMAC_CC_CSIZE_CHK_8 (0x3u << 8) /**< \brief (XDMAC_CC) 8 data transferred */ +#define XDMAC_CC_CSIZE_CHK_16 (0x4u << 8) /**< \brief (XDMAC_CC) 16 data transferred */ +#define XDMAC_CC_DWIDTH_Pos 11 +#define XDMAC_CC_DWIDTH_Msk (0x3u << XDMAC_CC_DWIDTH_Pos) /**< \brief (XDMAC_CC) Channel x Data Width */ +#define XDMAC_CC_DWIDTH(value) ((XDMAC_CC_DWIDTH_Msk & ((value) << XDMAC_CC_DWIDTH_Pos))) +#define XDMAC_CC_DWIDTH_BYTE (0x0u << 11) /**< \brief (XDMAC_CC) The data size is set to 8 bits */ +#define XDMAC_CC_DWIDTH_HALFWORD (0x1u << 11) /**< \brief (XDMAC_CC) The data size is set to 16 bits */ +#define XDMAC_CC_DWIDTH_WORD (0x2u << 11) /**< \brief (XDMAC_CC) The data size is set to 32 bits */ +#define XDMAC_CC_SIF (0x1u << 13) /**< \brief (XDMAC_CC) Channel x Source Interface Identifier */ +#define XDMAC_CC_SIF_AHB_IF0 (0x0u << 13) /**< \brief (XDMAC_CC) The data is read through the system bus interface 0 */ +#define XDMAC_CC_SIF_AHB_IF1 (0x1u << 13) /**< \brief (XDMAC_CC) The data is read through the system bus interface 1 */ +#define XDMAC_CC_DIF (0x1u << 14) /**< \brief (XDMAC_CC) Channel x Destination Interface Identifier */ +#define XDMAC_CC_DIF_AHB_IF0 (0x0u << 14) /**< \brief (XDMAC_CC) The data is written through the system bus interface 0 */ +#define XDMAC_CC_DIF_AHB_IF1 (0x1u << 14) /**< \brief (XDMAC_CC) The data is written though the system bus interface 1 */ +#define XDMAC_CC_SAM_Pos 16 +#define XDMAC_CC_SAM_Msk (0x3u << XDMAC_CC_SAM_Pos) /**< \brief (XDMAC_CC) Channel x Source Addressing Mode */ +#define XDMAC_CC_SAM(value) ((XDMAC_CC_SAM_Msk & ((value) << XDMAC_CC_SAM_Pos))) +#define XDMAC_CC_SAM_FIXED_AM (0x0u << 16) /**< \brief (XDMAC_CC) The address remains unchanged. */ +#define XDMAC_CC_SAM_INCREMENTED_AM (0x1u << 16) /**< \brief (XDMAC_CC) The addressing mode is incremented (the increment size is set to the data size). */ +#define XDMAC_CC_SAM_UBS_AM (0x2u << 16) /**< \brief (XDMAC_CC) The microblock stride is added at the microblock boundary. */ +#define XDMAC_CC_SAM_UBS_DS_AM (0x3u << 16) /**< \brief (XDMAC_CC) The microblock stride is added at the microblock boundary, the data stride is added at the data boundary. */ +#define XDMAC_CC_DAM_Pos 18 +#define XDMAC_CC_DAM_Msk (0x3u << XDMAC_CC_DAM_Pos) /**< \brief (XDMAC_CC) Channel x Destination Addressing Mode */ +#define XDMAC_CC_DAM(value) ((XDMAC_CC_DAM_Msk & ((value) << XDMAC_CC_DAM_Pos))) +#define XDMAC_CC_DAM_FIXED_AM (0x0u << 18) /**< \brief (XDMAC_CC) The address remains unchanged. */ +#define XDMAC_CC_DAM_INCREMENTED_AM (0x1u << 18) /**< \brief (XDMAC_CC) The addressing mode is incremented (the increment size is set to the data size). */ +#define XDMAC_CC_DAM_UBS_AM (0x2u << 18) /**< \brief (XDMAC_CC) The microblock stride is added at the microblock boundary. */ +#define XDMAC_CC_DAM_UBS_DS_AM (0x3u << 18) /**< \brief (XDMAC_CC) The microblock stride is added at the microblock boundary, the data stride is added at the data boundary. */ +#define XDMAC_CC_INITD (0x1u << 21) /**< \brief (XDMAC_CC) Channel Initialization Terminated (this bit is read-only) */ +#define XDMAC_CC_INITD_IN_PROGRESS (0x0u << 21) /**< \brief (XDMAC_CC) Channel initialization is in progress. */ +#define XDMAC_CC_INITD_TERMINATED (0x1u << 21) /**< \brief (XDMAC_CC) Channel initialization is completed. */ +#define XDMAC_CC_RDIP (0x1u << 22) /**< \brief (XDMAC_CC) Read in Progress (this bit is read-only) */ +#define XDMAC_CC_RDIP_DONE (0x0u << 22) /**< \brief (XDMAC_CC) No Active read transaction on the bus. */ +#define XDMAC_CC_RDIP_IN_PROGRESS (0x1u << 22) /**< \brief (XDMAC_CC) A read transaction is in progress. */ +#define XDMAC_CC_WRIP (0x1u << 23) /**< \brief (XDMAC_CC) Write in Progress (this bit is read-only) */ +#define XDMAC_CC_WRIP_DONE (0x0u << 23) /**< \brief (XDMAC_CC) No Active write transaction on the bus. */ +#define XDMAC_CC_WRIP_IN_PROGRESS (0x1u << 23) /**< \brief (XDMAC_CC) A Write transaction is in progress. */ +#define XDMAC_CC_PERID_Pos 24 +#define XDMAC_CC_PERID_Msk (0x7fu << XDMAC_CC_PERID_Pos) /**< \brief (XDMAC_CC) Channel x Peripheral Identifier */ +#define XDMAC_CC_PERID(value) ((XDMAC_CC_PERID_Msk & ((value) << XDMAC_CC_PERID_Pos))) +/* -------- XDMAC_CDS_MSP : (XDMAC Offset: N/A) Channel Data Stride Memory Set Pattern -------- */ +#define XDMAC_CDS_MSP_SDS_MSP_Pos 0 +#define XDMAC_CDS_MSP_SDS_MSP_Msk (0xffffu << XDMAC_CDS_MSP_SDS_MSP_Pos) /**< \brief (XDMAC_CDS_MSP) Channel x Source Data stride or Memory Set Pattern */ +#define XDMAC_CDS_MSP_SDS_MSP(value) ((XDMAC_CDS_MSP_SDS_MSP_Msk & ((value) << XDMAC_CDS_MSP_SDS_MSP_Pos))) +#define XDMAC_CDS_MSP_DDS_MSP_Pos 16 +#define XDMAC_CDS_MSP_DDS_MSP_Msk (0xffffu << XDMAC_CDS_MSP_DDS_MSP_Pos) /**< \brief (XDMAC_CDS_MSP) Channel x Destination Data Stride or Memory Set Pattern */ +#define XDMAC_CDS_MSP_DDS_MSP(value) ((XDMAC_CDS_MSP_DDS_MSP_Msk & ((value) << XDMAC_CDS_MSP_DDS_MSP_Pos))) +/* -------- XDMAC_CSUS : (XDMAC Offset: N/A) Channel Source Microblock Stride -------- */ +#define XDMAC_CSUS_SUBS_Pos 0 +#define XDMAC_CSUS_SUBS_Msk (0xffffffu << XDMAC_CSUS_SUBS_Pos) /**< \brief (XDMAC_CSUS) Channel x Source Microblock Stride */ +#define XDMAC_CSUS_SUBS(value) ((XDMAC_CSUS_SUBS_Msk & ((value) << XDMAC_CSUS_SUBS_Pos))) +/* -------- XDMAC_CDUS : (XDMAC Offset: N/A) Channel Destination Microblock Stride -------- */ +#define XDMAC_CDUS_DUBS_Pos 0 +#define XDMAC_CDUS_DUBS_Msk (0xffffffu << XDMAC_CDUS_DUBS_Pos) /**< \brief (XDMAC_CDUS) Channel x Destination Microblock Stride */ +#define XDMAC_CDUS_DUBS(value) ((XDMAC_CDUS_DUBS_Msk & ((value) << XDMAC_CDUS_DUBS_Pos))) +/* -------- XDMAC_VERSION : (XDMAC Offset: 0xFFC) XDMAC Version Register -------- */ +#define XDMAC_VERSION_VERSION_Pos 0 +#define XDMAC_VERSION_VERSION_Msk (0xfffu << XDMAC_VERSION_VERSION_Pos) /**< \brief (XDMAC_VERSION) Version of the Hardware Module */ +#define XDMAC_VERSION_VERSION(value) ((XDMAC_VERSION_VERSION_Msk & ((value) << XDMAC_VERSION_VERSION_Pos))) +#define XDMAC_VERSION_MFN_Pos 16 +#define XDMAC_VERSION_MFN_Msk (0x7u << XDMAC_VERSION_MFN_Pos) /**< \brief (XDMAC_VERSION) Metal Fix Number */ +#define XDMAC_VERSION_MFN(value) ((XDMAC_VERSION_MFN_Msk & ((value) << XDMAC_VERSION_MFN_Pos))) + +/*@}*/ + + +#endif /* _SAME70_XDMAC_COMPONENT_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h new file mode 100644 index 00000000..f447d25c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h @@ -0,0 +1,63 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_ACC_INSTANCE_ +#define _SAME70_ACC_INSTANCE_ + +/* ========== Register definition for ACC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_ACC_CR (0x40044000U) /**< \brief (ACC) Control Register */ + #define REG_ACC_MR (0x40044004U) /**< \brief (ACC) Mode Register */ + #define REG_ACC_IER (0x40044024U) /**< \brief (ACC) Interrupt Enable Register */ + #define REG_ACC_IDR (0x40044028U) /**< \brief (ACC) Interrupt Disable Register */ + #define REG_ACC_IMR (0x4004402CU) /**< \brief (ACC) Interrupt Mask Register */ + #define REG_ACC_ISR (0x40044030U) /**< \brief (ACC) Interrupt Status Register */ + #define REG_ACC_ACR (0x40044094U) /**< \brief (ACC) Analog Control Register */ + #define REG_ACC_WPMR (0x400440E4U) /**< \brief (ACC) Write Protection Mode Register */ + #define REG_ACC_WPSR (0x400440E8U) /**< \brief (ACC) Write Protection Status Register */ + #define REG_ACC_VER (0x400440FCU) /**< \brief (ACC) Version Register */ +#else + #define REG_ACC_CR (*(__O uint32_t*)0x40044000U) /**< \brief (ACC) Control Register */ + #define REG_ACC_MR (*(__IO uint32_t*)0x40044004U) /**< \brief (ACC) Mode Register */ + #define REG_ACC_IER (*(__O uint32_t*)0x40044024U) /**< \brief (ACC) Interrupt Enable Register */ + #define REG_ACC_IDR (*(__O uint32_t*)0x40044028U) /**< \brief (ACC) Interrupt Disable Register */ + #define REG_ACC_IMR (*(__I uint32_t*)0x4004402CU) /**< \brief (ACC) Interrupt Mask Register */ + #define REG_ACC_ISR (*(__I uint32_t*)0x40044030U) /**< \brief (ACC) Interrupt Status Register */ + #define REG_ACC_ACR (*(__IO uint32_t*)0x40044094U) /**< \brief (ACC) Analog Control Register */ + #define REG_ACC_WPMR (*(__IO uint32_t*)0x400440E4U) /**< \brief (ACC) Write Protection Mode Register */ + #define REG_ACC_WPSR (*(__I uint32_t*)0x400440E8U) /**< \brief (ACC) Write Protection Status Register */ + #define REG_ACC_VER (*(__I uint32_t*)0x400440FCU) /**< \brief (ACC) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_ACC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h new file mode 100644 index 00000000..713ced12 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h @@ -0,0 +1,77 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_AES_INSTANCE_ +#define _SAME70_AES_INSTANCE_ + +/* ========== Register definition for AES peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_AES_CR (0x4006C000U) /**< \brief (AES) Control Register */ + #define REG_AES_MR (0x4006C004U) /**< \brief (AES) Mode Register */ + #define REG_AES_IER (0x4006C010U) /**< \brief (AES) Interrupt Enable Register */ + #define REG_AES_IDR (0x4006C014U) /**< \brief (AES) Interrupt Disable Register */ + #define REG_AES_IMR (0x4006C018U) /**< \brief (AES) Interrupt Mask Register */ + #define REG_AES_ISR (0x4006C01CU) /**< \brief (AES) Interrupt Status Register */ + #define REG_AES_KEYWR (0x4006C020U) /**< \brief (AES) Key Word Register */ + #define REG_AES_IDATAR (0x4006C040U) /**< \brief (AES) Input Data Register */ + #define REG_AES_ODATAR (0x4006C050U) /**< \brief (AES) Output Data Register */ + #define REG_AES_IVR (0x4006C060U) /**< \brief (AES) Initialization Vector Register */ + #define REG_AES_AADLENR (0x4006C070U) /**< \brief (AES) Additional Authenticated Data Length Register */ + #define REG_AES_CLENR (0x4006C074U) /**< \brief (AES) Plaintext/Ciphertext Length Register */ + #define REG_AES_GHASHR (0x4006C078U) /**< \brief (AES) GCM Intermediate Hash Word Register */ + #define REG_AES_TAGR (0x4006C088U) /**< \brief (AES) GCM Authentication Tag Word Register */ + #define REG_AES_CTRR (0x4006C098U) /**< \brief (AES) GCM Encryption Counter Value Register */ + #define REG_AES_GCMHR (0x4006C09CU) /**< \brief (AES) GCM H Word Register */ + #define REG_AES_VERSION (0x4006C0FCU) /**< \brief (AES) Version Register */ +#else + #define REG_AES_CR (*(__O uint32_t*)0x4006C000U) /**< \brief (AES) Control Register */ + #define REG_AES_MR (*(__IO uint32_t*)0x4006C004U) /**< \brief (AES) Mode Register */ + #define REG_AES_IER (*(__O uint32_t*)0x4006C010U) /**< \brief (AES) Interrupt Enable Register */ + #define REG_AES_IDR (*(__O uint32_t*)0x4006C014U) /**< \brief (AES) Interrupt Disable Register */ + #define REG_AES_IMR (*(__I uint32_t*)0x4006C018U) /**< \brief (AES) Interrupt Mask Register */ + #define REG_AES_ISR (*(__I uint32_t*)0x4006C01CU) /**< \brief (AES) Interrupt Status Register */ + #define REG_AES_KEYWR (*(__O uint32_t*)0x4006C020U) /**< \brief (AES) Key Word Register */ + #define REG_AES_IDATAR (*(__O uint32_t*)0x4006C040U) /**< \brief (AES) Input Data Register */ + #define REG_AES_ODATAR (*(__I uint32_t*)0x4006C050U) /**< \brief (AES) Output Data Register */ + #define REG_AES_IVR (*(__O uint32_t*)0x4006C060U) /**< \brief (AES) Initialization Vector Register */ + #define REG_AES_AADLENR (*(__IO uint32_t*)0x4006C070U) /**< \brief (AES) Additional Authenticated Data Length Register */ + #define REG_AES_CLENR (*(__IO uint32_t*)0x4006C074U) /**< \brief (AES) Plaintext/Ciphertext Length Register */ + #define REG_AES_GHASHR (*(__IO uint32_t*)0x4006C078U) /**< \brief (AES) GCM Intermediate Hash Word Register */ + #define REG_AES_TAGR (*(__I uint32_t*)0x4006C088U) /**< \brief (AES) GCM Authentication Tag Word Register */ + #define REG_AES_CTRR (*(__I uint32_t*)0x4006C098U) /**< \brief (AES) GCM Encryption Counter Value Register */ + #define REG_AES_GCMHR (*(__IO uint32_t*)0x4006C09CU) /**< \brief (AES) GCM H Word Register */ + #define REG_AES_VERSION (*(__I uint32_t*)0x4006C0FCU) /**< \brief (AES) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_AES_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h new file mode 100644 index 00000000..2bf7de21 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h @@ -0,0 +1,103 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_AFEC0_INSTANCE_ +#define _SAME70_AFEC0_INSTANCE_ + +/* ========== Register definition for AFEC0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_AFEC0_CR (0x4003C000U) /**< \brief (AFEC0) AFEC Control Register */ + #define REG_AFEC0_MR (0x4003C004U) /**< \brief (AFEC0) AFEC Mode Register */ + #define REG_AFEC0_EMR (0x4003C008U) /**< \brief (AFEC0) AFEC Extended Mode Register */ + #define REG_AFEC0_SEQ1R (0x4003C00CU) /**< \brief (AFEC0) AFEC Channel Sequence 1 Register */ + #define REG_AFEC0_SEQ2R (0x4003C010U) /**< \brief (AFEC0) AFEC Channel Sequence 2 Register */ + #define REG_AFEC0_CHER (0x4003C014U) /**< \brief (AFEC0) AFEC Channel Enable Register */ + #define REG_AFEC0_CHDR (0x4003C018U) /**< \brief (AFEC0) AFEC Channel Disable Register */ + #define REG_AFEC0_CHSR (0x4003C01CU) /**< \brief (AFEC0) AFEC Channel Status Register */ + #define REG_AFEC0_LCDR (0x4003C020U) /**< \brief (AFEC0) AFEC Last Converted Data Register */ + #define REG_AFEC0_IER (0x4003C024U) /**< \brief (AFEC0) AFEC Interrupt Enable Register */ + #define REG_AFEC0_IDR (0x4003C028U) /**< \brief (AFEC0) AFEC Interrupt Disable Register */ + #define REG_AFEC0_IMR (0x4003C02CU) /**< \brief (AFEC0) AFEC Interrupt Mask Register */ + #define REG_AFEC0_ISR (0x4003C030U) /**< \brief (AFEC0) AFEC Interrupt Status Register */ + #define REG_AFEC0_OVER (0x4003C04CU) /**< \brief (AFEC0) AFEC Overrun Status Register */ + #define REG_AFEC0_CWR (0x4003C050U) /**< \brief (AFEC0) AFEC Compare Window Register */ + #define REG_AFEC0_CGR (0x4003C054U) /**< \brief (AFEC0) AFEC Channel Gain Register */ + #define REG_AFEC0_DIFFR (0x4003C060U) /**< \brief (AFEC0) AFEC Channel Differential Register */ + #define REG_AFEC0_CSELR (0x4003C064U) /**< \brief (AFEC0) AFEC Channel Selection Register */ + #define REG_AFEC0_CDR (0x4003C068U) /**< \brief (AFEC0) AFEC Channel Data Register */ + #define REG_AFEC0_COCR (0x4003C06CU) /**< \brief (AFEC0) AFEC Channel Offset Compensation Register */ + #define REG_AFEC0_TEMPMR (0x4003C070U) /**< \brief (AFEC0) AFEC Temperature Sensor Mode Register */ + #define REG_AFEC0_TEMPCWR (0x4003C074U) /**< \brief (AFEC0) AFEC Temperature Compare Window Register */ + #define REG_AFEC0_ACR (0x4003C094U) /**< \brief (AFEC0) AFEC Analog Control Register */ + #define REG_AFEC0_SHMR (0x4003C0A0U) /**< \brief (AFEC0) AFEC Sample & Hold Mode Register */ + #define REG_AFEC0_COSR (0x4003C0D0U) /**< \brief (AFEC0) AFEC Correction Select Register */ + #define REG_AFEC0_CVR (0x4003C0D4U) /**< \brief (AFEC0) AFEC Correction Values Register */ + #define REG_AFEC0_CECR (0x4003C0D8U) /**< \brief (AFEC0) AFEC Channel Error Correction Register */ + #define REG_AFEC0_WPMR (0x4003C0E4U) /**< \brief (AFEC0) AFEC Write Protection Mode Register */ + #define REG_AFEC0_WPSR (0x4003C0E8U) /**< \brief (AFEC0) AFEC Write Protection Status Register */ + #define REG_AFEC0_VERSION (0x4003C0FCU) /**< \brief (AFEC0) AFEC Version Register */ +#else + #define REG_AFEC0_CR (*(__O uint32_t*)0x4003C000U) /**< \brief (AFEC0) AFEC Control Register */ + #define REG_AFEC0_MR (*(__IO uint32_t*)0x4003C004U) /**< \brief (AFEC0) AFEC Mode Register */ + #define REG_AFEC0_EMR (*(__IO uint32_t*)0x4003C008U) /**< \brief (AFEC0) AFEC Extended Mode Register */ + #define REG_AFEC0_SEQ1R (*(__IO uint32_t*)0x4003C00CU) /**< \brief (AFEC0) AFEC Channel Sequence 1 Register */ + #define REG_AFEC0_SEQ2R (*(__IO uint32_t*)0x4003C010U) /**< \brief (AFEC0) AFEC Channel Sequence 2 Register */ + #define REG_AFEC0_CHER (*(__O uint32_t*)0x4003C014U) /**< \brief (AFEC0) AFEC Channel Enable Register */ + #define REG_AFEC0_CHDR (*(__O uint32_t*)0x4003C018U) /**< \brief (AFEC0) AFEC Channel Disable Register */ + #define REG_AFEC0_CHSR (*(__I uint32_t*)0x4003C01CU) /**< \brief (AFEC0) AFEC Channel Status Register */ + #define REG_AFEC0_LCDR (*(__I uint32_t*)0x4003C020U) /**< \brief (AFEC0) AFEC Last Converted Data Register */ + #define REG_AFEC0_IER (*(__O uint32_t*)0x4003C024U) /**< \brief (AFEC0) AFEC Interrupt Enable Register */ + #define REG_AFEC0_IDR (*(__O uint32_t*)0x4003C028U) /**< \brief (AFEC0) AFEC Interrupt Disable Register */ + #define REG_AFEC0_IMR (*(__I uint32_t*)0x4003C02CU) /**< \brief (AFEC0) AFEC Interrupt Mask Register */ + #define REG_AFEC0_ISR (*(__I uint32_t*)0x4003C030U) /**< \brief (AFEC0) AFEC Interrupt Status Register */ + #define REG_AFEC0_OVER (*(__I uint32_t*)0x4003C04CU) /**< \brief (AFEC0) AFEC Overrun Status Register */ + #define REG_AFEC0_CWR (*(__IO uint32_t*)0x4003C050U) /**< \brief (AFEC0) AFEC Compare Window Register */ + #define REG_AFEC0_CGR (*(__IO uint32_t*)0x4003C054U) /**< \brief (AFEC0) AFEC Channel Gain Register */ + #define REG_AFEC0_DIFFR (*(__IO uint32_t*)0x4003C060U) /**< \brief (AFEC0) AFEC Channel Differential Register */ + #define REG_AFEC0_CSELR (*(__IO uint32_t*)0x4003C064U) /**< \brief (AFEC0) AFEC Channel Selection Register */ + #define REG_AFEC0_CDR (*(__I uint32_t*)0x4003C068U) /**< \brief (AFEC0) AFEC Channel Data Register */ + #define REG_AFEC0_COCR (*(__IO uint32_t*)0x4003C06CU) /**< \brief (AFEC0) AFEC Channel Offset Compensation Register */ + #define REG_AFEC0_TEMPMR (*(__IO uint32_t*)0x4003C070U) /**< \brief (AFEC0) AFEC Temperature Sensor Mode Register */ + #define REG_AFEC0_TEMPCWR (*(__IO uint32_t*)0x4003C074U) /**< \brief (AFEC0) AFEC Temperature Compare Window Register */ + #define REG_AFEC0_ACR (*(__IO uint32_t*)0x4003C094U) /**< \brief (AFEC0) AFEC Analog Control Register */ + #define REG_AFEC0_SHMR (*(__IO uint32_t*)0x4003C0A0U) /**< \brief (AFEC0) AFEC Sample & Hold Mode Register */ + #define REG_AFEC0_COSR (*(__IO uint32_t*)0x4003C0D0U) /**< \brief (AFEC0) AFEC Correction Select Register */ + #define REG_AFEC0_CVR (*(__IO uint32_t*)0x4003C0D4U) /**< \brief (AFEC0) AFEC Correction Values Register */ + #define REG_AFEC0_CECR (*(__IO uint32_t*)0x4003C0D8U) /**< \brief (AFEC0) AFEC Channel Error Correction Register */ + #define REG_AFEC0_WPMR (*(__IO uint32_t*)0x4003C0E4U) /**< \brief (AFEC0) AFEC Write Protection Mode Register */ + #define REG_AFEC0_WPSR (*(__I uint32_t*)0x4003C0E8U) /**< \brief (AFEC0) AFEC Write Protection Status Register */ + #define REG_AFEC0_VERSION (*(__I uint32_t*)0x4003C0FCU) /**< \brief (AFEC0) AFEC Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_AFEC0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h new file mode 100644 index 00000000..9713876a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h @@ -0,0 +1,103 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_AFEC1_INSTANCE_ +#define _SAME70_AFEC1_INSTANCE_ + +/* ========== Register definition for AFEC1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_AFEC1_CR (0x40064000U) /**< \brief (AFEC1) AFEC Control Register */ + #define REG_AFEC1_MR (0x40064004U) /**< \brief (AFEC1) AFEC Mode Register */ + #define REG_AFEC1_EMR (0x40064008U) /**< \brief (AFEC1) AFEC Extended Mode Register */ + #define REG_AFEC1_SEQ1R (0x4006400CU) /**< \brief (AFEC1) AFEC Channel Sequence 1 Register */ + #define REG_AFEC1_SEQ2R (0x40064010U) /**< \brief (AFEC1) AFEC Channel Sequence 2 Register */ + #define REG_AFEC1_CHER (0x40064014U) /**< \brief (AFEC1) AFEC Channel Enable Register */ + #define REG_AFEC1_CHDR (0x40064018U) /**< \brief (AFEC1) AFEC Channel Disable Register */ + #define REG_AFEC1_CHSR (0x4006401CU) /**< \brief (AFEC1) AFEC Channel Status Register */ + #define REG_AFEC1_LCDR (0x40064020U) /**< \brief (AFEC1) AFEC Last Converted Data Register */ + #define REG_AFEC1_IER (0x40064024U) /**< \brief (AFEC1) AFEC Interrupt Enable Register */ + #define REG_AFEC1_IDR (0x40064028U) /**< \brief (AFEC1) AFEC Interrupt Disable Register */ + #define REG_AFEC1_IMR (0x4006402CU) /**< \brief (AFEC1) AFEC Interrupt Mask Register */ + #define REG_AFEC1_ISR (0x40064030U) /**< \brief (AFEC1) AFEC Interrupt Status Register */ + #define REG_AFEC1_OVER (0x4006404CU) /**< \brief (AFEC1) AFEC Overrun Status Register */ + #define REG_AFEC1_CWR (0x40064050U) /**< \brief (AFEC1) AFEC Compare Window Register */ + #define REG_AFEC1_CGR (0x40064054U) /**< \brief (AFEC1) AFEC Channel Gain Register */ + #define REG_AFEC1_DIFFR (0x40064060U) /**< \brief (AFEC1) AFEC Channel Differential Register */ + #define REG_AFEC1_CSELR (0x40064064U) /**< \brief (AFEC1) AFEC Channel Selection Register */ + #define REG_AFEC1_CDR (0x40064068U) /**< \brief (AFEC1) AFEC Channel Data Register */ + #define REG_AFEC1_COCR (0x4006406CU) /**< \brief (AFEC1) AFEC Channel Offset Compensation Register */ + #define REG_AFEC1_TEMPMR (0x40064070U) /**< \brief (AFEC1) AFEC Temperature Sensor Mode Register */ + #define REG_AFEC1_TEMPCWR (0x40064074U) /**< \brief (AFEC1) AFEC Temperature Compare Window Register */ + #define REG_AFEC1_ACR (0x40064094U) /**< \brief (AFEC1) AFEC Analog Control Register */ + #define REG_AFEC1_SHMR (0x400640A0U) /**< \brief (AFEC1) AFEC Sample & Hold Mode Register */ + #define REG_AFEC1_COSR (0x400640D0U) /**< \brief (AFEC1) AFEC Correction Select Register */ + #define REG_AFEC1_CVR (0x400640D4U) /**< \brief (AFEC1) AFEC Correction Values Register */ + #define REG_AFEC1_CECR (0x400640D8U) /**< \brief (AFEC1) AFEC Channel Error Correction Register */ + #define REG_AFEC1_WPMR (0x400640E4U) /**< \brief (AFEC1) AFEC Write Protection Mode Register */ + #define REG_AFEC1_WPSR (0x400640E8U) /**< \brief (AFEC1) AFEC Write Protection Status Register */ + #define REG_AFEC1_VERSION (0x400640FCU) /**< \brief (AFEC1) AFEC Version Register */ +#else + #define REG_AFEC1_CR (*(__O uint32_t*)0x40064000U) /**< \brief (AFEC1) AFEC Control Register */ + #define REG_AFEC1_MR (*(__IO uint32_t*)0x40064004U) /**< \brief (AFEC1) AFEC Mode Register */ + #define REG_AFEC1_EMR (*(__IO uint32_t*)0x40064008U) /**< \brief (AFEC1) AFEC Extended Mode Register */ + #define REG_AFEC1_SEQ1R (*(__IO uint32_t*)0x4006400CU) /**< \brief (AFEC1) AFEC Channel Sequence 1 Register */ + #define REG_AFEC1_SEQ2R (*(__IO uint32_t*)0x40064010U) /**< \brief (AFEC1) AFEC Channel Sequence 2 Register */ + #define REG_AFEC1_CHER (*(__O uint32_t*)0x40064014U) /**< \brief (AFEC1) AFEC Channel Enable Register */ + #define REG_AFEC1_CHDR (*(__O uint32_t*)0x40064018U) /**< \brief (AFEC1) AFEC Channel Disable Register */ + #define REG_AFEC1_CHSR (*(__I uint32_t*)0x4006401CU) /**< \brief (AFEC1) AFEC Channel Status Register */ + #define REG_AFEC1_LCDR (*(__I uint32_t*)0x40064020U) /**< \brief (AFEC1) AFEC Last Converted Data Register */ + #define REG_AFEC1_IER (*(__O uint32_t*)0x40064024U) /**< \brief (AFEC1) AFEC Interrupt Enable Register */ + #define REG_AFEC1_IDR (*(__O uint32_t*)0x40064028U) /**< \brief (AFEC1) AFEC Interrupt Disable Register */ + #define REG_AFEC1_IMR (*(__I uint32_t*)0x4006402CU) /**< \brief (AFEC1) AFEC Interrupt Mask Register */ + #define REG_AFEC1_ISR (*(__I uint32_t*)0x40064030U) /**< \brief (AFEC1) AFEC Interrupt Status Register */ + #define REG_AFEC1_OVER (*(__I uint32_t*)0x4006404CU) /**< \brief (AFEC1) AFEC Overrun Status Register */ + #define REG_AFEC1_CWR (*(__IO uint32_t*)0x40064050U) /**< \brief (AFEC1) AFEC Compare Window Register */ + #define REG_AFEC1_CGR (*(__IO uint32_t*)0x40064054U) /**< \brief (AFEC1) AFEC Channel Gain Register */ + #define REG_AFEC1_DIFFR (*(__IO uint32_t*)0x40064060U) /**< \brief (AFEC1) AFEC Channel Differential Register */ + #define REG_AFEC1_CSELR (*(__IO uint32_t*)0x40064064U) /**< \brief (AFEC1) AFEC Channel Selection Register */ + #define REG_AFEC1_CDR (*(__I uint32_t*)0x40064068U) /**< \brief (AFEC1) AFEC Channel Data Register */ + #define REG_AFEC1_COCR (*(__IO uint32_t*)0x4006406CU) /**< \brief (AFEC1) AFEC Channel Offset Compensation Register */ + #define REG_AFEC1_TEMPMR (*(__IO uint32_t*)0x40064070U) /**< \brief (AFEC1) AFEC Temperature Sensor Mode Register */ + #define REG_AFEC1_TEMPCWR (*(__IO uint32_t*)0x40064074U) /**< \brief (AFEC1) AFEC Temperature Compare Window Register */ + #define REG_AFEC1_ACR (*(__IO uint32_t*)0x40064094U) /**< \brief (AFEC1) AFEC Analog Control Register */ + #define REG_AFEC1_SHMR (*(__IO uint32_t*)0x400640A0U) /**< \brief (AFEC1) AFEC Sample & Hold Mode Register */ + #define REG_AFEC1_COSR (*(__IO uint32_t*)0x400640D0U) /**< \brief (AFEC1) AFEC Correction Select Register */ + #define REG_AFEC1_CVR (*(__IO uint32_t*)0x400640D4U) /**< \brief (AFEC1) AFEC Correction Values Register */ + #define REG_AFEC1_CECR (*(__IO uint32_t*)0x400640D8U) /**< \brief (AFEC1) AFEC Channel Error Correction Register */ + #define REG_AFEC1_WPMR (*(__IO uint32_t*)0x400640E4U) /**< \brief (AFEC1) AFEC Write Protection Mode Register */ + #define REG_AFEC1_WPSR (*(__I uint32_t*)0x400640E8U) /**< \brief (AFEC1) AFEC Write Protection Status Register */ + #define REG_AFEC1_VERSION (*(__I uint32_t*)0x400640FCU) /**< \brief (AFEC1) AFEC Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_AFEC1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h new file mode 100644 index 00000000..9062e137 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h @@ -0,0 +1,47 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_CHIPID_INSTANCE_ +#define _SAME70_CHIPID_INSTANCE_ + +/* ========== Register definition for CHIPID peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_CHIPID_CIDR (0x400E0940U) /**< \brief (CHIPID) Chip ID Register */ + #define REG_CHIPID_EXID (0x400E0944U) /**< \brief (CHIPID) Chip ID Extension Register */ +#else + #define REG_CHIPID_CIDR (*(__I uint32_t*)0x400E0940U) /**< \brief (CHIPID) Chip ID Register */ + #define REG_CHIPID_EXID (*(__I uint32_t*)0x400E0944U) /**< \brief (CHIPID) Chip ID Extension Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_CHIPID_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h new file mode 100644 index 00000000..5f7d6827 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h @@ -0,0 +1,73 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_DACC_INSTANCE_ +#define _SAME70_DACC_INSTANCE_ + +/* ========== Register definition for DACC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_DACC_CR (0x40040000U) /**< \brief (DACC) Control Register */ + #define REG_DACC_MR (0x40040004U) /**< \brief (DACC) Mode Register */ + #define REG_DACC_TRIGR (0x40040008U) /**< \brief (DACC) Trigger Register */ + #define REG_DACC_CHER (0x40040010U) /**< \brief (DACC) Channel Enable Register */ + #define REG_DACC_CHDR (0x40040014U) /**< \brief (DACC) Channel Disable Register */ + #define REG_DACC_CHSR (0x40040018U) /**< \brief (DACC) Channel Status Register */ + #define REG_DACC_CDR (0x4004001CU) /**< \brief (DACC) Conversion Data Register */ + #define REG_DACC_IER (0x40040024U) /**< \brief (DACC) Interrupt Enable Register */ + #define REG_DACC_IDR (0x40040028U) /**< \brief (DACC) Interrupt Disable Register */ + #define REG_DACC_IMR (0x4004002CU) /**< \brief (DACC) Interrupt Mask Register */ + #define REG_DACC_ISR (0x40040030U) /**< \brief (DACC) Interrupt Status Register */ + #define REG_DACC_ACR (0x40040094U) /**< \brief (DACC) Analog Current Register */ + #define REG_DACC_WPMR (0x400400E4U) /**< \brief (DACC) Write Protection Mode Register */ + #define REG_DACC_WPSR (0x400400E8U) /**< \brief (DACC) Write Protection Status Register */ + #define REG_DACC_VERSION (0x400400FCU) /**< \brief (DACC) Version Register */ +#else + #define REG_DACC_CR (*(__O uint32_t*)0x40040000U) /**< \brief (DACC) Control Register */ + #define REG_DACC_MR (*(__IO uint32_t*)0x40040004U) /**< \brief (DACC) Mode Register */ + #define REG_DACC_TRIGR (*(__IO uint32_t*)0x40040008U) /**< \brief (DACC) Trigger Register */ + #define REG_DACC_CHER (*(__O uint32_t*)0x40040010U) /**< \brief (DACC) Channel Enable Register */ + #define REG_DACC_CHDR (*(__O uint32_t*)0x40040014U) /**< \brief (DACC) Channel Disable Register */ + #define REG_DACC_CHSR (*(__I uint32_t*)0x40040018U) /**< \brief (DACC) Channel Status Register */ + #define REG_DACC_CDR (*(__O uint32_t*)0x4004001CU) /**< \brief (DACC) Conversion Data Register */ + #define REG_DACC_IER (*(__O uint32_t*)0x40040024U) /**< \brief (DACC) Interrupt Enable Register */ + #define REG_DACC_IDR (*(__O uint32_t*)0x40040028U) /**< \brief (DACC) Interrupt Disable Register */ + #define REG_DACC_IMR (*(__I uint32_t*)0x4004002CU) /**< \brief (DACC) Interrupt Mask Register */ + #define REG_DACC_ISR (*(__I uint32_t*)0x40040030U) /**< \brief (DACC) Interrupt Status Register */ + #define REG_DACC_ACR (*(__IO uint32_t*)0x40040094U) /**< \brief (DACC) Analog Current Register */ + #define REG_DACC_WPMR (*(__IO uint32_t*)0x400400E4U) /**< \brief (DACC) Write Protection Mode Register */ + #define REG_DACC_WPSR (*(__I uint32_t*)0x400400E8U) /**< \brief (DACC) Write Protection Status Register */ + #define REG_DACC_VERSION (*(__I uint32_t*)0x400400FCU) /**< \brief (DACC) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_DACC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h new file mode 100644 index 00000000..966f2d2c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h @@ -0,0 +1,55 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_EFC_INSTANCE_ +#define _SAME70_EFC_INSTANCE_ + +/* ========== Register definition for EFC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_EFC_FMR (0x400E0C00U) /**< \brief (EFC) EEFC Flash Mode Register */ + #define REG_EFC_FCR (0x400E0C04U) /**< \brief (EFC) EEFC Flash Command Register */ + #define REG_EFC_FSR (0x400E0C08U) /**< \brief (EFC) EEFC Flash Status Register */ + #define REG_EFC_FRR (0x400E0C0CU) /**< \brief (EFC) EEFC Flash Result Register */ + #define REG_EFC_VERSION (0x400E0C14U) /**< \brief (EFC) EEFC Version Register */ + #define REG_EFC_WPMR (0x400E0CE4U) /**< \brief (EFC) Write Protection Mode Register */ +#else + #define REG_EFC_FMR (*(__IO uint32_t*)0x400E0C00U) /**< \brief (EFC) EEFC Flash Mode Register */ + #define REG_EFC_FCR (*(__O uint32_t*)0x400E0C04U) /**< \brief (EFC) EEFC Flash Command Register */ + #define REG_EFC_FSR (*(__I uint32_t*)0x400E0C08U) /**< \brief (EFC) EEFC Flash Status Register */ + #define REG_EFC_FRR (*(__I uint32_t*)0x400E0C0CU) /**< \brief (EFC) EEFC Flash Result Register */ + #define REG_EFC_VERSION (*(__I uint32_t*)0x400E0C14U) /**< \brief (EFC) EEFC Version Register */ + #define REG_EFC_WPMR (*(__IO uint32_t*)0x400E0CE4U) /**< \brief (EFC) Write Protection Mode Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_EFC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h new file mode 100644 index 00000000..7da518b7 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h @@ -0,0 +1,385 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_GMAC_INSTANCE_ +#define _SAME70_GMAC_INSTANCE_ + +/* ========== Register definition for GMAC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_GMAC_NCR (0x40050000U) /**< \brief (GMAC) Network Control Register */ + #define REG_GMAC_NCFGR (0x40050004U) /**< \brief (GMAC) Network Configuration Register */ + #define REG_GMAC_NSR (0x40050008U) /**< \brief (GMAC) Network Status Register */ + #define REG_GMAC_UR (0x4005000CU) /**< \brief (GMAC) User Register */ + #define REG_GMAC_DCFGR (0x40050010U) /**< \brief (GMAC) DMA Configuration Register */ + #define REG_GMAC_TSR (0x40050014U) /**< \brief (GMAC) Transmit Status Register */ + #define REG_GMAC_RBQB (0x40050018U) /**< \brief (GMAC) Receive Buffer Queue Base Address Register */ + #define REG_GMAC_TBQB (0x4005001CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address Register */ + #define REG_GMAC_RSR (0x40050020U) /**< \brief (GMAC) Receive Status Register */ + #define REG_GMAC_ISR (0x40050024U) /**< \brief (GMAC) Interrupt Status Register */ + #define REG_GMAC_IER (0x40050028U) /**< \brief (GMAC) Interrupt Enable Register */ + #define REG_GMAC_IDR (0x4005002CU) /**< \brief (GMAC) Interrupt Disable Register */ + #define REG_GMAC_IMR (0x40050030U) /**< \brief (GMAC) Interrupt Mask Register */ + #define REG_GMAC_MAN (0x40050034U) /**< \brief (GMAC) PHY Maintenance Register */ + #define REG_GMAC_RPQ (0x40050038U) /**< \brief (GMAC) Received Pause Quantum Register */ + #define REG_GMAC_TPQ (0x4005003CU) /**< \brief (GMAC) Transmit Pause Quantum Register */ + #define REG_GMAC_TPSF (0x40050040U) /**< \brief (GMAC) TX Partial Store and Forward Register */ + #define REG_GMAC_RPSF (0x40050044U) /**< \brief (GMAC) RX Partial Store and Forward Register */ + #define REG_GMAC_RJFML (0x40050048U) /**< \brief (GMAC) RX Jumbo Frame Max Length Register */ + #define REG_GMAC_HRB (0x40050080U) /**< \brief (GMAC) Hash Register Bottom */ + #define REG_GMAC_HRT (0x40050084U) /**< \brief (GMAC) Hash Register Top */ + #define REG_GMAC_SAB1 (0x40050088U) /**< \brief (GMAC) Specific Address 1 Bottom Register */ + #define REG_GMAC_SAT1 (0x4005008CU) /**< \brief (GMAC) Specific Address 1 Top Register */ + #define REG_GMAC_SAB2 (0x40050090U) /**< \brief (GMAC) Specific Address 2 Bottom Register */ + #define REG_GMAC_SAT2 (0x40050094U) /**< \brief (GMAC) Specific Address 2 Top Register */ + #define REG_GMAC_SAB3 (0x40050098U) /**< \brief (GMAC) Specific Address 3 Bottom Register */ + #define REG_GMAC_SAT3 (0x4005009CU) /**< \brief (GMAC) Specific Address 3 Top Register */ + #define REG_GMAC_SAB4 (0x400500A0U) /**< \brief (GMAC) Specific Address 4 Bottom Register */ + #define REG_GMAC_SAT4 (0x400500A4U) /**< \brief (GMAC) Specific Address 4 Top Register */ + #define REG_GMAC_TIDM1 (0x400500A8U) /**< \brief (GMAC) Type ID Match 1 Register */ + #define REG_GMAC_TIDM2 (0x400500ACU) /**< \brief (GMAC) Type ID Match 2 Register */ + #define REG_GMAC_TIDM3 (0x400500B0U) /**< \brief (GMAC) Type ID Match 3 Register */ + #define REG_GMAC_TIDM4 (0x400500B4U) /**< \brief (GMAC) Type ID Match 4 Register */ + #define REG_GMAC_WOL (0x400500B8U) /**< \brief (GMAC) Wake on LAN Register */ + #define REG_GMAC_IPGS (0x400500BCU) /**< \brief (GMAC) IPG Stretch Register */ + #define REG_GMAC_SVLAN (0x400500C0U) /**< \brief (GMAC) Stacked VLAN Register */ + #define REG_GMAC_TPFCP (0x400500C4U) /**< \brief (GMAC) Transmit PFC Pause Register */ + #define REG_GMAC_SAMB1 (0x400500C8U) /**< \brief (GMAC) Specific Address 1 Mask Bottom Register */ + #define REG_GMAC_SAMT1 (0x400500CCU) /**< \brief (GMAC) Specific Address 1 Mask Top Register */ + #define REG_GMAC_NSC (0x400500DCU) /**< \brief (GMAC) 1588 Timer Nanosecond Comparison Register */ + #define REG_GMAC_SCL (0x400500E0U) /**< \brief (GMAC) 1588 Timer Second Comparison Low Register */ + #define REG_GMAC_SCH (0x400500E4U) /**< \brief (GMAC) 1588 Timer Second Comparison High Register */ + #define REG_GMAC_EFTSH (0x400500E8U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds High Register */ + #define REG_GMAC_EFRSH (0x400500ECU) /**< \brief (GMAC) PTP Event Frame Received Seconds High Register */ + #define REG_GMAC_PEFTSH (0x400500F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds High Register */ + #define REG_GMAC_PEFRSH (0x400500F4U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds High Register */ + #define REG_GMAC_MID (0x400500FCU) /**< \brief (GMAC) Module ID Register */ + #define REG_GMAC_OTLO (0x40050100U) /**< \brief (GMAC) Octets Transmitted Low Register */ + #define REG_GMAC_OTHI (0x40050104U) /**< \brief (GMAC) Octets Transmitted High Register */ + #define REG_GMAC_FT (0x40050108U) /**< \brief (GMAC) Frames Transmitted Register */ + #define REG_GMAC_BCFT (0x4005010CU) /**< \brief (GMAC) Broadcast Frames Transmitted Register */ + #define REG_GMAC_MFT (0x40050110U) /**< \brief (GMAC) Multicast Frames Transmitted Register */ + #define REG_GMAC_PFT (0x40050114U) /**< \brief (GMAC) Pause Frames Transmitted Register */ + #define REG_GMAC_BFT64 (0x40050118U) /**< \brief (GMAC) 64 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT127 (0x4005011CU) /**< \brief (GMAC) 65 to 127 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT255 (0x40050120U) /**< \brief (GMAC) 128 to 255 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT511 (0x40050124U) /**< \brief (GMAC) 256 to 511 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT1023 (0x40050128U) /**< \brief (GMAC) 512 to 1023 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT1518 (0x4005012CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Transmitted Register */ + #define REG_GMAC_GTBFT1518 (0x40050130U) /**< \brief (GMAC) Greater Than 1518 Byte Frames Transmitted Register */ + #define REG_GMAC_TUR (0x40050134U) /**< \brief (GMAC) Transmit Underruns Register */ + #define REG_GMAC_SCF (0x40050138U) /**< \brief (GMAC) Single Collision Frames Register */ + #define REG_GMAC_MCF (0x4005013CU) /**< \brief (GMAC) Multiple Collision Frames Register */ + #define REG_GMAC_EC (0x40050140U) /**< \brief (GMAC) Excessive Collisions Register */ + #define REG_GMAC_LC (0x40050144U) /**< \brief (GMAC) Late Collisions Register */ + #define REG_GMAC_DTF (0x40050148U) /**< \brief (GMAC) Deferred Transmission Frames Register */ + #define REG_GMAC_CSE (0x4005014CU) /**< \brief (GMAC) Carrier Sense Errors Register */ + #define REG_GMAC_ORLO (0x40050150U) /**< \brief (GMAC) Octets Received Low Received Register */ + #define REG_GMAC_ORHI (0x40050154U) /**< \brief (GMAC) Octets Received High Received Register */ + #define REG_GMAC_FR (0x40050158U) /**< \brief (GMAC) Frames Received Register */ + #define REG_GMAC_BCFR (0x4005015CU) /**< \brief (GMAC) Broadcast Frames Received Register */ + #define REG_GMAC_MFR (0x40050160U) /**< \brief (GMAC) Multicast Frames Received Register */ + #define REG_GMAC_PFR (0x40050164U) /**< \brief (GMAC) Pause Frames Received Register */ + #define REG_GMAC_BFR64 (0x40050168U) /**< \brief (GMAC) 64 Byte Frames Received Register */ + #define REG_GMAC_TBFR127 (0x4005016CU) /**< \brief (GMAC) 65 to 127 Byte Frames Received Register */ + #define REG_GMAC_TBFR255 (0x40050170U) /**< \brief (GMAC) 128 to 255 Byte Frames Received Register */ + #define REG_GMAC_TBFR511 (0x40050174U) /**< \brief (GMAC) 256 to 511 Byte Frames Received Register */ + #define REG_GMAC_TBFR1023 (0x40050178U) /**< \brief (GMAC) 512 to 1023 Byte Frames Received Register */ + #define REG_GMAC_TBFR1518 (0x4005017CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Received Register */ + #define REG_GMAC_TMXBFR (0x40050180U) /**< \brief (GMAC) 1519 to Maximum Byte Frames Received Register */ + #define REG_GMAC_UFR (0x40050184U) /**< \brief (GMAC) Undersize Frames Received Register */ + #define REG_GMAC_OFR (0x40050188U) /**< \brief (GMAC) Oversize Frames Received Register */ + #define REG_GMAC_JR (0x4005018CU) /**< \brief (GMAC) Jabbers Received Register */ + #define REG_GMAC_FCSE (0x40050190U) /**< \brief (GMAC) Frame Check Sequence Errors Register */ + #define REG_GMAC_LFFE (0x40050194U) /**< \brief (GMAC) Length Field Frame Errors Register */ + #define REG_GMAC_RSE (0x40050198U) /**< \brief (GMAC) Receive Symbol Errors Register */ + #define REG_GMAC_AE (0x4005019CU) /**< \brief (GMAC) Alignment Errors Register */ + #define REG_GMAC_RRE (0x400501A0U) /**< \brief (GMAC) Receive Resource Errors Register */ + #define REG_GMAC_ROE (0x400501A4U) /**< \brief (GMAC) Receive Overrun Register */ + #define REG_GMAC_IHCE (0x400501A8U) /**< \brief (GMAC) IP Header Checksum Errors Register */ + #define REG_GMAC_TCE (0x400501ACU) /**< \brief (GMAC) TCP Checksum Errors Register */ + #define REG_GMAC_UCE (0x400501B0U) /**< \brief (GMAC) UDP Checksum Errors Register */ + #define REG_GMAC_TISUBN (0x400501BCU) /**< \brief (GMAC) 1588 Timer Increment Sub-nanoseconds Register */ + #define REG_GMAC_TSH (0x400501C0U) /**< \brief (GMAC) 1588 Timer Seconds High Register */ + #define REG_GMAC_TSL (0x400501D0U) /**< \brief (GMAC) 1588 Timer Seconds Low Register */ + #define REG_GMAC_TN (0x400501D4U) /**< \brief (GMAC) 1588 Timer Nanoseconds Register */ + #define REG_GMAC_TA (0x400501D8U) /**< \brief (GMAC) 1588 Timer Adjust Register */ + #define REG_GMAC_TI (0x400501DCU) /**< \brief (GMAC) 1588 Timer Increment Register */ + #define REG_GMAC_EFTSL (0x400501E0U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds Low Register */ + #define REG_GMAC_EFTN (0x400501E4U) /**< \brief (GMAC) PTP Event Frame Transmitted Nanoseconds Register */ + #define REG_GMAC_EFRSL (0x400501E8U) /**< \brief (GMAC) PTP Event Frame Received Seconds Low Register */ + #define REG_GMAC_EFRN (0x400501ECU) /**< \brief (GMAC) PTP Event Frame Received Nanoseconds Register */ + #define REG_GMAC_PEFTSL (0x400501F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds Low Register */ + #define REG_GMAC_PEFTN (0x400501F4U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Nanoseconds Register */ + #define REG_GMAC_PEFRSL (0x400501F8U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds Low Register */ + #define REG_GMAC_PEFRN (0x400501FCU) /**< \brief (GMAC) PTP Peer Event Frame Received Nanoseconds Register */ + #define REG_GMAC_RXLPI (0x40050270U) /**< \brief (GMAC) Received LPI Transitions */ + #define REG_GMAC_RXLPITIME (0x40050274U) /**< \brief (GMAC) Received LPI Time */ + #define REG_GMAC_TXLPI (0x40050278U) /**< \brief (GMAC) Transmit LPI Transitions */ + #define REG_GMAC_TXLPITIME (0x4005027CU) /**< \brief (GMAC) Transmit LPI Time */ + #define REG_GMAC_ISRPQ (0x400503FCU) /**< \brief (GMAC) Interrupt Status Register Priority Queue (index = 1) */ + #define REG_GMAC_TBQBAPQ (0x4005043CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address Register Priority Queue (index = 1) */ + #define REG_GMAC_RBQBAPQ (0x4005047CU) /**< \brief (GMAC) Receive Buffer Queue Base Address Register Priority Queue (index = 1) */ + #define REG_GMAC_RBSRPQ (0x4005049CU) /**< \brief (GMAC) Receive Buffer Size Register Priority Queue (index = 1) */ + #define REG_GMAC_CBSCR (0x400504BCU) /**< \brief (GMAC) Credit-Based Shaping Control Register */ + #define REG_GMAC_CBSISQA (0x400504C0U) /**< \brief (GMAC) Credit-Based Shaping IdleSlope Register for Queue A */ + #define REG_GMAC_CBSISQB (0x400504C4U) /**< \brief (GMAC) Credit-Based Shaping IdleSlope Register for Queue B */ + #define REG_GMAC_ST1RPQ (0x40050500U) /**< \brief (GMAC) Screening Type 1 Register Priority Queue (index = 0) */ + #define REG_GMAC_ST2RPQ (0x40050540U) /**< \brief (GMAC) Screening Type 2 Register Priority Queue (index = 0) */ + #define REG_GMAC_IERPQ (0x400505FCU) /**< \brief (GMAC) Interrupt Enable Register Priority Queue (index = 1) */ + #define REG_GMAC_IDRPQ (0x4005061CU) /**< \brief (GMAC) Interrupt Disable Register Priority Queue (index = 1) */ + #define REG_GMAC_IMRPQ (0x4005063CU) /**< \brief (GMAC) Interrupt Mask Register Priority Queue (index = 1) */ + #define REG_GMAC_ST2ER (0x400506E0U) /**< \brief (GMAC) Screening Type 2 Ethertype Register (index = 0) */ + #define REG_GMAC_ST2CW00 (0x40050700U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 0) */ + #define REG_GMAC_ST2CW10 (0x40050704U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 0) */ + #define REG_GMAC_ST2CW01 (0x40050708U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 1) */ + #define REG_GMAC_ST2CW11 (0x4005070CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 1) */ + #define REG_GMAC_ST2CW02 (0x40050710U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 2) */ + #define REG_GMAC_ST2CW12 (0x40050714U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 2) */ + #define REG_GMAC_ST2CW03 (0x40050718U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 3) */ + #define REG_GMAC_ST2CW13 (0x4005071CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 3) */ + #define REG_GMAC_ST2CW04 (0x40050720U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 4) */ + #define REG_GMAC_ST2CW14 (0x40050724U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 4) */ + #define REG_GMAC_ST2CW05 (0x40050728U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 5) */ + #define REG_GMAC_ST2CW15 (0x4005072CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 5) */ + #define REG_GMAC_ST2CW06 (0x40050730U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 6) */ + #define REG_GMAC_ST2CW16 (0x40050734U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 6) */ + #define REG_GMAC_ST2CW07 (0x40050738U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 7) */ + #define REG_GMAC_ST2CW17 (0x4005073CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 7) */ + #define REG_GMAC_ST2CW08 (0x40050740U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 8) */ + #define REG_GMAC_ST2CW18 (0x40050744U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 8) */ + #define REG_GMAC_ST2CW09 (0x40050748U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 9) */ + #define REG_GMAC_ST2CW19 (0x4005074CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 9) */ + #define REG_GMAC_ST2CW010 (0x40050750U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 10) */ + #define REG_GMAC_ST2CW110 (0x40050754U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 10) */ + #define REG_GMAC_ST2CW011 (0x40050758U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 11) */ + #define REG_GMAC_ST2CW111 (0x4005075CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 11) */ + #define REG_GMAC_ST2CW012 (0x40050760U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 12) */ + #define REG_GMAC_ST2CW112 (0x40050764U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 12) */ + #define REG_GMAC_ST2CW013 (0x40050768U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 13) */ + #define REG_GMAC_ST2CW113 (0x4005076CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 13) */ + #define REG_GMAC_ST2CW014 (0x40050770U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 14) */ + #define REG_GMAC_ST2CW114 (0x40050774U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 14) */ + #define REG_GMAC_ST2CW015 (0x40050778U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 15) */ + #define REG_GMAC_ST2CW115 (0x4005077CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 15) */ + #define REG_GMAC_ST2CW016 (0x40050780U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 16) */ + #define REG_GMAC_ST2CW116 (0x40050784U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 16) */ + #define REG_GMAC_ST2CW017 (0x40050788U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 17) */ + #define REG_GMAC_ST2CW117 (0x4005078CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 17) */ + #define REG_GMAC_ST2CW018 (0x40050790U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 18) */ + #define REG_GMAC_ST2CW118 (0x40050794U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 18) */ + #define REG_GMAC_ST2CW019 (0x40050798U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 19) */ + #define REG_GMAC_ST2CW119 (0x4005079CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 19) */ + #define REG_GMAC_ST2CW020 (0x400507A0U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 20) */ + #define REG_GMAC_ST2CW120 (0x400507A4U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 20) */ + #define REG_GMAC_ST2CW021 (0x400507A8U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 21) */ + #define REG_GMAC_ST2CW121 (0x400507ACU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 21) */ + #define REG_GMAC_ST2CW022 (0x400507B0U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 22) */ + #define REG_GMAC_ST2CW122 (0x400507B4U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 22) */ + #define REG_GMAC_ST2CW023 (0x400507B8U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 23) */ + #define REG_GMAC_ST2CW123 (0x400507BCU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 23) */ +#else + #define REG_GMAC_NCR (*(__IO uint32_t*)0x40050000U) /**< \brief (GMAC) Network Control Register */ + #define REG_GMAC_NCFGR (*(__IO uint32_t*)0x40050004U) /**< \brief (GMAC) Network Configuration Register */ + #define REG_GMAC_NSR (*(__I uint32_t*)0x40050008U) /**< \brief (GMAC) Network Status Register */ + #define REG_GMAC_UR (*(__IO uint32_t*)0x4005000CU) /**< \brief (GMAC) User Register */ + #define REG_GMAC_DCFGR (*(__IO uint32_t*)0x40050010U) /**< \brief (GMAC) DMA Configuration Register */ + #define REG_GMAC_TSR (*(__IO uint32_t*)0x40050014U) /**< \brief (GMAC) Transmit Status Register */ + #define REG_GMAC_RBQB (*(__IO uint32_t*)0x40050018U) /**< \brief (GMAC) Receive Buffer Queue Base Address Register */ + #define REG_GMAC_TBQB (*(__IO uint32_t*)0x4005001CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address Register */ + #define REG_GMAC_RSR (*(__IO uint32_t*)0x40050020U) /**< \brief (GMAC) Receive Status Register */ + #define REG_GMAC_ISR (*(__I uint32_t*)0x40050024U) /**< \brief (GMAC) Interrupt Status Register */ + #define REG_GMAC_IER (*(__O uint32_t*)0x40050028U) /**< \brief (GMAC) Interrupt Enable Register */ + #define REG_GMAC_IDR (*(__O uint32_t*)0x4005002CU) /**< \brief (GMAC) Interrupt Disable Register */ + #define REG_GMAC_IMR (*(__IO uint32_t*)0x40050030U) /**< \brief (GMAC) Interrupt Mask Register */ + #define REG_GMAC_MAN (*(__IO uint32_t*)0x40050034U) /**< \brief (GMAC) PHY Maintenance Register */ + #define REG_GMAC_RPQ (*(__I uint32_t*)0x40050038U) /**< \brief (GMAC) Received Pause Quantum Register */ + #define REG_GMAC_TPQ (*(__IO uint32_t*)0x4005003CU) /**< \brief (GMAC) Transmit Pause Quantum Register */ + #define REG_GMAC_TPSF (*(__IO uint32_t*)0x40050040U) /**< \brief (GMAC) TX Partial Store and Forward Register */ + #define REG_GMAC_RPSF (*(__IO uint32_t*)0x40050044U) /**< \brief (GMAC) RX Partial Store and Forward Register */ + #define REG_GMAC_RJFML (*(__IO uint32_t*)0x40050048U) /**< \brief (GMAC) RX Jumbo Frame Max Length Register */ + #define REG_GMAC_HRB (*(__IO uint32_t*)0x40050080U) /**< \brief (GMAC) Hash Register Bottom */ + #define REG_GMAC_HRT (*(__IO uint32_t*)0x40050084U) /**< \brief (GMAC) Hash Register Top */ + #define REG_GMAC_SAB1 (*(__IO uint32_t*)0x40050088U) /**< \brief (GMAC) Specific Address 1 Bottom Register */ + #define REG_GMAC_SAT1 (*(__IO uint32_t*)0x4005008CU) /**< \brief (GMAC) Specific Address 1 Top Register */ + #define REG_GMAC_SAB2 (*(__IO uint32_t*)0x40050090U) /**< \brief (GMAC) Specific Address 2 Bottom Register */ + #define REG_GMAC_SAT2 (*(__IO uint32_t*)0x40050094U) /**< \brief (GMAC) Specific Address 2 Top Register */ + #define REG_GMAC_SAB3 (*(__IO uint32_t*)0x40050098U) /**< \brief (GMAC) Specific Address 3 Bottom Register */ + #define REG_GMAC_SAT3 (*(__IO uint32_t*)0x4005009CU) /**< \brief (GMAC) Specific Address 3 Top Register */ + #define REG_GMAC_SAB4 (*(__IO uint32_t*)0x400500A0U) /**< \brief (GMAC) Specific Address 4 Bottom Register */ + #define REG_GMAC_SAT4 (*(__IO uint32_t*)0x400500A4U) /**< \brief (GMAC) Specific Address 4 Top Register */ + #define REG_GMAC_TIDM1 (*(__IO uint32_t*)0x400500A8U) /**< \brief (GMAC) Type ID Match 1 Register */ + #define REG_GMAC_TIDM2 (*(__IO uint32_t*)0x400500ACU) /**< \brief (GMAC) Type ID Match 2 Register */ + #define REG_GMAC_TIDM3 (*(__IO uint32_t*)0x400500B0U) /**< \brief (GMAC) Type ID Match 3 Register */ + #define REG_GMAC_TIDM4 (*(__IO uint32_t*)0x400500B4U) /**< \brief (GMAC) Type ID Match 4 Register */ + #define REG_GMAC_WOL (*(__IO uint32_t*)0x400500B8U) /**< \brief (GMAC) Wake on LAN Register */ + #define REG_GMAC_IPGS (*(__IO uint32_t*)0x400500BCU) /**< \brief (GMAC) IPG Stretch Register */ + #define REG_GMAC_SVLAN (*(__IO uint32_t*)0x400500C0U) /**< \brief (GMAC) Stacked VLAN Register */ + #define REG_GMAC_TPFCP (*(__IO uint32_t*)0x400500C4U) /**< \brief (GMAC) Transmit PFC Pause Register */ + #define REG_GMAC_SAMB1 (*(__IO uint32_t*)0x400500C8U) /**< \brief (GMAC) Specific Address 1 Mask Bottom Register */ + #define REG_GMAC_SAMT1 (*(__IO uint32_t*)0x400500CCU) /**< \brief (GMAC) Specific Address 1 Mask Top Register */ + #define REG_GMAC_NSC (*(__IO uint32_t*)0x400500DCU) /**< \brief (GMAC) 1588 Timer Nanosecond Comparison Register */ + #define REG_GMAC_SCL (*(__IO uint32_t*)0x400500E0U) /**< \brief (GMAC) 1588 Timer Second Comparison Low Register */ + #define REG_GMAC_SCH (*(__IO uint32_t*)0x400500E4U) /**< \brief (GMAC) 1588 Timer Second Comparison High Register */ + #define REG_GMAC_EFTSH (*(__I uint32_t*)0x400500E8U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds High Register */ + #define REG_GMAC_EFRSH (*(__I uint32_t*)0x400500ECU) /**< \brief (GMAC) PTP Event Frame Received Seconds High Register */ + #define REG_GMAC_PEFTSH (*(__I uint32_t*)0x400500F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds High Register */ + #define REG_GMAC_PEFRSH (*(__I uint32_t*)0x400500F4U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds High Register */ + #define REG_GMAC_MID (*(__I uint32_t*)0x400500FCU) /**< \brief (GMAC) Module ID Register */ + #define REG_GMAC_OTLO (*(__I uint32_t*)0x40050100U) /**< \brief (GMAC) Octets Transmitted Low Register */ + #define REG_GMAC_OTHI (*(__I uint32_t*)0x40050104U) /**< \brief (GMAC) Octets Transmitted High Register */ + #define REG_GMAC_FT (*(__I uint32_t*)0x40050108U) /**< \brief (GMAC) Frames Transmitted Register */ + #define REG_GMAC_BCFT (*(__I uint32_t*)0x4005010CU) /**< \brief (GMAC) Broadcast Frames Transmitted Register */ + #define REG_GMAC_MFT (*(__I uint32_t*)0x40050110U) /**< \brief (GMAC) Multicast Frames Transmitted Register */ + #define REG_GMAC_PFT (*(__I uint32_t*)0x40050114U) /**< \brief (GMAC) Pause Frames Transmitted Register */ + #define REG_GMAC_BFT64 (*(__I uint32_t*)0x40050118U) /**< \brief (GMAC) 64 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT127 (*(__I uint32_t*)0x4005011CU) /**< \brief (GMAC) 65 to 127 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT255 (*(__I uint32_t*)0x40050120U) /**< \brief (GMAC) 128 to 255 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT511 (*(__I uint32_t*)0x40050124U) /**< \brief (GMAC) 256 to 511 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT1023 (*(__I uint32_t*)0x40050128U) /**< \brief (GMAC) 512 to 1023 Byte Frames Transmitted Register */ + #define REG_GMAC_TBFT1518 (*(__I uint32_t*)0x4005012CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Transmitted Register */ + #define REG_GMAC_GTBFT1518 (*(__I uint32_t*)0x40050130U) /**< \brief (GMAC) Greater Than 1518 Byte Frames Transmitted Register */ + #define REG_GMAC_TUR (*(__I uint32_t*)0x40050134U) /**< \brief (GMAC) Transmit Underruns Register */ + #define REG_GMAC_SCF (*(__I uint32_t*)0x40050138U) /**< \brief (GMAC) Single Collision Frames Register */ + #define REG_GMAC_MCF (*(__I uint32_t*)0x4005013CU) /**< \brief (GMAC) Multiple Collision Frames Register */ + #define REG_GMAC_EC (*(__I uint32_t*)0x40050140U) /**< \brief (GMAC) Excessive Collisions Register */ + #define REG_GMAC_LC (*(__I uint32_t*)0x40050144U) /**< \brief (GMAC) Late Collisions Register */ + #define REG_GMAC_DTF (*(__I uint32_t*)0x40050148U) /**< \brief (GMAC) Deferred Transmission Frames Register */ + #define REG_GMAC_CSE (*(__I uint32_t*)0x4005014CU) /**< \brief (GMAC) Carrier Sense Errors Register */ + #define REG_GMAC_ORLO (*(__I uint32_t*)0x40050150U) /**< \brief (GMAC) Octets Received Low Received Register */ + #define REG_GMAC_ORHI (*(__I uint32_t*)0x40050154U) /**< \brief (GMAC) Octets Received High Received Register */ + #define REG_GMAC_FR (*(__I uint32_t*)0x40050158U) /**< \brief (GMAC) Frames Received Register */ + #define REG_GMAC_BCFR (*(__I uint32_t*)0x4005015CU) /**< \brief (GMAC) Broadcast Frames Received Register */ + #define REG_GMAC_MFR (*(__I uint32_t*)0x40050160U) /**< \brief (GMAC) Multicast Frames Received Register */ + #define REG_GMAC_PFR (*(__I uint32_t*)0x40050164U) /**< \brief (GMAC) Pause Frames Received Register */ + #define REG_GMAC_BFR64 (*(__I uint32_t*)0x40050168U) /**< \brief (GMAC) 64 Byte Frames Received Register */ + #define REG_GMAC_TBFR127 (*(__I uint32_t*)0x4005016CU) /**< \brief (GMAC) 65 to 127 Byte Frames Received Register */ + #define REG_GMAC_TBFR255 (*(__I uint32_t*)0x40050170U) /**< \brief (GMAC) 128 to 255 Byte Frames Received Register */ + #define REG_GMAC_TBFR511 (*(__I uint32_t*)0x40050174U) /**< \brief (GMAC) 256 to 511 Byte Frames Received Register */ + #define REG_GMAC_TBFR1023 (*(__I uint32_t*)0x40050178U) /**< \brief (GMAC) 512 to 1023 Byte Frames Received Register */ + #define REG_GMAC_TBFR1518 (*(__I uint32_t*)0x4005017CU) /**< \brief (GMAC) 1024 to 1518 Byte Frames Received Register */ + #define REG_GMAC_TMXBFR (*(__I uint32_t*)0x40050180U) /**< \brief (GMAC) 1519 to Maximum Byte Frames Received Register */ + #define REG_GMAC_UFR (*(__I uint32_t*)0x40050184U) /**< \brief (GMAC) Undersize Frames Received Register */ + #define REG_GMAC_OFR (*(__I uint32_t*)0x40050188U) /**< \brief (GMAC) Oversize Frames Received Register */ + #define REG_GMAC_JR (*(__I uint32_t*)0x4005018CU) /**< \brief (GMAC) Jabbers Received Register */ + #define REG_GMAC_FCSE (*(__I uint32_t*)0x40050190U) /**< \brief (GMAC) Frame Check Sequence Errors Register */ + #define REG_GMAC_LFFE (*(__I uint32_t*)0x40050194U) /**< \brief (GMAC) Length Field Frame Errors Register */ + #define REG_GMAC_RSE (*(__I uint32_t*)0x40050198U) /**< \brief (GMAC) Receive Symbol Errors Register */ + #define REG_GMAC_AE (*(__I uint32_t*)0x4005019CU) /**< \brief (GMAC) Alignment Errors Register */ + #define REG_GMAC_RRE (*(__I uint32_t*)0x400501A0U) /**< \brief (GMAC) Receive Resource Errors Register */ + #define REG_GMAC_ROE (*(__I uint32_t*)0x400501A4U) /**< \brief (GMAC) Receive Overrun Register */ + #define REG_GMAC_IHCE (*(__I uint32_t*)0x400501A8U) /**< \brief (GMAC) IP Header Checksum Errors Register */ + #define REG_GMAC_TCE (*(__I uint32_t*)0x400501ACU) /**< \brief (GMAC) TCP Checksum Errors Register */ + #define REG_GMAC_UCE (*(__I uint32_t*)0x400501B0U) /**< \brief (GMAC) UDP Checksum Errors Register */ + #define REG_GMAC_TISUBN (*(__IO uint32_t*)0x400501BCU) /**< \brief (GMAC) 1588 Timer Increment Sub-nanoseconds Register */ + #define REG_GMAC_TSH (*(__IO uint32_t*)0x400501C0U) /**< \brief (GMAC) 1588 Timer Seconds High Register */ + #define REG_GMAC_TSL (*(__IO uint32_t*)0x400501D0U) /**< \brief (GMAC) 1588 Timer Seconds Low Register */ + #define REG_GMAC_TN (*(__IO uint32_t*)0x400501D4U) /**< \brief (GMAC) 1588 Timer Nanoseconds Register */ + #define REG_GMAC_TA (*(__O uint32_t*)0x400501D8U) /**< \brief (GMAC) 1588 Timer Adjust Register */ + #define REG_GMAC_TI (*(__IO uint32_t*)0x400501DCU) /**< \brief (GMAC) 1588 Timer Increment Register */ + #define REG_GMAC_EFTSL (*(__I uint32_t*)0x400501E0U) /**< \brief (GMAC) PTP Event Frame Transmitted Seconds Low Register */ + #define REG_GMAC_EFTN (*(__I uint32_t*)0x400501E4U) /**< \brief (GMAC) PTP Event Frame Transmitted Nanoseconds Register */ + #define REG_GMAC_EFRSL (*(__I uint32_t*)0x400501E8U) /**< \brief (GMAC) PTP Event Frame Received Seconds Low Register */ + #define REG_GMAC_EFRN (*(__I uint32_t*)0x400501ECU) /**< \brief (GMAC) PTP Event Frame Received Nanoseconds Register */ + #define REG_GMAC_PEFTSL (*(__I uint32_t*)0x400501F0U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Seconds Low Register */ + #define REG_GMAC_PEFTN (*(__I uint32_t*)0x400501F4U) /**< \brief (GMAC) PTP Peer Event Frame Transmitted Nanoseconds Register */ + #define REG_GMAC_PEFRSL (*(__I uint32_t*)0x400501F8U) /**< \brief (GMAC) PTP Peer Event Frame Received Seconds Low Register */ + #define REG_GMAC_PEFRN (*(__I uint32_t*)0x400501FCU) /**< \brief (GMAC) PTP Peer Event Frame Received Nanoseconds Register */ + #define REG_GMAC_RXLPI (*(__I uint32_t*)0x40050270U) /**< \brief (GMAC) Received LPI Transitions */ + #define REG_GMAC_RXLPITIME (*(__I uint32_t*)0x40050274U) /**< \brief (GMAC) Received LPI Time */ + #define REG_GMAC_TXLPI (*(__I uint32_t*)0x40050278U) /**< \brief (GMAC) Transmit LPI Transitions */ + #define REG_GMAC_TXLPITIME (*(__I uint32_t*)0x4005027CU) /**< \brief (GMAC) Transmit LPI Time */ + #define REG_GMAC_ISRPQ (*(__I uint32_t*)0x400503FCU) /**< \brief (GMAC) Interrupt Status Register Priority Queue (index = 1) 0 */ + #define REG_GMAC_TBQBAPQ (*(__IO uint32_t*)0x4005043CU) /**< \brief (GMAC) Transmit Buffer Queue Base Address Register Priority Queue (index = 1) */ + #define REG_GMAC_RBQBAPQ (*(__IO uint32_t*)0x4005047CU) /**< \brief (GMAC) Receive Buffer Queue Base Address Register Priority Queue (index = 1) */ + #define REG_GMAC_RBSRPQ (*(__IO uint32_t*)0x4005049CU) /**< \brief (GMAC) Receive Buffer Size Register Priority Queue (index = 1) */ + #define REG_GMAC_CBSCR (*(__IO uint32_t*)0x400504BCU) /**< \brief (GMAC) Credit-Based Shaping Control Register */ + #define REG_GMAC_CBSISQA (*(__IO uint32_t*)0x400504C0U) /**< \brief (GMAC) Credit-Based Shaping IdleSlope Register for Queue A */ + #define REG_GMAC_CBSISQB (*(__IO uint32_t*)0x400504C4U) /**< \brief (GMAC) Credit-Based Shaping IdleSlope Register for Queue B */ + #define REG_GMAC_ST1RPQ (*(__IO uint32_t*)0x40050500U) /**< \brief (GMAC) Screening Type 1 Register Priority Queue (index = 0) */ + #define REG_GMAC_ST2RPQ (*(__IO uint32_t*)0x40050540U) /**< \brief (GMAC) Screening Type 2 Register Priority Queue (index = 0) */ + #define REG_GMAC_IERPQ (*(__O uint32_t*)0x400505FCU) /**< \brief (GMAC) Interrupt Enable Register Priority Queue (index = 1) */ + #define REG_GMAC_IDRPQ (*(__O uint32_t*)0x4005061CU) /**< \brief (GMAC) Interrupt Disable Register Priority Queue (index = 1) */ + #define REG_GMAC_IMRPQ (*(__IO uint32_t*)0x4005063CU) /**< \brief (GMAC) Interrupt Mask Register Priority Queue (index = 1) */ + #define REG_GMAC_ST2ER (*(__IO uint32_t*)0x400506E0U) /**< \brief (GMAC) Screening Type 2 Ethertype Register (index = 0) */ + #define REG_GMAC_ST2CW00 (*(__IO uint32_t*)0x40050700U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 0) */ + #define REG_GMAC_ST2CW10 (*(__IO uint32_t*)0x40050704U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 0) */ + #define REG_GMAC_ST2CW01 (*(__IO uint32_t*)0x40050708U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 1) */ + #define REG_GMAC_ST2CW11 (*(__IO uint32_t*)0x4005070CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 1) */ + #define REG_GMAC_ST2CW02 (*(__IO uint32_t*)0x40050710U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 2) */ + #define REG_GMAC_ST2CW12 (*(__IO uint32_t*)0x40050714U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 2) */ + #define REG_GMAC_ST2CW03 (*(__IO uint32_t*)0x40050718U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 3) */ + #define REG_GMAC_ST2CW13 (*(__IO uint32_t*)0x4005071CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 3) */ + #define REG_GMAC_ST2CW04 (*(__IO uint32_t*)0x40050720U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 4) */ + #define REG_GMAC_ST2CW14 (*(__IO uint32_t*)0x40050724U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 4) */ + #define REG_GMAC_ST2CW05 (*(__IO uint32_t*)0x40050728U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 5) */ + #define REG_GMAC_ST2CW15 (*(__IO uint32_t*)0x4005072CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 5) */ + #define REG_GMAC_ST2CW06 (*(__IO uint32_t*)0x40050730U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 6) */ + #define REG_GMAC_ST2CW16 (*(__IO uint32_t*)0x40050734U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 6) */ + #define REG_GMAC_ST2CW07 (*(__IO uint32_t*)0x40050738U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 7) */ + #define REG_GMAC_ST2CW17 (*(__IO uint32_t*)0x4005073CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 7) */ + #define REG_GMAC_ST2CW08 (*(__IO uint32_t*)0x40050740U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 8) */ + #define REG_GMAC_ST2CW18 (*(__IO uint32_t*)0x40050744U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 8) */ + #define REG_GMAC_ST2CW09 (*(__IO uint32_t*)0x40050748U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 9) */ + #define REG_GMAC_ST2CW19 (*(__IO uint32_t*)0x4005074CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 9) */ + #define REG_GMAC_ST2CW010 (*(__IO uint32_t*)0x40050750U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 10) */ + #define REG_GMAC_ST2CW110 (*(__IO uint32_t*)0x40050754U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 10) */ + #define REG_GMAC_ST2CW011 (*(__IO uint32_t*)0x40050758U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 11) */ + #define REG_GMAC_ST2CW111 (*(__IO uint32_t*)0x4005075CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 11) */ + #define REG_GMAC_ST2CW012 (*(__IO uint32_t*)0x40050760U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 12) */ + #define REG_GMAC_ST2CW112 (*(__IO uint32_t*)0x40050764U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 12) */ + #define REG_GMAC_ST2CW013 (*(__IO uint32_t*)0x40050768U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 13) */ + #define REG_GMAC_ST2CW113 (*(__IO uint32_t*)0x4005076CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 13) */ + #define REG_GMAC_ST2CW014 (*(__IO uint32_t*)0x40050770U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 14) */ + #define REG_GMAC_ST2CW114 (*(__IO uint32_t*)0x40050774U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 14) */ + #define REG_GMAC_ST2CW015 (*(__IO uint32_t*)0x40050778U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 15) */ + #define REG_GMAC_ST2CW115 (*(__IO uint32_t*)0x4005077CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 15) */ + #define REG_GMAC_ST2CW016 (*(__IO uint32_t*)0x40050780U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 16) */ + #define REG_GMAC_ST2CW116 (*(__IO uint32_t*)0x40050784U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 16) */ + #define REG_GMAC_ST2CW017 (*(__IO uint32_t*)0x40050788U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 17) */ + #define REG_GMAC_ST2CW117 (*(__IO uint32_t*)0x4005078CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 17) */ + #define REG_GMAC_ST2CW018 (*(__IO uint32_t*)0x40050790U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 18) */ + #define REG_GMAC_ST2CW118 (*(__IO uint32_t*)0x40050794U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 18) */ + #define REG_GMAC_ST2CW019 (*(__IO uint32_t*)0x40050798U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 19) */ + #define REG_GMAC_ST2CW119 (*(__IO uint32_t*)0x4005079CU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 19) */ + #define REG_GMAC_ST2CW020 (*(__IO uint32_t*)0x400507A0U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 20) */ + #define REG_GMAC_ST2CW120 (*(__IO uint32_t*)0x400507A4U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 20) */ + #define REG_GMAC_ST2CW021 (*(__IO uint32_t*)0x400507A8U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 21) */ + #define REG_GMAC_ST2CW121 (*(__IO uint32_t*)0x400507ACU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 21) */ + #define REG_GMAC_ST2CW022 (*(__IO uint32_t*)0x400507B0U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 22) */ + #define REG_GMAC_ST2CW122 (*(__IO uint32_t*)0x400507B4U) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 22) */ + #define REG_GMAC_ST2CW023 (*(__IO uint32_t*)0x400507B8U) /**< \brief (GMAC) Screening Type 2 Compare Word 0 Register (index = 23) */ + #define REG_GMAC_ST2CW123 (*(__IO uint32_t*)0x400507BCU) /**< \brief (GMAC) Screening Type 2 Compare Word 1 Register (index = 23) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_GMAC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h new file mode 100644 index 00000000..5ac6c8a9 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h @@ -0,0 +1,45 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_GPBR_INSTANCE_ +#define _SAME70_GPBR_INSTANCE_ + +/* ========== Register definition for GPBR peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_GPBR_GPBR (0x400E1890U) /**< \brief (GPBR) General Purpose Backup Register */ +#else + #define REG_GPBR_GPBR (*(__IO uint32_t*)0x400E1890U) /**< \brief (GPBR) General Purpose Backup Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_GPBR_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h new file mode 100644 index 00000000..f52aeab2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h @@ -0,0 +1,85 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_HSMCI_INSTANCE_ +#define _SAME70_HSMCI_INSTANCE_ + +/* ========== Register definition for HSMCI peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_HSMCI_CR (0x40000000U) /**< \brief (HSMCI) Control Register */ + #define REG_HSMCI_MR (0x40000004U) /**< \brief (HSMCI) Mode Register */ + #define REG_HSMCI_DTOR (0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ + #define REG_HSMCI_SDCR (0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ + #define REG_HSMCI_ARGR (0x40000010U) /**< \brief (HSMCI) Argument Register */ + #define REG_HSMCI_CMDR (0x40000014U) /**< \brief (HSMCI) Command Register */ + #define REG_HSMCI_BLKR (0x40000018U) /**< \brief (HSMCI) Block Register */ + #define REG_HSMCI_CSTOR (0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ + #define REG_HSMCI_RSPR (0x40000020U) /**< \brief (HSMCI) Response Register */ + #define REG_HSMCI_RDR (0x40000030U) /**< \brief (HSMCI) Receive Data Register */ + #define REG_HSMCI_TDR (0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ + #define REG_HSMCI_SR (0x40000040U) /**< \brief (HSMCI) Status Register */ + #define REG_HSMCI_IER (0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ + #define REG_HSMCI_IDR (0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ + #define REG_HSMCI_IMR (0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ + #define REG_HSMCI_DMA (0x40000050U) /**< \brief (HSMCI) DMA Configuration Register */ + #define REG_HSMCI_CFG (0x40000054U) /**< \brief (HSMCI) Configuration Register */ + #define REG_HSMCI_WPMR (0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ + #define REG_HSMCI_WPSR (0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ + #define REG_HSMCI_VERSION (0x400000FCU) /**< \brief (HSMCI) Version Register */ + #define REG_HSMCI_FIFO (0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#else + #define REG_HSMCI_CR (*(__O uint32_t*)0x40000000U) /**< \brief (HSMCI) Control Register */ + #define REG_HSMCI_MR (*(__IO uint32_t*)0x40000004U) /**< \brief (HSMCI) Mode Register */ + #define REG_HSMCI_DTOR (*(__IO uint32_t*)0x40000008U) /**< \brief (HSMCI) Data Timeout Register */ + #define REG_HSMCI_SDCR (*(__IO uint32_t*)0x4000000CU) /**< \brief (HSMCI) SD/SDIO Card Register */ + #define REG_HSMCI_ARGR (*(__IO uint32_t*)0x40000010U) /**< \brief (HSMCI) Argument Register */ + #define REG_HSMCI_CMDR (*(__O uint32_t*)0x40000014U) /**< \brief (HSMCI) Command Register */ + #define REG_HSMCI_BLKR (*(__IO uint32_t*)0x40000018U) /**< \brief (HSMCI) Block Register */ + #define REG_HSMCI_CSTOR (*(__IO uint32_t*)0x4000001CU) /**< \brief (HSMCI) Completion Signal Timeout Register */ + #define REG_HSMCI_RSPR (*(__I uint32_t*)0x40000020U) /**< \brief (HSMCI) Response Register */ + #define REG_HSMCI_RDR (*(__I uint32_t*)0x40000030U) /**< \brief (HSMCI) Receive Data Register */ + #define REG_HSMCI_TDR (*(__O uint32_t*)0x40000034U) /**< \brief (HSMCI) Transmit Data Register */ + #define REG_HSMCI_SR (*(__I uint32_t*)0x40000040U) /**< \brief (HSMCI) Status Register */ + #define REG_HSMCI_IER (*(__O uint32_t*)0x40000044U) /**< \brief (HSMCI) Interrupt Enable Register */ + #define REG_HSMCI_IDR (*(__O uint32_t*)0x40000048U) /**< \brief (HSMCI) Interrupt Disable Register */ + #define REG_HSMCI_IMR (*(__I uint32_t*)0x4000004CU) /**< \brief (HSMCI) Interrupt Mask Register */ + #define REG_HSMCI_DMA (*(__IO uint32_t*)0x40000050U) /**< \brief (HSMCI) DMA Configuration Register */ + #define REG_HSMCI_CFG (*(__IO uint32_t*)0x40000054U) /**< \brief (HSMCI) Configuration Register */ + #define REG_HSMCI_WPMR (*(__IO uint32_t*)0x400000E4U) /**< \brief (HSMCI) Write Protection Mode Register */ + #define REG_HSMCI_WPSR (*(__I uint32_t*)0x400000E8U) /**< \brief (HSMCI) Write Protection Status Register */ + #define REG_HSMCI_VERSION (*(__I uint32_t*)0x400000FCU) /**< \brief (HSMCI) Version Register */ + #define REG_HSMCI_FIFO (*(__IO uint32_t*)0x40000200U) /**< \brief (HSMCI) FIFO Memory Aperture0 */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_HSMCI_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h new file mode 100644 index 00000000..3f12dac6 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h @@ -0,0 +1,65 @@ +/** + * \file + * + * Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_I2SC0_INSTANCE_ +#define _SAME70_I2SC0_INSTANCE_ + +/* ========== Register definition for I2SC0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_I2SC0_CR (0x4008C000U) /**< \brief (I2SC0) Control Register */ + #define REG_I2SC0_MR (0x4008C004U) /**< \brief (I2SC0) Mode Register */ + #define REG_I2SC0_SR (0x4008C008U) /**< \brief (I2SC0) Status Register */ + #define REG_I2SC0_SCR (0x4008C00CU) /**< \brief (I2SC0) Status Clear Register */ + #define REG_I2SC0_SSR (0x4008C010U) /**< \brief (I2SC0) Status Set Register */ + #define REG_I2SC0_IER (0x4008C014U) /**< \brief (I2SC0) Interrupt Enable Register */ + #define REG_I2SC0_IDR (0x4008C018U) /**< \brief (I2SC0) Interrupt Disable Register */ + #define REG_I2SC0_IMR (0x4008C01CU) /**< \brief (I2SC0) Interrupt Mask Register */ + #define REG_I2SC0_RHR (0x4008C020U) /**< \brief (I2SC0) Receiver Holding Register */ + #define REG_I2SC0_THR (0x4008C024U) /**< \brief (I2SC0) Transmitter Holding Register */ + #define REG_I2SC0_VERSION (0x4008C028U) /**< \brief (I2SC0) Version Register */ +#else + #define REG_I2SC0_CR (*(__O uint32_t*)0x4008C000U) /**< \brief (I2SC0) Control Register */ + #define REG_I2SC0_MR (*(__IO uint32_t*)0x4008C004U) /**< \brief (I2SC0) Mode Register */ + #define REG_I2SC0_SR (*(__I uint32_t*)0x4008C008U) /**< \brief (I2SC0) Status Register */ + #define REG_I2SC0_SCR (*(__O uint32_t*)0x4008C00CU) /**< \brief (I2SC0) Status Clear Register */ + #define REG_I2SC0_SSR (*(__O uint32_t*)0x4008C010U) /**< \brief (I2SC0) Status Set Register */ + #define REG_I2SC0_IER (*(__O uint32_t*)0x4008C014U) /**< \brief (I2SC0) Interrupt Enable Register */ + #define REG_I2SC0_IDR (*(__O uint32_t*)0x4008C018U) /**< \brief (I2SC0) Interrupt Disable Register */ + #define REG_I2SC0_IMR (*(__I uint32_t*)0x4008C01CU) /**< \brief (I2SC0) Interrupt Mask Register */ + #define REG_I2SC0_RHR (*(__I uint32_t*)0x4008C020U) /**< \brief (I2SC0) Receiver Holding Register */ + #define REG_I2SC0_THR (*(__O uint32_t*)0x4008C024U) /**< \brief (I2SC0) Transmitter Holding Register */ + #define REG_I2SC0_VERSION (*(__I uint32_t*)0x4008C028U) /**< \brief (I2SC0) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_I2SC0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h new file mode 100644 index 00000000..32d403b5 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h @@ -0,0 +1,65 @@ +/** + * \file + * + * Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_I2SC1_INSTANCE_ +#define _SAME70_I2SC1_INSTANCE_ + +/* ========== Register definition for I2SC1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_I2SC1_CR (0x40090000U) /**< \brief (I2SC1) Control Register */ + #define REG_I2SC1_MR (0x40090004U) /**< \brief (I2SC1) Mode Register */ + #define REG_I2SC1_SR (0x40090008U) /**< \brief (I2SC1) Status Register */ + #define REG_I2SC1_SCR (0x4009000CU) /**< \brief (I2SC1) Status Clear Register */ + #define REG_I2SC1_SSR (0x40090010U) /**< \brief (I2SC1) Status Set Register */ + #define REG_I2SC1_IER (0x40090014U) /**< \brief (I2SC1) Interrupt Enable Register */ + #define REG_I2SC1_IDR (0x40090018U) /**< \brief (I2SC1) Interrupt Disable Register */ + #define REG_I2SC1_IMR (0x4009001CU) /**< \brief (I2SC1) Interrupt Mask Register */ + #define REG_I2SC1_RHR (0x40090020U) /**< \brief (I2SC1) Receiver Holding Register */ + #define REG_I2SC1_THR (0x40090024U) /**< \brief (I2SC1) Transmitter Holding Register */ + #define REG_I2SC1_VERSION (0x40090028U) /**< \brief (I2SC1) Version Register */ +#else + #define REG_I2SC1_CR (*(__O uint32_t*)0x40090000U) /**< \brief (I2SC1) Control Register */ + #define REG_I2SC1_MR (*(__IO uint32_t*)0x40090004U) /**< \brief (I2SC1) Mode Register */ + #define REG_I2SC1_SR (*(__I uint32_t*)0x40090008U) /**< \brief (I2SC1) Status Register */ + #define REG_I2SC1_SCR (*(__O uint32_t*)0x4009000CU) /**< \brief (I2SC1) Status Clear Register */ + #define REG_I2SC1_SSR (*(__O uint32_t*)0x40090010U) /**< \brief (I2SC1) Status Set Register */ + #define REG_I2SC1_IER (*(__O uint32_t*)0x40090014U) /**< \brief (I2SC1) Interrupt Enable Register */ + #define REG_I2SC1_IDR (*(__O uint32_t*)0x40090018U) /**< \brief (I2SC1) Interrupt Disable Register */ + #define REG_I2SC1_IMR (*(__I uint32_t*)0x4009001CU) /**< \brief (I2SC1) Interrupt Mask Register */ + #define REG_I2SC1_RHR (*(__I uint32_t*)0x40090020U) /**< \brief (I2SC1) Receiver Holding Register */ + #define REG_I2SC1_THR (*(__O uint32_t*)0x40090024U) /**< \brief (I2SC1) Transmitter Holding Register */ + #define REG_I2SC1_VERSION (*(__I uint32_t*)0x40090028U) /**< \brief (I2SC1) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_I2SC1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h new file mode 100644 index 00000000..7225400a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h @@ -0,0 +1,73 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_ICM_INSTANCE_ +#define _SAME70_ICM_INSTANCE_ + +/* ========== Register definition for ICM peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_ICM_CFG (0x40048000U) /**< \brief (ICM) Configuration Register */ + #define REG_ICM_CTRL (0x40048004U) /**< \brief (ICM) Control Register */ + #define REG_ICM_SR (0x40048008U) /**< \brief (ICM) Status Register */ + #define REG_ICM_IER (0x40048010U) /**< \brief (ICM) Interrupt Enable Register */ + #define REG_ICM_IDR (0x40048014U) /**< \brief (ICM) Interrupt Disable Register */ + #define REG_ICM_IMR (0x40048018U) /**< \brief (ICM) Interrupt Mask Register */ + #define REG_ICM_ISR (0x4004801CU) /**< \brief (ICM) Interrupt Status Register */ + #define REG_ICM_UASR (0x40048020U) /**< \brief (ICM) Undefined Access Status Register */ + #define REG_ICM_DSCR (0x40048030U) /**< \brief (ICM) Region Descriptor Area Start Address Register */ + #define REG_ICM_HASH (0x40048034U) /**< \brief (ICM) Region Hash Area Start Address Register */ + #define REG_ICM_UIHVAL (0x40048038U) /**< \brief (ICM) User Initial Hash Value 0 Register */ + #define REG_ICM_ADDRSIZE (0x400480ECU) /**< \brief (ICM) Address Size Register */ + #define REG_ICM_IPNAME (0x400480F0U) /**< \brief (ICM) IP Name 1 Register */ + #define REG_ICM_FEATURES (0x400480F8U) /**< \brief (ICM) Feature Register */ + #define REG_ICM_VERSION (0x400480FCU) /**< \brief (ICM) Version Register */ +#else + #define REG_ICM_CFG (*(__IO uint32_t*)0x40048000U) /**< \brief (ICM) Configuration Register */ + #define REG_ICM_CTRL (*(__O uint32_t*)0x40048004U) /**< \brief (ICM) Control Register */ + #define REG_ICM_SR (*(__I uint32_t*)0x40048008U) /**< \brief (ICM) Status Register */ + #define REG_ICM_IER (*(__O uint32_t*)0x40048010U) /**< \brief (ICM) Interrupt Enable Register */ + #define REG_ICM_IDR (*(__O uint32_t*)0x40048014U) /**< \brief (ICM) Interrupt Disable Register */ + #define REG_ICM_IMR (*(__I uint32_t*)0x40048018U) /**< \brief (ICM) Interrupt Mask Register */ + #define REG_ICM_ISR (*(__I uint32_t*)0x4004801CU) /**< \brief (ICM) Interrupt Status Register */ + #define REG_ICM_UASR (*(__I uint32_t*)0x40048020U) /**< \brief (ICM) Undefined Access Status Register */ + #define REG_ICM_DSCR (*(__IO uint32_t*)0x40048030U) /**< \brief (ICM) Region Descriptor Area Start Address Register */ + #define REG_ICM_HASH (*(__IO uint32_t*)0x40048034U) /**< \brief (ICM) Region Hash Area Start Address Register */ + #define REG_ICM_UIHVAL (*(__O uint32_t*)0x40048038U) /**< \brief (ICM) User Initial Hash Value 0 Register */ + #define REG_ICM_ADDRSIZE (*(__I uint32_t*)0x400480ECU) /**< \brief (ICM) Address Size Register */ + #define REG_ICM_IPNAME (*(__I uint32_t*)0x400480F0U) /**< \brief (ICM) IP Name 1 Register */ + #define REG_ICM_FEATURES (*(__I uint32_t*)0x400480F8U) /**< \brief (ICM) Feature Register */ + #define REG_ICM_VERSION (*(__I uint32_t*)0x400480FCU) /**< \brief (ICM) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_ICM_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h new file mode 100644 index 00000000..e35ba5d0 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h @@ -0,0 +1,95 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_ISI_INSTANCE_ +#define _SAME70_ISI_INSTANCE_ + +/* ========== Register definition for ISI peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_ISI_CFG1 (0x4004C000U) /**< \brief (ISI) ISI Configuration 1 Register */ + #define REG_ISI_CFG2 (0x4004C004U) /**< \brief (ISI) ISI Configuration 2 Register */ + #define REG_ISI_PSIZE (0x4004C008U) /**< \brief (ISI) ISI Preview Size Register */ + #define REG_ISI_PDECF (0x4004C00CU) /**< \brief (ISI) ISI Preview Decimation Factor Register */ + #define REG_ISI_Y2R_SET0 (0x4004C010U) /**< \brief (ISI) ISI Color Space Conversion YCrCb To RGB Set 0 Register */ + #define REG_ISI_Y2R_SET1 (0x4004C014U) /**< \brief (ISI) ISI Color Space Conversion YCrCb To RGB Set 1 Register */ + #define REG_ISI_R2Y_SET0 (0x4004C018U) /**< \brief (ISI) ISI Color Space Conversion RGB To YCrCb Set 0 Register */ + #define REG_ISI_R2Y_SET1 (0x4004C01CU) /**< \brief (ISI) ISI Color Space Conversion RGB To YCrCb Set 1 Register */ + #define REG_ISI_R2Y_SET2 (0x4004C020U) /**< \brief (ISI) ISI Color Space Conversion RGB To YCrCb Set 2 Register */ + #define REG_ISI_CR (0x4004C024U) /**< \brief (ISI) ISI Control Register */ + #define REG_ISI_SR (0x4004C028U) /**< \brief (ISI) ISI Status Register */ + #define REG_ISI_IER (0x4004C02CU) /**< \brief (ISI) ISI Interrupt Enable Register */ + #define REG_ISI_IDR (0x4004C030U) /**< \brief (ISI) ISI Interrupt Disable Register */ + #define REG_ISI_IMR (0x4004C034U) /**< \brief (ISI) ISI Interrupt Mask Register */ + #define REG_ISI_DMA_CHER (0x4004C038U) /**< \brief (ISI) DMA Channel Enable Register */ + #define REG_ISI_DMA_CHDR (0x4004C03CU) /**< \brief (ISI) DMA Channel Disable Register */ + #define REG_ISI_DMA_CHSR (0x4004C040U) /**< \brief (ISI) DMA Channel Status Register */ + #define REG_ISI_DMA_P_ADDR (0x4004C044U) /**< \brief (ISI) DMA Preview Base Address Register */ + #define REG_ISI_DMA_P_CTRL (0x4004C048U) /**< \brief (ISI) DMA Preview Control Register */ + #define REG_ISI_DMA_P_DSCR (0x4004C04CU) /**< \brief (ISI) DMA Preview Descriptor Address Register */ + #define REG_ISI_DMA_C_ADDR (0x4004C050U) /**< \brief (ISI) DMA Codec Base Address Register */ + #define REG_ISI_DMA_C_CTRL (0x4004C054U) /**< \brief (ISI) DMA Codec Control Register */ + #define REG_ISI_DMA_C_DSCR (0x4004C058U) /**< \brief (ISI) DMA Codec Descriptor Address Register */ + #define REG_ISI_WPMR (0x4004C0E4U) /**< \brief (ISI) Write Protection Mode Register */ + #define REG_ISI_WPSR (0x4004C0E8U) /**< \brief (ISI) Write Protection Status Register */ + #define REG_ISI_VERSION (0x4004C0FCU) /**< \brief (ISI) Version Register */ +#else + #define REG_ISI_CFG1 (*(__IO uint32_t*)0x4004C000U) /**< \brief (ISI) ISI Configuration 1 Register */ + #define REG_ISI_CFG2 (*(__IO uint32_t*)0x4004C004U) /**< \brief (ISI) ISI Configuration 2 Register */ + #define REG_ISI_PSIZE (*(__IO uint32_t*)0x4004C008U) /**< \brief (ISI) ISI Preview Size Register */ + #define REG_ISI_PDECF (*(__IO uint32_t*)0x4004C00CU) /**< \brief (ISI) ISI Preview Decimation Factor Register */ + #define REG_ISI_Y2R_SET0 (*(__IO uint32_t*)0x4004C010U) /**< \brief (ISI) ISI Color Space Conversion YCrCb To RGB Set 0 Register */ + #define REG_ISI_Y2R_SET1 (*(__IO uint32_t*)0x4004C014U) /**< \brief (ISI) ISI Color Space Conversion YCrCb To RGB Set 1 Register */ + #define REG_ISI_R2Y_SET0 (*(__IO uint32_t*)0x4004C018U) /**< \brief (ISI) ISI Color Space Conversion RGB To YCrCb Set 0 Register */ + #define REG_ISI_R2Y_SET1 (*(__IO uint32_t*)0x4004C01CU) /**< \brief (ISI) ISI Color Space Conversion RGB To YCrCb Set 1 Register */ + #define REG_ISI_R2Y_SET2 (*(__IO uint32_t*)0x4004C020U) /**< \brief (ISI) ISI Color Space Conversion RGB To YCrCb Set 2 Register */ + #define REG_ISI_CR (*(__O uint32_t*)0x4004C024U) /**< \brief (ISI) ISI Control Register */ + #define REG_ISI_SR (*(__I uint32_t*)0x4004C028U) /**< \brief (ISI) ISI Status Register */ + #define REG_ISI_IER (*(__O uint32_t*)0x4004C02CU) /**< \brief (ISI) ISI Interrupt Enable Register */ + #define REG_ISI_IDR (*(__O uint32_t*)0x4004C030U) /**< \brief (ISI) ISI Interrupt Disable Register */ + #define REG_ISI_IMR (*(__I uint32_t*)0x4004C034U) /**< \brief (ISI) ISI Interrupt Mask Register */ + #define REG_ISI_DMA_CHER (*(__O uint32_t*)0x4004C038U) /**< \brief (ISI) DMA Channel Enable Register */ + #define REG_ISI_DMA_CHDR (*(__O uint32_t*)0x4004C03CU) /**< \brief (ISI) DMA Channel Disable Register */ + #define REG_ISI_DMA_CHSR (*(__I uint32_t*)0x4004C040U) /**< \brief (ISI) DMA Channel Status Register */ + #define REG_ISI_DMA_P_ADDR (*(__IO uint32_t*)0x4004C044U) /**< \brief (ISI) DMA Preview Base Address Register */ + #define REG_ISI_DMA_P_CTRL (*(__IO uint32_t*)0x4004C048U) /**< \brief (ISI) DMA Preview Control Register */ + #define REG_ISI_DMA_P_DSCR (*(__IO uint32_t*)0x4004C04CU) /**< \brief (ISI) DMA Preview Descriptor Address Register */ + #define REG_ISI_DMA_C_ADDR (*(__IO uint32_t*)0x4004C050U) /**< \brief (ISI) DMA Codec Base Address Register */ + #define REG_ISI_DMA_C_CTRL (*(__IO uint32_t*)0x4004C054U) /**< \brief (ISI) DMA Codec Control Register */ + #define REG_ISI_DMA_C_DSCR (*(__IO uint32_t*)0x4004C058U) /**< \brief (ISI) DMA Codec Descriptor Address Register */ + #define REG_ISI_WPMR (*(__IO uint32_t*)0x4004C0E4U) /**< \brief (ISI) Write Protection Mode Register */ + #define REG_ISI_WPSR (*(__I uint32_t*)0x4004C0E8U) /**< \brief (ISI) Write Protection Status Register */ + #define REG_ISI_VERSION (*(__I uint32_t*)0x4004C0FCU) /**< \brief (ISI) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_ISI_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h new file mode 100644 index 00000000..fdae66e1 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h @@ -0,0 +1,123 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_MATRIX_INSTANCE_ +#define _SAME70_MATRIX_INSTANCE_ + +/* ========== Register definition for MATRIX peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_MATRIX_MCFG0 (0x40088000U) /**< \brief (MATRIX) Master Configuration Register 0 */ + #define REG_MATRIX_MCFG1 (0x40088004U) /**< \brief (MATRIX) Master Configuration Register 1 */ + #define REG_MATRIX_MCFG2 (0x40088008U) /**< \brief (MATRIX) Master Configuration Register 2 */ + #define REG_MATRIX_MCFG3 (0x4008800CU) /**< \brief (MATRIX) Master Configuration Register 3 */ + #define REG_MATRIX_MCFG4 (0x40088010U) /**< \brief (MATRIX) Master Configuration Register 4 */ + #define REG_MATRIX_MCFG5 (0x40088014U) /**< \brief (MATRIX) Master Configuration Register 5 */ + #define REG_MATRIX_MCFG6 (0x40088018U) /**< \brief (MATRIX) Master Configuration Register 6 */ + #define REG_MATRIX_MCFG8 (0x40088020U) /**< \brief (MATRIX) Master Configuration Register 8 */ + #define REG_MATRIX_MCFG9 (0x40088024U) /**< \brief (MATRIX) Master Configuration Register 9 */ + #define REG_MATRIX_MCFG10 (0x40088028U) /**< \brief (MATRIX) Master Configuration Register 10 */ + #define REG_MATRIX_MCFG11 (0x4008802CU) /**< \brief (MATRIX) Master Configuration Register 11 */ + #define REG_MATRIX_MCFG12 (0x40088030U) /**< \brief (MATRIX) Master Configuration Register 12 */ + #define REG_MATRIX_SCFG (0x40088040U) /**< \brief (MATRIX) Slave Configuration Register */ + #define REG_MATRIX_PRAS0 (0x40088080U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ + #define REG_MATRIX_PRBS0 (0x40088084U) /**< \brief (MATRIX) Priority Register B for Slave 0 */ + #define REG_MATRIX_PRAS1 (0x40088088U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ + #define REG_MATRIX_PRBS1 (0x4008808CU) /**< \brief (MATRIX) Priority Register B for Slave 1 */ + #define REG_MATRIX_PRAS2 (0x40088090U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ + #define REG_MATRIX_PRBS2 (0x40088094U) /**< \brief (MATRIX) Priority Register B for Slave 2 */ + #define REG_MATRIX_PRAS3 (0x40088098U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ + #define REG_MATRIX_PRBS3 (0x4008809CU) /**< \brief (MATRIX) Priority Register B for Slave 3 */ + #define REG_MATRIX_PRAS4 (0x400880A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ + #define REG_MATRIX_PRBS4 (0x400880A4U) /**< \brief (MATRIX) Priority Register B for Slave 4 */ + #define REG_MATRIX_PRAS5 (0x400880A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ + #define REG_MATRIX_PRBS5 (0x400880ACU) /**< \brief (MATRIX) Priority Register B for Slave 5 */ + #define REG_MATRIX_PRAS6 (0x400880B0U) /**< \brief (MATRIX) Priority Register A for Slave 6 */ + #define REG_MATRIX_PRBS6 (0x400880B4U) /**< \brief (MATRIX) Priority Register B for Slave 6 */ + #define REG_MATRIX_PRAS7 (0x400880B8U) /**< \brief (MATRIX) Priority Register A for Slave 7 */ + #define REG_MATRIX_PRBS7 (0x400880BCU) /**< \brief (MATRIX) Priority Register B for Slave 7 */ + #define REG_MATRIX_PRAS8 (0x400880C0U) /**< \brief (MATRIX) Priority Register A for Slave 8 */ + #define REG_MATRIX_PRBS8 (0x400880C4U) /**< \brief (MATRIX) Priority Register B for Slave 8 */ + #define REG_MATRIX_MRCR (0x40088100U) /**< \brief (MATRIX) Master Remap Control Register */ + #define REG_CCFG_CAN0 (0x40088110U) /**< \brief (MATRIX) CAN0 Configuration Register */ + #define REG_CCFG_SYSIO (0x40088114U) /**< \brief (MATRIX) System I/O and CAN1 Configuration Register */ + #define REG_CCFG_PCCR (0x40088118U) /**< \brief (MATRIX) Peripheral Clock Configuration Register */ + #define REG_CCFG_DYNCKG (0x4008811CU) /**< \brief (MATRIX) Dynamic Clock Gating Register */ + #define REG_CCFG_SMCNFCS (0x40088124U) /**< \brief (MATRIX) SMC NAND Flash Chip Select Configuration Register */ + #define REG_MATRIX_WPMR (0x400881E4U) /**< \brief (MATRIX) Write Protection Mode Register */ + #define REG_MATRIX_WPSR (0x400881E8U) /**< \brief (MATRIX) Write Protection Status Register */ + #define REG_MATRIX_VERSION (0x400881FCU) /**< \brief (MATRIX) Version Register */ +#else + #define REG_MATRIX_MCFG0 (*(__IO uint32_t*)0x40088000U) /**< \brief (MATRIX) Master Configuration Register 0 */ + #define REG_MATRIX_MCFG1 (*(__IO uint32_t*)0x40088004U) /**< \brief (MATRIX) Master Configuration Register 1 */ + #define REG_MATRIX_MCFG2 (*(__IO uint32_t*)0x40088008U) /**< \brief (MATRIX) Master Configuration Register 2 */ + #define REG_MATRIX_MCFG3 (*(__IO uint32_t*)0x4008800CU) /**< \brief (MATRIX) Master Configuration Register 3 */ + #define REG_MATRIX_MCFG4 (*(__IO uint32_t*)0x40088010U) /**< \brief (MATRIX) Master Configuration Register 4 */ + #define REG_MATRIX_MCFG5 (*(__IO uint32_t*)0x40088014U) /**< \brief (MATRIX) Master Configuration Register 5 */ + #define REG_MATRIX_MCFG6 (*(__IO uint32_t*)0x40088018U) /**< \brief (MATRIX) Master Configuration Register 6 */ + #define REG_MATRIX_MCFG8 (*(__IO uint32_t*)0x40088020U) /**< \brief (MATRIX) Master Configuration Register 8 */ + #define REG_MATRIX_MCFG9 (*(__IO uint32_t*)0x40088024U) /**< \brief (MATRIX) Master Configuration Register 9 */ + #define REG_MATRIX_MCFG10 (*(__IO uint32_t*)0x40088028U) /**< \brief (MATRIX) Master Configuration Register 10 */ + #define REG_MATRIX_MCFG11 (*(__IO uint32_t*)0x4008802CU) /**< \brief (MATRIX) Master Configuration Register 11 */ + #define REG_MATRIX_MCFG12 (*(__IO uint32_t*)0x40088030U) /**< \brief (MATRIX) Master Configuration Register 12 */ + #define REG_MATRIX_SCFG (*(__IO uint32_t*)0x40088040U) /**< \brief (MATRIX) Slave Configuration Register */ + #define REG_MATRIX_PRAS0 (*(__IO uint32_t*)0x40088080U) /**< \brief (MATRIX) Priority Register A for Slave 0 */ + #define REG_MATRIX_PRBS0 (*(__IO uint32_t*)0x40088084U) /**< \brief (MATRIX) Priority Register B for Slave 0 */ + #define REG_MATRIX_PRAS1 (*(__IO uint32_t*)0x40088088U) /**< \brief (MATRIX) Priority Register A for Slave 1 */ + #define REG_MATRIX_PRBS1 (*(__IO uint32_t*)0x4008808CU) /**< \brief (MATRIX) Priority Register B for Slave 1 */ + #define REG_MATRIX_PRAS2 (*(__IO uint32_t*)0x40088090U) /**< \brief (MATRIX) Priority Register A for Slave 2 */ + #define REG_MATRIX_PRBS2 (*(__IO uint32_t*)0x40088094U) /**< \brief (MATRIX) Priority Register B for Slave 2 */ + #define REG_MATRIX_PRAS3 (*(__IO uint32_t*)0x40088098U) /**< \brief (MATRIX) Priority Register A for Slave 3 */ + #define REG_MATRIX_PRBS3 (*(__IO uint32_t*)0x4008809CU) /**< \brief (MATRIX) Priority Register B for Slave 3 */ + #define REG_MATRIX_PRAS4 (*(__IO uint32_t*)0x400880A0U) /**< \brief (MATRIX) Priority Register A for Slave 4 */ + #define REG_MATRIX_PRBS4 (*(__IO uint32_t*)0x400880A4U) /**< \brief (MATRIX) Priority Register B for Slave 4 */ + #define REG_MATRIX_PRAS5 (*(__IO uint32_t*)0x400880A8U) /**< \brief (MATRIX) Priority Register A for Slave 5 */ + #define REG_MATRIX_PRBS5 (*(__IO uint32_t*)0x400880ACU) /**< \brief (MATRIX) Priority Register B for Slave 5 */ + #define REG_MATRIX_PRAS6 (*(__IO uint32_t*)0x400880B0U) /**< \brief (MATRIX) Priority Register A for Slave 6 */ + #define REG_MATRIX_PRBS6 (*(__IO uint32_t*)0x400880B4U) /**< \brief (MATRIX) Priority Register B for Slave 6 */ + #define REG_MATRIX_PRAS7 (*(__IO uint32_t*)0x400880B8U) /**< \brief (MATRIX) Priority Register A for Slave 7 */ + #define REG_MATRIX_PRBS7 (*(__IO uint32_t*)0x400880BCU) /**< \brief (MATRIX) Priority Register B for Slave 7 */ + #define REG_MATRIX_PRAS8 (*(__IO uint32_t*)0x400880C0U) /**< \brief (MATRIX) Priority Register A for Slave 8 */ + #define REG_MATRIX_PRBS8 (*(__IO uint32_t*)0x400880C4U) /**< \brief (MATRIX) Priority Register B for Slave 8 */ + #define REG_MATRIX_MRCR (*(__IO uint32_t*)0x40088100U) /**< \brief (MATRIX) Master Remap Control Register */ + #define REG_CCFG_CAN0 (*(__IO uint32_t*)0x40088110U) /**< \brief (MATRIX) CAN0 Configuration Register */ + #define REG_CCFG_SYSIO (*(__IO uint32_t*)0x40088114U) /**< \brief (MATRIX) System I/O and CAN1 Configuration Register */ + #define REG_CCFG_PCCR (*(__IO uint32_t*)0x40088118U) /**< \brief (MATRIX) Peripheral Clock Configuration Register */ + #define REG_CCFG_DYNCKG (*(__IO uint32_t*)0x4008811CU) /**< \brief (MATRIX) Dynamic Clock Gating Register */ + #define REG_CCFG_SMCNFCS (*(__IO uint32_t*)0x40088124U) /**< \brief (MATRIX) SMC NAND Flash Chip Select Configuration Register */ + #define REG_MATRIX_WPMR (*(__IO uint32_t*)0x400881E4U) /**< \brief (MATRIX) Write Protection Mode Register */ + #define REG_MATRIX_WPSR (*(__I uint32_t*)0x400881E8U) /**< \brief (MATRIX) Write Protection Status Register */ + #define REG_MATRIX_VERSION (*(__I uint32_t*)0x400881FCU) /**< \brief (MATRIX) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_MATRIX_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h new file mode 100644 index 00000000..c8819b34 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h @@ -0,0 +1,141 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_MCAN0_INSTANCE_ +#define _SAME70_MCAN0_INSTANCE_ + +/* ========== Register definition for MCAN0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_MCAN0_CREL (0x40030000U) /**< \brief (MCAN0) Core Release Register */ + #define REG_MCAN0_ENDN (0x40030004U) /**< \brief (MCAN0) Endian Register */ + #define REG_MCAN0_CUST (0x40030008U) /**< \brief (MCAN0) Customer Register */ + #define REG_MCAN0_FBTP (0x4003000CU) /**< \brief (MCAN0) Fast Bit Timing and Prescaler Register */ + #define REG_MCAN0_DBTP (0x4003000CU) /**< \brief (MCAN0) Data Bit Timing and Prescaler Register */ + #define REG_MCAN0_TEST (0x40030010U) /**< \brief (MCAN0) Test Register */ + #define REG_MCAN0_RWD (0x40030014U) /**< \brief (MCAN0) RAM Watchdog Register */ + #define REG_MCAN0_CCCR (0x40030018U) /**< \brief (MCAN0) CC Control Register */ + #define REG_MCAN0_BTP (0x4003001CU) /**< \brief (MCAN0) Bit Timing and Prescaler Register */ + #define REG_MCAN0_NBTP (0x4003001CU) /**< \brief (MCAN0) Nominal Bit Timing and Prescaler Register */ + #define REG_MCAN0_TSCC (0x40030020U) /**< \brief (MCAN0) Timestamp Counter Configuration Register */ + #define REG_MCAN0_TSCV (0x40030024U) /**< \brief (MCAN0) Timestamp Counter Value Register */ + #define REG_MCAN0_TOCC (0x40030028U) /**< \brief (MCAN0) Timeout Counter Configuration Register */ + #define REG_MCAN0_TOCV (0x4003002CU) /**< \brief (MCAN0) Timeout Counter Value Register */ + #define REG_MCAN0_ECR (0x40030040U) /**< \brief (MCAN0) Error Counter Register */ + #define REG_MCAN0_PSR (0x40030044U) /**< \brief (MCAN0) Protocol Status Register */ + #define REG_MCAN0_TDCR (0x40030048U) /**< \brief (MCAN0) Transmit Delay Compensation Register */ + #define REG_MCAN0_IR (0x40030050U) /**< \brief (MCAN0) Interrupt Register */ + #define REG_MCAN0_IE (0x40030054U) /**< \brief (MCAN0) Interrupt Enable Register */ + #define REG_MCAN0_ILS (0x40030058U) /**< \brief (MCAN0) Interrupt Line Select Register */ + #define REG_MCAN0_ILE (0x4003005CU) /**< \brief (MCAN0) Interrupt Line Enable Register */ + #define REG_MCAN0_GFC (0x40030080U) /**< \brief (MCAN0) Global Filter Configuration Register */ + #define REG_MCAN0_SIDFC (0x40030084U) /**< \brief (MCAN0) Standard ID Filter Configuration Register */ + #define REG_MCAN0_XIDFC (0x40030088U) /**< \brief (MCAN0) Extended ID Filter Configuration Register */ + #define REG_MCAN0_XIDAM (0x40030090U) /**< \brief (MCAN0) Extended ID AND Mask Register */ + #define REG_MCAN0_HPMS (0x40030094U) /**< \brief (MCAN0) High Priority Message Status Register */ + #define REG_MCAN0_NDAT1 (0x40030098U) /**< \brief (MCAN0) New Data 1 Register */ + #define REG_MCAN0_NDAT2 (0x4003009CU) /**< \brief (MCAN0) New Data 2 Register */ + #define REG_MCAN0_RXF0C (0x400300A0U) /**< \brief (MCAN0) Receive FIFO 0 Configuration Register */ + #define REG_MCAN0_RXF0S (0x400300A4U) /**< \brief (MCAN0) Receive FIFO 0 Status Register */ + #define REG_MCAN0_RXF0A (0x400300A8U) /**< \brief (MCAN0) Receive FIFO 0 Acknowledge Register */ + #define REG_MCAN0_RXBC (0x400300ACU) /**< \brief (MCAN0) Receive Rx Buffer Configuration Register */ + #define REG_MCAN0_RXF1C (0x400300B0U) /**< \brief (MCAN0) Receive FIFO 1 Configuration Register */ + #define REG_MCAN0_RXF1S (0x400300B4U) /**< \brief (MCAN0) Receive FIFO 1 Status Register */ + #define REG_MCAN0_RXF1A (0x400300B8U) /**< \brief (MCAN0) Receive FIFO 1 Acknowledge Register */ + #define REG_MCAN0_RXESC (0x400300BCU) /**< \brief (MCAN0) Receive Buffer / FIFO Element Size Configuration Register */ + #define REG_MCAN0_TXBC (0x400300C0U) /**< \brief (MCAN0) Transmit Buffer Configuration Register */ + #define REG_MCAN0_TXFQS (0x400300C4U) /**< \brief (MCAN0) Transmit FIFO/Queue Status Register */ + #define REG_MCAN0_TXESC (0x400300C8U) /**< \brief (MCAN0) Transmit Buffer Element Size Configuration Register */ + #define REG_MCAN0_TXBRP (0x400300CCU) /**< \brief (MCAN0) Transmit Buffer Request Pending Register */ + #define REG_MCAN0_TXBAR (0x400300D0U) /**< \brief (MCAN0) Transmit Buffer Add Request Register */ + #define REG_MCAN0_TXBCR (0x400300D4U) /**< \brief (MCAN0) Transmit Buffer Cancellation Request Register */ + #define REG_MCAN0_TXBTO (0x400300D8U) /**< \brief (MCAN0) Transmit Buffer Transmission Occurred Register */ + #define REG_MCAN0_TXBCF (0x400300DCU) /**< \brief (MCAN0) Transmit Buffer Cancellation Finished Register */ + #define REG_MCAN0_TXBTIE (0x400300E0U) /**< \brief (MCAN0) Transmit Buffer Transmission Interrupt Enable Register */ + #define REG_MCAN0_TXBCIE (0x400300E4U) /**< \brief (MCAN0) Transmit Buffer Cancellation Finished Interrupt Enable Register */ + #define REG_MCAN0_TXEFC (0x400300F0U) /**< \brief (MCAN0) Transmit Event FIFO Configuration Register */ + #define REG_MCAN0_TXEFS (0x400300F4U) /**< \brief (MCAN0) Transmit Event FIFO Status Register */ + #define REG_MCAN0_TXEFA (0x400300F8U) /**< \brief (MCAN0) Transmit Event FIFO Acknowledge Register */ +#else + #define REG_MCAN0_CREL (*(__I uint32_t*)0x40030000U) /**< \brief (MCAN0) Core Release Register */ + #define REG_MCAN0_ENDN (*(__I uint32_t*)0x40030004U) /**< \brief (MCAN0) Endian Register */ + #define REG_MCAN0_CUST (*(__IO uint32_t*)0x40030008U) /**< \brief (MCAN0) Customer Register */ + #define REG_MCAN0_FBTP (*(__IO uint32_t*)0x4003000CU) /**< \brief (MCAN0) Fast Bit Timing and Prescaler Register */ + #define REG_MCAN0_DBTP (*(__IO uint32_t*)0x4003000CU) /**< \brief (MCAN0) Data Bit Timing and Prescaler Register */ + #define REG_MCAN0_TEST (*(__IO uint32_t*)0x40030010U) /**< \brief (MCAN0) Test Register */ + #define REG_MCAN0_RWD (*(__IO uint32_t*)0x40030014U) /**< \brief (MCAN0) RAM Watchdog Register */ + #define REG_MCAN0_CCCR (*(__IO uint32_t*)0x40030018U) /**< \brief (MCAN0) CC Control Register */ + #define REG_MCAN0_BTP (*(__IO uint32_t*)0x4003001CU) /**< \brief (MCAN0) Bit Timing and Prescaler Register */ + #define REG_MCAN0_NBTP (*(__IO uint32_t*)0x4003001CU) /**< \brief (MCAN0) Nominal Bit Timing and Prescaler Register */ + #define REG_MCAN0_TSCC (*(__IO uint32_t*)0x40030020U) /**< \brief (MCAN0) Timestamp Counter Configuration Register */ + #define REG_MCAN0_TSCV (*(__IO uint32_t*)0x40030024U) /**< \brief (MCAN0) Timestamp Counter Value Register */ + #define REG_MCAN0_TOCC (*(__IO uint32_t*)0x40030028U) /**< \brief (MCAN0) Timeout Counter Configuration Register */ + #define REG_MCAN0_TOCV (*(__IO uint32_t*)0x4003002CU) /**< \brief (MCAN0) Timeout Counter Value Register */ + #define REG_MCAN0_ECR (*(__I uint32_t*)0x40030040U) /**< \brief (MCAN0) Error Counter Register */ + #define REG_MCAN0_PSR (*(__I uint32_t*)0x40030044U) /**< \brief (MCAN0) Protocol Status Register */ + #define REG_MCAN0_TDCR (*(__IO uint32_t*)0x40030048U) /**< \brief (MCAN0) Transmit Delay Compensation Register */ + #define REG_MCAN0_IR (*(__IO uint32_t*)0x40030050U) /**< \brief (MCAN0) Interrupt Register */ + #define REG_MCAN0_IE (*(__IO uint32_t*)0x40030054U) /**< \brief (MCAN0) Interrupt Enable Register */ + #define REG_MCAN0_ILS (*(__IO uint32_t*)0x40030058U) /**< \brief (MCAN0) Interrupt Line Select Register */ + #define REG_MCAN0_ILE (*(__IO uint32_t*)0x4003005CU) /**< \brief (MCAN0) Interrupt Line Enable Register */ + #define REG_MCAN0_GFC (*(__IO uint32_t*)0x40030080U) /**< \brief (MCAN0) Global Filter Configuration Register */ + #define REG_MCAN0_SIDFC (*(__IO uint32_t*)0x40030084U) /**< \brief (MCAN0) Standard ID Filter Configuration Register */ + #define REG_MCAN0_XIDFC (*(__IO uint32_t*)0x40030088U) /**< \brief (MCAN0) Extended ID Filter Configuration Register */ + #define REG_MCAN0_XIDAM (*(__IO uint32_t*)0x40030090U) /**< \brief (MCAN0) Extended ID AND Mask Register */ + #define REG_MCAN0_HPMS (*(__I uint32_t*)0x40030094U) /**< \brief (MCAN0) High Priority Message Status Register */ + #define REG_MCAN0_NDAT1 (*(__IO uint32_t*)0x40030098U) /**< \brief (MCAN0) New Data 1 Register */ + #define REG_MCAN0_NDAT2 (*(__IO uint32_t*)0x4003009CU) /**< \brief (MCAN0) New Data 2 Register */ + #define REG_MCAN0_RXF0C (*(__IO uint32_t*)0x400300A0U) /**< \brief (MCAN0) Receive FIFO 0 Configuration Register */ + #define REG_MCAN0_RXF0S (*(__I uint32_t*)0x400300A4U) /**< \brief (MCAN0) Receive FIFO 0 Status Register */ + #define REG_MCAN0_RXF0A (*(__IO uint32_t*)0x400300A8U) /**< \brief (MCAN0) Receive FIFO 0 Acknowledge Register */ + #define REG_MCAN0_RXBC (*(__IO uint32_t*)0x400300ACU) /**< \brief (MCAN0) Receive Rx Buffer Configuration Register */ + #define REG_MCAN0_RXF1C (*(__IO uint32_t*)0x400300B0U) /**< \brief (MCAN0) Receive FIFO 1 Configuration Register */ + #define REG_MCAN0_RXF1S (*(__I uint32_t*)0x400300B4U) /**< \brief (MCAN0) Receive FIFO 1 Status Register */ + #define REG_MCAN0_RXF1A (*(__IO uint32_t*)0x400300B8U) /**< \brief (MCAN0) Receive FIFO 1 Acknowledge Register */ + #define REG_MCAN0_RXESC (*(__IO uint32_t*)0x400300BCU) /**< \brief (MCAN0) Receive Buffer / FIFO Element Size Configuration Register */ + #define REG_MCAN0_TXBC (*(__IO uint32_t*)0x400300C0U) /**< \brief (MCAN0) Transmit Buffer Configuration Register */ + #define REG_MCAN0_TXFQS (*(__I uint32_t*)0x400300C4U) /**< \brief (MCAN0) Transmit FIFO/Queue Status Register */ + #define REG_MCAN0_TXESC (*(__IO uint32_t*)0x400300C8U) /**< \brief (MCAN0) Transmit Buffer Element Size Configuration Register */ + #define REG_MCAN0_TXBRP (*(__I uint32_t*)0x400300CCU) /**< \brief (MCAN0) Transmit Buffer Request Pending Register */ + #define REG_MCAN0_TXBAR (*(__IO uint32_t*)0x400300D0U) /**< \brief (MCAN0) Transmit Buffer Add Request Register */ + #define REG_MCAN0_TXBCR (*(__IO uint32_t*)0x400300D4U) /**< \brief (MCAN0) Transmit Buffer Cancellation Request Register */ + #define REG_MCAN0_TXBTO (*(__I uint32_t*)0x400300D8U) /**< \brief (MCAN0) Transmit Buffer Transmission Occurred Register */ + #define REG_MCAN0_TXBCF (*(__I uint32_t*)0x400300DCU) /**< \brief (MCAN0) Transmit Buffer Cancellation Finished Register */ + #define REG_MCAN0_TXBTIE (*(__IO uint32_t*)0x400300E0U) /**< \brief (MCAN0) Transmit Buffer Transmission Interrupt Enable Register */ + #define REG_MCAN0_TXBCIE (*(__IO uint32_t*)0x400300E4U) /**< \brief (MCAN0) Transmit Buffer Cancellation Finished Interrupt Enable Register */ + #define REG_MCAN0_TXEFC (*(__IO uint32_t*)0x400300F0U) /**< \brief (MCAN0) Transmit Event FIFO Configuration Register */ + #define REG_MCAN0_TXEFS (*(__I uint32_t*)0x400300F4U) /**< \brief (MCAN0) Transmit Event FIFO Status Register */ + #define REG_MCAN0_TXEFA (*(__IO uint32_t*)0x400300F8U) /**< \brief (MCAN0) Transmit Event FIFO Acknowledge Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_MCAN0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h new file mode 100644 index 00000000..2c81491a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h @@ -0,0 +1,141 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_MCAN1_INSTANCE_ +#define _SAME70_MCAN1_INSTANCE_ + +/* ========== Register definition for MCAN1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_MCAN1_CREL (0x40034000U) /**< \brief (MCAN1) Core Release Register */ + #define REG_MCAN1_ENDN (0x40034004U) /**< \brief (MCAN1) Endian Register */ + #define REG_MCAN1_CUST (0x40034008U) /**< \brief (MCAN1) Customer Register */ + #define REG_MCAN1_FBTP (0x4003400CU) /**< \brief (MCAN1) Fast Bit Timing and Prescaler Register */ + #define REG_MCAN1_DBTP (0x4003400CU) /**< \brief (MCAN1) Data Bit Timing and Prescaler Register */ + #define REG_MCAN1_TEST (0x40034010U) /**< \brief (MCAN1) Test Register */ + #define REG_MCAN1_RWD (0x40034014U) /**< \brief (MCAN1) RAM Watchdog Register */ + #define REG_MCAN1_CCCR (0x40034018U) /**< \brief (MCAN1) CC Control Register */ + #define REG_MCAN1_BTP (0x4003401CU) /**< \brief (MCAN1) Bit Timing and Prescaler Register */ + #define REG_MCAN1_NBTP (0x4003401CU) /**< \brief (MCAN1) Nominal Bit Timing and Prescaler Register */ + #define REG_MCAN1_TSCC (0x40034020U) /**< \brief (MCAN1) Timestamp Counter Configuration Register */ + #define REG_MCAN1_TSCV (0x40034024U) /**< \brief (MCAN1) Timestamp Counter Value Register */ + #define REG_MCAN1_TOCC (0x40034028U) /**< \brief (MCAN1) Timeout Counter Configuration Register */ + #define REG_MCAN1_TOCV (0x4003402CU) /**< \brief (MCAN1) Timeout Counter Value Register */ + #define REG_MCAN1_ECR (0x40034040U) /**< \brief (MCAN1) Error Counter Register */ + #define REG_MCAN1_PSR (0x40034044U) /**< \brief (MCAN1) Protocol Status Register */ + #define REG_MCAN1_TDCR (0x40034048U) /**< \brief (MCAN1) Transmit Delay Compensation Register */ + #define REG_MCAN1_IR (0x40034050U) /**< \brief (MCAN1) Interrupt Register */ + #define REG_MCAN1_IE (0x40034054U) /**< \brief (MCAN1) Interrupt Enable Register */ + #define REG_MCAN1_ILS (0x40034058U) /**< \brief (MCAN1) Interrupt Line Select Register */ + #define REG_MCAN1_ILE (0x4003405CU) /**< \brief (MCAN1) Interrupt Line Enable Register */ + #define REG_MCAN1_GFC (0x40034080U) /**< \brief (MCAN1) Global Filter Configuration Register */ + #define REG_MCAN1_SIDFC (0x40034084U) /**< \brief (MCAN1) Standard ID Filter Configuration Register */ + #define REG_MCAN1_XIDFC (0x40034088U) /**< \brief (MCAN1) Extended ID Filter Configuration Register */ + #define REG_MCAN1_XIDAM (0x40034090U) /**< \brief (MCAN1) Extended ID AND Mask Register */ + #define REG_MCAN1_HPMS (0x40034094U) /**< \brief (MCAN1) High Priority Message Status Register */ + #define REG_MCAN1_NDAT1 (0x40034098U) /**< \brief (MCAN1) New Data 1 Register */ + #define REG_MCAN1_NDAT2 (0x4003409CU) /**< \brief (MCAN1) New Data 2 Register */ + #define REG_MCAN1_RXF0C (0x400340A0U) /**< \brief (MCAN1) Receive FIFO 0 Configuration Register */ + #define REG_MCAN1_RXF0S (0x400340A4U) /**< \brief (MCAN1) Receive FIFO 0 Status Register */ + #define REG_MCAN1_RXF0A (0x400340A8U) /**< \brief (MCAN1) Receive FIFO 0 Acknowledge Register */ + #define REG_MCAN1_RXBC (0x400340ACU) /**< \brief (MCAN1) Receive Rx Buffer Configuration Register */ + #define REG_MCAN1_RXF1C (0x400340B0U) /**< \brief (MCAN1) Receive FIFO 1 Configuration Register */ + #define REG_MCAN1_RXF1S (0x400340B4U) /**< \brief (MCAN1) Receive FIFO 1 Status Register */ + #define REG_MCAN1_RXF1A (0x400340B8U) /**< \brief (MCAN1) Receive FIFO 1 Acknowledge Register */ + #define REG_MCAN1_RXESC (0x400340BCU) /**< \brief (MCAN1) Receive Buffer / FIFO Element Size Configuration Register */ + #define REG_MCAN1_TXBC (0x400340C0U) /**< \brief (MCAN1) Transmit Buffer Configuration Register */ + #define REG_MCAN1_TXFQS (0x400340C4U) /**< \brief (MCAN1) Transmit FIFO/Queue Status Register */ + #define REG_MCAN1_TXESC (0x400340C8U) /**< \brief (MCAN1) Transmit Buffer Element Size Configuration Register */ + #define REG_MCAN1_TXBRP (0x400340CCU) /**< \brief (MCAN1) Transmit Buffer Request Pending Register */ + #define REG_MCAN1_TXBAR (0x400340D0U) /**< \brief (MCAN1) Transmit Buffer Add Request Register */ + #define REG_MCAN1_TXBCR (0x400340D4U) /**< \brief (MCAN1) Transmit Buffer Cancellation Request Register */ + #define REG_MCAN1_TXBTO (0x400340D8U) /**< \brief (MCAN1) Transmit Buffer Transmission Occurred Register */ + #define REG_MCAN1_TXBCF (0x400340DCU) /**< \brief (MCAN1) Transmit Buffer Cancellation Finished Register */ + #define REG_MCAN1_TXBTIE (0x400340E0U) /**< \brief (MCAN1) Transmit Buffer Transmission Interrupt Enable Register */ + #define REG_MCAN1_TXBCIE (0x400340E4U) /**< \brief (MCAN1) Transmit Buffer Cancellation Finished Interrupt Enable Register */ + #define REG_MCAN1_TXEFC (0x400340F0U) /**< \brief (MCAN1) Transmit Event FIFO Configuration Register */ + #define REG_MCAN1_TXEFS (0x400340F4U) /**< \brief (MCAN1) Transmit Event FIFO Status Register */ + #define REG_MCAN1_TXEFA (0x400340F8U) /**< \brief (MCAN1) Transmit Event FIFO Acknowledge Register */ +#else + #define REG_MCAN1_CREL (*(__I uint32_t*)0x40034000U) /**< \brief (MCAN1) Core Release Register */ + #define REG_MCAN1_ENDN (*(__I uint32_t*)0x40034004U) /**< \brief (MCAN1) Endian Register */ + #define REG_MCAN1_CUST (*(__IO uint32_t*)0x40034008U) /**< \brief (MCAN1) Customer Register */ + #define REG_MCAN1_FBTP (*(__IO uint32_t*)0x4003400CU) /**< \brief (MCAN1) Fast Bit Timing and Prescaler Register */ + #define REG_MCAN1_DBTP (*(__IO uint32_t*)0x4003400CU) /**< \brief (MCAN1) Data Bit Timing and Prescaler Register */ + #define REG_MCAN1_TEST (*(__IO uint32_t*)0x40034010U) /**< \brief (MCAN1) Test Register */ + #define REG_MCAN1_RWD (*(__IO uint32_t*)0x40034014U) /**< \brief (MCAN1) RAM Watchdog Register */ + #define REG_MCAN1_CCCR (*(__IO uint32_t*)0x40034018U) /**< \brief (MCAN1) CC Control Register */ + #define REG_MCAN1_BTP (*(__IO uint32_t*)0x4003401CU) /**< \brief (MCAN1) Bit Timing and Prescaler Register */ + #define REG_MCAN1_NBTP (*(__IO uint32_t*)0x4003401CU) /**< \brief (MCAN1) Nominal Bit Timing and Prescaler Register */ + #define REG_MCAN1_TSCC (*(__IO uint32_t*)0x40034020U) /**< \brief (MCAN1) Timestamp Counter Configuration Register */ + #define REG_MCAN1_TSCV (*(__IO uint32_t*)0x40034024U) /**< \brief (MCAN1) Timestamp Counter Value Register */ + #define REG_MCAN1_TOCC (*(__IO uint32_t*)0x40034028U) /**< \brief (MCAN1) Timeout Counter Configuration Register */ + #define REG_MCAN1_TOCV (*(__IO uint32_t*)0x4003402CU) /**< \brief (MCAN1) Timeout Counter Value Register */ + #define REG_MCAN1_ECR (*(__I uint32_t*)0x40034040U) /**< \brief (MCAN1) Error Counter Register */ + #define REG_MCAN1_PSR (*(__I uint32_t*)0x40034044U) /**< \brief (MCAN1) Protocol Status Register */ + #define REG_MCAN1_TDCR (*(__IO uint32_t*)0x40034048U) /**< \brief (MCAN1) Transmit Delay Compensation Register */ + #define REG_MCAN1_IR (*(__IO uint32_t*)0x40034050U) /**< \brief (MCAN1) Interrupt Register */ + #define REG_MCAN1_IE (*(__IO uint32_t*)0x40034054U) /**< \brief (MCAN1) Interrupt Enable Register */ + #define REG_MCAN1_ILS (*(__IO uint32_t*)0x40034058U) /**< \brief (MCAN1) Interrupt Line Select Register */ + #define REG_MCAN1_ILE (*(__IO uint32_t*)0x4003405CU) /**< \brief (MCAN1) Interrupt Line Enable Register */ + #define REG_MCAN1_GFC (*(__IO uint32_t*)0x40034080U) /**< \brief (MCAN1) Global Filter Configuration Register */ + #define REG_MCAN1_SIDFC (*(__IO uint32_t*)0x40034084U) /**< \brief (MCAN1) Standard ID Filter Configuration Register */ + #define REG_MCAN1_XIDFC (*(__IO uint32_t*)0x40034088U) /**< \brief (MCAN1) Extended ID Filter Configuration Register */ + #define REG_MCAN1_XIDAM (*(__IO uint32_t*)0x40034090U) /**< \brief (MCAN1) Extended ID AND Mask Register */ + #define REG_MCAN1_HPMS (*(__I uint32_t*)0x40034094U) /**< \brief (MCAN1) High Priority Message Status Register */ + #define REG_MCAN1_NDAT1 (*(__IO uint32_t*)0x40034098U) /**< \brief (MCAN1) New Data 1 Register */ + #define REG_MCAN1_NDAT2 (*(__IO uint32_t*)0x4003409CU) /**< \brief (MCAN1) New Data 2 Register */ + #define REG_MCAN1_RXF0C (*(__IO uint32_t*)0x400340A0U) /**< \brief (MCAN1) Receive FIFO 0 Configuration Register */ + #define REG_MCAN1_RXF0S (*(__I uint32_t*)0x400340A4U) /**< \brief (MCAN1) Receive FIFO 0 Status Register */ + #define REG_MCAN1_RXF0A (*(__IO uint32_t*)0x400340A8U) /**< \brief (MCAN1) Receive FIFO 0 Acknowledge Register */ + #define REG_MCAN1_RXBC (*(__IO uint32_t*)0x400340ACU) /**< \brief (MCAN1) Receive Rx Buffer Configuration Register */ + #define REG_MCAN1_RXF1C (*(__IO uint32_t*)0x400340B0U) /**< \brief (MCAN1) Receive FIFO 1 Configuration Register */ + #define REG_MCAN1_RXF1S (*(__I uint32_t*)0x400340B4U) /**< \brief (MCAN1) Receive FIFO 1 Status Register */ + #define REG_MCAN1_RXF1A (*(__IO uint32_t*)0x400340B8U) /**< \brief (MCAN1) Receive FIFO 1 Acknowledge Register */ + #define REG_MCAN1_RXESC (*(__IO uint32_t*)0x400340BCU) /**< \brief (MCAN1) Receive Buffer / FIFO Element Size Configuration Register */ + #define REG_MCAN1_TXBC (*(__IO uint32_t*)0x400340C0U) /**< \brief (MCAN1) Transmit Buffer Configuration Register */ + #define REG_MCAN1_TXFQS (*(__I uint32_t*)0x400340C4U) /**< \brief (MCAN1) Transmit FIFO/Queue Status Register */ + #define REG_MCAN1_TXESC (*(__IO uint32_t*)0x400340C8U) /**< \brief (MCAN1) Transmit Buffer Element Size Configuration Register */ + #define REG_MCAN1_TXBRP (*(__I uint32_t*)0x400340CCU) /**< \brief (MCAN1) Transmit Buffer Request Pending Register */ + #define REG_MCAN1_TXBAR (*(__IO uint32_t*)0x400340D0U) /**< \brief (MCAN1) Transmit Buffer Add Request Register */ + #define REG_MCAN1_TXBCR (*(__IO uint32_t*)0x400340D4U) /**< \brief (MCAN1) Transmit Buffer Cancellation Request Register */ + #define REG_MCAN1_TXBTO (*(__I uint32_t*)0x400340D8U) /**< \brief (MCAN1) Transmit Buffer Transmission Occurred Register */ + #define REG_MCAN1_TXBCF (*(__I uint32_t*)0x400340DCU) /**< \brief (MCAN1) Transmit Buffer Cancellation Finished Register */ + #define REG_MCAN1_TXBTIE (*(__IO uint32_t*)0x400340E0U) /**< \brief (MCAN1) Transmit Buffer Transmission Interrupt Enable Register */ + #define REG_MCAN1_TXBCIE (*(__IO uint32_t*)0x400340E4U) /**< \brief (MCAN1) Transmit Buffer Cancellation Finished Interrupt Enable Register */ + #define REG_MCAN1_TXEFC (*(__IO uint32_t*)0x400340F0U) /**< \brief (MCAN1) Transmit Event FIFO Configuration Register */ + #define REG_MCAN1_TXEFS (*(__I uint32_t*)0x400340F4U) /**< \brief (MCAN1) Transmit Event FIFO Status Register */ + #define REG_MCAN1_TXEFA (*(__IO uint32_t*)0x400340F8U) /**< \brief (MCAN1) Transmit Event FIFO Acknowledge Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_MCAN1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h new file mode 100644 index 00000000..8aac50ff --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h @@ -0,0 +1,171 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PIOA_INSTANCE_ +#define _SAME70_PIOA_INSTANCE_ + +/* ========== Register definition for PIOA peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PIOA_PER (0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ + #define REG_PIOA_PDR (0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ + #define REG_PIOA_PSR (0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ + #define REG_PIOA_OER (0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ + #define REG_PIOA_ODR (0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ + #define REG_PIOA_OSR (0x400E0E18U) /**< \brief (PIOA) Output Status Register */ + #define REG_PIOA_IFER (0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ + #define REG_PIOA_IFDR (0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ + #define REG_PIOA_IFSR (0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ + #define REG_PIOA_SODR (0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ + #define REG_PIOA_CODR (0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ + #define REG_PIOA_ODSR (0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ + #define REG_PIOA_PDSR (0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ + #define REG_PIOA_IER (0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ + #define REG_PIOA_IDR (0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ + #define REG_PIOA_IMR (0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ + #define REG_PIOA_ISR (0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ + #define REG_PIOA_MDER (0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ + #define REG_PIOA_MDDR (0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ + #define REG_PIOA_MDSR (0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ + #define REG_PIOA_PUDR (0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ + #define REG_PIOA_PUER (0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ + #define REG_PIOA_PUSR (0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ + #define REG_PIOA_ABCDSR (0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ + #define REG_PIOA_IFSCDR (0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ + #define REG_PIOA_IFSCER (0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ + #define REG_PIOA_IFSCSR (0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ + #define REG_PIOA_SCDR (0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ + #define REG_PIOA_PPDDR (0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ + #define REG_PIOA_PPDER (0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ + #define REG_PIOA_PPDSR (0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ + #define REG_PIOA_OWER (0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ + #define REG_PIOA_OWDR (0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ + #define REG_PIOA_OWSR (0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ + #define REG_PIOA_AIMER (0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ + #define REG_PIOA_AIMDR (0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disable Register */ + #define REG_PIOA_AIMMR (0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ + #define REG_PIOA_ESR (0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ + #define REG_PIOA_LSR (0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ + #define REG_PIOA_ELSR (0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ + #define REG_PIOA_FELLSR (0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low-Level Select Register */ + #define REG_PIOA_REHLSR (0x400E0ED4U) /**< \brief (PIOA) Rising Edge/High-Level Select Register */ + #define REG_PIOA_FRLHSR (0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ + #define REG_PIOA_LOCKSR (0x400E0EE0U) /**< \brief (PIOA) Lock Status */ + #define REG_PIOA_WPMR (0x400E0EE4U) /**< \brief (PIOA) Write Protection Mode Register */ + #define REG_PIOA_WPSR (0x400E0EE8U) /**< \brief (PIOA) Write Protection Status Register */ + #define REG_PIOA_VERSION (0x400E0EFCU) /**< \brief (PIOA) Version Register */ + #define REG_PIOA_SCHMITT (0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ + #define REG_PIOA_DRIVER (0x400E0F18U) /**< \brief (PIOA) PIO I/O Drive Register */ + #define REG_PIOA_KER (0x400E0F20U) /**< \brief (PIOA) Keypad Controller Enable Register */ + #define REG_PIOA_KRCR (0x400E0F24U) /**< \brief (PIOA) Keypad Controller Row Column Register */ + #define REG_PIOA_KDR (0x400E0F28U) /**< \brief (PIOA) Keypad Controller Debouncing Register */ + #define REG_PIOA_KIER (0x400E0F30U) /**< \brief (PIOA) Keypad Controller Interrupt Enable Register */ + #define REG_PIOA_KIDR (0x400E0F34U) /**< \brief (PIOA) Keypad Controller Interrupt Disable Register */ + #define REG_PIOA_KIMR (0x400E0F38U) /**< \brief (PIOA) Keypad Controller Interrupt Mask Register */ + #define REG_PIOA_KSR (0x400E0F3CU) /**< \brief (PIOA) Keypad Controller Status Register */ + #define REG_PIOA_KKPR (0x400E0F40U) /**< \brief (PIOA) Keypad Controller Key Press Register */ + #define REG_PIOA_KKRR (0x400E0F44U) /**< \brief (PIOA) Keypad Controller Key Release Register */ + #define REG_PIOA_PCMR (0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ + #define REG_PIOA_PCIER (0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ + #define REG_PIOA_PCIDR (0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ + #define REG_PIOA_PCIMR (0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ + #define REG_PIOA_PCISR (0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ + #define REG_PIOA_PCRHR (0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#else + #define REG_PIOA_PER (*(__O uint32_t*)0x400E0E00U) /**< \brief (PIOA) PIO Enable Register */ + #define REG_PIOA_PDR (*(__O uint32_t*)0x400E0E04U) /**< \brief (PIOA) PIO Disable Register */ + #define REG_PIOA_PSR (*(__I uint32_t*)0x400E0E08U) /**< \brief (PIOA) PIO Status Register */ + #define REG_PIOA_OER (*(__O uint32_t*)0x400E0E10U) /**< \brief (PIOA) Output Enable Register */ + #define REG_PIOA_ODR (*(__O uint32_t*)0x400E0E14U) /**< \brief (PIOA) Output Disable Register */ + #define REG_PIOA_OSR (*(__I uint32_t*)0x400E0E18U) /**< \brief (PIOA) Output Status Register */ + #define REG_PIOA_IFER (*(__O uint32_t*)0x400E0E20U) /**< \brief (PIOA) Glitch Input Filter Enable Register */ + #define REG_PIOA_IFDR (*(__O uint32_t*)0x400E0E24U) /**< \brief (PIOA) Glitch Input Filter Disable Register */ + #define REG_PIOA_IFSR (*(__I uint32_t*)0x400E0E28U) /**< \brief (PIOA) Glitch Input Filter Status Register */ + #define REG_PIOA_SODR (*(__O uint32_t*)0x400E0E30U) /**< \brief (PIOA) Set Output Data Register */ + #define REG_PIOA_CODR (*(__O uint32_t*)0x400E0E34U) /**< \brief (PIOA) Clear Output Data Register */ + #define REG_PIOA_ODSR (*(__IO uint32_t*)0x400E0E38U) /**< \brief (PIOA) Output Data Status Register */ + #define REG_PIOA_PDSR (*(__I uint32_t*)0x400E0E3CU) /**< \brief (PIOA) Pin Data Status Register */ + #define REG_PIOA_IER (*(__O uint32_t*)0x400E0E40U) /**< \brief (PIOA) Interrupt Enable Register */ + #define REG_PIOA_IDR (*(__O uint32_t*)0x400E0E44U) /**< \brief (PIOA) Interrupt Disable Register */ + #define REG_PIOA_IMR (*(__I uint32_t*)0x400E0E48U) /**< \brief (PIOA) Interrupt Mask Register */ + #define REG_PIOA_ISR (*(__I uint32_t*)0x400E0E4CU) /**< \brief (PIOA) Interrupt Status Register */ + #define REG_PIOA_MDER (*(__O uint32_t*)0x400E0E50U) /**< \brief (PIOA) Multi-driver Enable Register */ + #define REG_PIOA_MDDR (*(__O uint32_t*)0x400E0E54U) /**< \brief (PIOA) Multi-driver Disable Register */ + #define REG_PIOA_MDSR (*(__I uint32_t*)0x400E0E58U) /**< \brief (PIOA) Multi-driver Status Register */ + #define REG_PIOA_PUDR (*(__O uint32_t*)0x400E0E60U) /**< \brief (PIOA) Pull-up Disable Register */ + #define REG_PIOA_PUER (*(__O uint32_t*)0x400E0E64U) /**< \brief (PIOA) Pull-up Enable Register */ + #define REG_PIOA_PUSR (*(__I uint32_t*)0x400E0E68U) /**< \brief (PIOA) Pad Pull-up Status Register */ + #define REG_PIOA_ABCDSR (*(__IO uint32_t*)0x400E0E70U) /**< \brief (PIOA) Peripheral Select Register */ + #define REG_PIOA_IFSCDR (*(__O uint32_t*)0x400E0E80U) /**< \brief (PIOA) Input Filter Slow Clock Disable Register */ + #define REG_PIOA_IFSCER (*(__O uint32_t*)0x400E0E84U) /**< \brief (PIOA) Input Filter Slow Clock Enable Register */ + #define REG_PIOA_IFSCSR (*(__I uint32_t*)0x400E0E88U) /**< \brief (PIOA) Input Filter Slow Clock Status Register */ + #define REG_PIOA_SCDR (*(__IO uint32_t*)0x400E0E8CU) /**< \brief (PIOA) Slow Clock Divider Debouncing Register */ + #define REG_PIOA_PPDDR (*(__O uint32_t*)0x400E0E90U) /**< \brief (PIOA) Pad Pull-down Disable Register */ + #define REG_PIOA_PPDER (*(__O uint32_t*)0x400E0E94U) /**< \brief (PIOA) Pad Pull-down Enable Register */ + #define REG_PIOA_PPDSR (*(__I uint32_t*)0x400E0E98U) /**< \brief (PIOA) Pad Pull-down Status Register */ + #define REG_PIOA_OWER (*(__O uint32_t*)0x400E0EA0U) /**< \brief (PIOA) Output Write Enable */ + #define REG_PIOA_OWDR (*(__O uint32_t*)0x400E0EA4U) /**< \brief (PIOA) Output Write Disable */ + #define REG_PIOA_OWSR (*(__I uint32_t*)0x400E0EA8U) /**< \brief (PIOA) Output Write Status Register */ + #define REG_PIOA_AIMER (*(__O uint32_t*)0x400E0EB0U) /**< \brief (PIOA) Additional Interrupt Modes Enable Register */ + #define REG_PIOA_AIMDR (*(__O uint32_t*)0x400E0EB4U) /**< \brief (PIOA) Additional Interrupt Modes Disable Register */ + #define REG_PIOA_AIMMR (*(__I uint32_t*)0x400E0EB8U) /**< \brief (PIOA) Additional Interrupt Modes Mask Register */ + #define REG_PIOA_ESR (*(__O uint32_t*)0x400E0EC0U) /**< \brief (PIOA) Edge Select Register */ + #define REG_PIOA_LSR (*(__O uint32_t*)0x400E0EC4U) /**< \brief (PIOA) Level Select Register */ + #define REG_PIOA_ELSR (*(__I uint32_t*)0x400E0EC8U) /**< \brief (PIOA) Edge/Level Status Register */ + #define REG_PIOA_FELLSR (*(__O uint32_t*)0x400E0ED0U) /**< \brief (PIOA) Falling Edge/Low-Level Select Register */ + #define REG_PIOA_REHLSR (*(__O uint32_t*)0x400E0ED4U) /**< \brief (PIOA) Rising Edge/High-Level Select Register */ + #define REG_PIOA_FRLHSR (*(__I uint32_t*)0x400E0ED8U) /**< \brief (PIOA) Fall/Rise - Low/High Status Register */ + #define REG_PIOA_LOCKSR (*(__I uint32_t*)0x400E0EE0U) /**< \brief (PIOA) Lock Status */ + #define REG_PIOA_WPMR (*(__IO uint32_t*)0x400E0EE4U) /**< \brief (PIOA) Write Protection Mode Register */ + #define REG_PIOA_WPSR (*(__I uint32_t*)0x400E0EE8U) /**< \brief (PIOA) Write Protection Status Register */ + #define REG_PIOA_VERSION (*(__I uint32_t*)0x400E0EFCU) /**< \brief (PIOA) Version Register */ + #define REG_PIOA_SCHMITT (*(__IO uint32_t*)0x400E0F00U) /**< \brief (PIOA) Schmitt Trigger Register */ + #define REG_PIOA_DRIVER (*(__IO uint32_t*)0x400E0F18U) /**< \brief (PIOA) PIO I/O Drive Register */ + #define REG_PIOA_KER (*(__IO uint32_t*)0x400E0F20U) /**< \brief (PIOA) Keypad Controller Enable Register */ + #define REG_PIOA_KRCR (*(__IO uint32_t*)0x400E0F24U) /**< \brief (PIOA) Keypad Controller Row Column Register */ + #define REG_PIOA_KDR (*(__IO uint32_t*)0x400E0F28U) /**< \brief (PIOA) Keypad Controller Debouncing Register */ + #define REG_PIOA_KIER (*(__O uint32_t*)0x400E0F30U) /**< \brief (PIOA) Keypad Controller Interrupt Enable Register */ + #define REG_PIOA_KIDR (*(__O uint32_t*)0x400E0F34U) /**< \brief (PIOA) Keypad Controller Interrupt Disable Register */ + #define REG_PIOA_KIMR (*(__I uint32_t*)0x400E0F38U) /**< \brief (PIOA) Keypad Controller Interrupt Mask Register */ + #define REG_PIOA_KSR (*(__I uint32_t*)0x400E0F3CU) /**< \brief (PIOA) Keypad Controller Status Register */ + #define REG_PIOA_KKPR (*(__I uint32_t*)0x400E0F40U) /**< \brief (PIOA) Keypad Controller Key Press Register */ + #define REG_PIOA_KKRR (*(__I uint32_t*)0x400E0F44U) /**< \brief (PIOA) Keypad Controller Key Release Register */ + #define REG_PIOA_PCMR (*(__IO uint32_t*)0x400E0F50U) /**< \brief (PIOA) Parallel Capture Mode Register */ + #define REG_PIOA_PCIER (*(__O uint32_t*)0x400E0F54U) /**< \brief (PIOA) Parallel Capture Interrupt Enable Register */ + #define REG_PIOA_PCIDR (*(__O uint32_t*)0x400E0F58U) /**< \brief (PIOA) Parallel Capture Interrupt Disable Register */ + #define REG_PIOA_PCIMR (*(__I uint32_t*)0x400E0F5CU) /**< \brief (PIOA) Parallel Capture Interrupt Mask Register */ + #define REG_PIOA_PCISR (*(__I uint32_t*)0x400E0F60U) /**< \brief (PIOA) Parallel Capture Interrupt Status Register */ + #define REG_PIOA_PCRHR (*(__I uint32_t*)0x400E0F64U) /**< \brief (PIOA) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PIOA_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h new file mode 100644 index 00000000..20f6e283 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h @@ -0,0 +1,171 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PIOB_INSTANCE_ +#define _SAME70_PIOB_INSTANCE_ + +/* ========== Register definition for PIOB peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PIOB_PER (0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ + #define REG_PIOB_PDR (0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ + #define REG_PIOB_PSR (0x400E1008U) /**< \brief (PIOB) PIO Status Register */ + #define REG_PIOB_OER (0x400E1010U) /**< \brief (PIOB) Output Enable Register */ + #define REG_PIOB_ODR (0x400E1014U) /**< \brief (PIOB) Output Disable Register */ + #define REG_PIOB_OSR (0x400E1018U) /**< \brief (PIOB) Output Status Register */ + #define REG_PIOB_IFER (0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ + #define REG_PIOB_IFDR (0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ + #define REG_PIOB_IFSR (0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ + #define REG_PIOB_SODR (0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ + #define REG_PIOB_CODR (0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ + #define REG_PIOB_ODSR (0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ + #define REG_PIOB_PDSR (0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ + #define REG_PIOB_IER (0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ + #define REG_PIOB_IDR (0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ + #define REG_PIOB_IMR (0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ + #define REG_PIOB_ISR (0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ + #define REG_PIOB_MDER (0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ + #define REG_PIOB_MDDR (0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ + #define REG_PIOB_MDSR (0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ + #define REG_PIOB_PUDR (0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ + #define REG_PIOB_PUER (0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ + #define REG_PIOB_PUSR (0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ + #define REG_PIOB_ABCDSR (0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ + #define REG_PIOB_IFSCDR (0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ + #define REG_PIOB_IFSCER (0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ + #define REG_PIOB_IFSCSR (0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ + #define REG_PIOB_SCDR (0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ + #define REG_PIOB_PPDDR (0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ + #define REG_PIOB_PPDER (0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ + #define REG_PIOB_PPDSR (0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ + #define REG_PIOB_OWER (0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ + #define REG_PIOB_OWDR (0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ + #define REG_PIOB_OWSR (0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ + #define REG_PIOB_AIMER (0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ + #define REG_PIOB_AIMDR (0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disable Register */ + #define REG_PIOB_AIMMR (0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ + #define REG_PIOB_ESR (0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ + #define REG_PIOB_LSR (0x400E10C4U) /**< \brief (PIOB) Level Select Register */ + #define REG_PIOB_ELSR (0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ + #define REG_PIOB_FELLSR (0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low-Level Select Register */ + #define REG_PIOB_REHLSR (0x400E10D4U) /**< \brief (PIOB) Rising Edge/High-Level Select Register */ + #define REG_PIOB_FRLHSR (0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ + #define REG_PIOB_LOCKSR (0x400E10E0U) /**< \brief (PIOB) Lock Status */ + #define REG_PIOB_WPMR (0x400E10E4U) /**< \brief (PIOB) Write Protection Mode Register */ + #define REG_PIOB_WPSR (0x400E10E8U) /**< \brief (PIOB) Write Protection Status Register */ + #define REG_PIOB_VERSION (0x400E10FCU) /**< \brief (PIOB) Version Register */ + #define REG_PIOB_SCHMITT (0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ + #define REG_PIOB_DRIVER (0x400E1118U) /**< \brief (PIOB) PIO I/O Drive Register */ + #define REG_PIOB_KER (0x400E1120U) /**< \brief (PIOB) Keypad Controller Enable Register */ + #define REG_PIOB_KRCR (0x400E1124U) /**< \brief (PIOB) Keypad Controller Row Column Register */ + #define REG_PIOB_KDR (0x400E1128U) /**< \brief (PIOB) Keypad Controller Debouncing Register */ + #define REG_PIOB_KIER (0x400E1130U) /**< \brief (PIOB) Keypad Controller Interrupt Enable Register */ + #define REG_PIOB_KIDR (0x400E1134U) /**< \brief (PIOB) Keypad Controller Interrupt Disable Register */ + #define REG_PIOB_KIMR (0x400E1138U) /**< \brief (PIOB) Keypad Controller Interrupt Mask Register */ + #define REG_PIOB_KSR (0x400E113CU) /**< \brief (PIOB) Keypad Controller Status Register */ + #define REG_PIOB_KKPR (0x400E1140U) /**< \brief (PIOB) Keypad Controller Key Press Register */ + #define REG_PIOB_KKRR (0x400E1144U) /**< \brief (PIOB) Keypad Controller Key Release Register */ + #define REG_PIOB_PCMR (0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ + #define REG_PIOB_PCIER (0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ + #define REG_PIOB_PCIDR (0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ + #define REG_PIOB_PCIMR (0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ + #define REG_PIOB_PCISR (0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ + #define REG_PIOB_PCRHR (0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#else + #define REG_PIOB_PER (*(__O uint32_t*)0x400E1000U) /**< \brief (PIOB) PIO Enable Register */ + #define REG_PIOB_PDR (*(__O uint32_t*)0x400E1004U) /**< \brief (PIOB) PIO Disable Register */ + #define REG_PIOB_PSR (*(__I uint32_t*)0x400E1008U) /**< \brief (PIOB) PIO Status Register */ + #define REG_PIOB_OER (*(__O uint32_t*)0x400E1010U) /**< \brief (PIOB) Output Enable Register */ + #define REG_PIOB_ODR (*(__O uint32_t*)0x400E1014U) /**< \brief (PIOB) Output Disable Register */ + #define REG_PIOB_OSR (*(__I uint32_t*)0x400E1018U) /**< \brief (PIOB) Output Status Register */ + #define REG_PIOB_IFER (*(__O uint32_t*)0x400E1020U) /**< \brief (PIOB) Glitch Input Filter Enable Register */ + #define REG_PIOB_IFDR (*(__O uint32_t*)0x400E1024U) /**< \brief (PIOB) Glitch Input Filter Disable Register */ + #define REG_PIOB_IFSR (*(__I uint32_t*)0x400E1028U) /**< \brief (PIOB) Glitch Input Filter Status Register */ + #define REG_PIOB_SODR (*(__O uint32_t*)0x400E1030U) /**< \brief (PIOB) Set Output Data Register */ + #define REG_PIOB_CODR (*(__O uint32_t*)0x400E1034U) /**< \brief (PIOB) Clear Output Data Register */ + #define REG_PIOB_ODSR (*(__IO uint32_t*)0x400E1038U) /**< \brief (PIOB) Output Data Status Register */ + #define REG_PIOB_PDSR (*(__I uint32_t*)0x400E103CU) /**< \brief (PIOB) Pin Data Status Register */ + #define REG_PIOB_IER (*(__O uint32_t*)0x400E1040U) /**< \brief (PIOB) Interrupt Enable Register */ + #define REG_PIOB_IDR (*(__O uint32_t*)0x400E1044U) /**< \brief (PIOB) Interrupt Disable Register */ + #define REG_PIOB_IMR (*(__I uint32_t*)0x400E1048U) /**< \brief (PIOB) Interrupt Mask Register */ + #define REG_PIOB_ISR (*(__I uint32_t*)0x400E104CU) /**< \brief (PIOB) Interrupt Status Register */ + #define REG_PIOB_MDER (*(__O uint32_t*)0x400E1050U) /**< \brief (PIOB) Multi-driver Enable Register */ + #define REG_PIOB_MDDR (*(__O uint32_t*)0x400E1054U) /**< \brief (PIOB) Multi-driver Disable Register */ + #define REG_PIOB_MDSR (*(__I uint32_t*)0x400E1058U) /**< \brief (PIOB) Multi-driver Status Register */ + #define REG_PIOB_PUDR (*(__O uint32_t*)0x400E1060U) /**< \brief (PIOB) Pull-up Disable Register */ + #define REG_PIOB_PUER (*(__O uint32_t*)0x400E1064U) /**< \brief (PIOB) Pull-up Enable Register */ + #define REG_PIOB_PUSR (*(__I uint32_t*)0x400E1068U) /**< \brief (PIOB) Pad Pull-up Status Register */ + #define REG_PIOB_ABCDSR (*(__IO uint32_t*)0x400E1070U) /**< \brief (PIOB) Peripheral Select Register */ + #define REG_PIOB_IFSCDR (*(__O uint32_t*)0x400E1080U) /**< \brief (PIOB) Input Filter Slow Clock Disable Register */ + #define REG_PIOB_IFSCER (*(__O uint32_t*)0x400E1084U) /**< \brief (PIOB) Input Filter Slow Clock Enable Register */ + #define REG_PIOB_IFSCSR (*(__I uint32_t*)0x400E1088U) /**< \brief (PIOB) Input Filter Slow Clock Status Register */ + #define REG_PIOB_SCDR (*(__IO uint32_t*)0x400E108CU) /**< \brief (PIOB) Slow Clock Divider Debouncing Register */ + #define REG_PIOB_PPDDR (*(__O uint32_t*)0x400E1090U) /**< \brief (PIOB) Pad Pull-down Disable Register */ + #define REG_PIOB_PPDER (*(__O uint32_t*)0x400E1094U) /**< \brief (PIOB) Pad Pull-down Enable Register */ + #define REG_PIOB_PPDSR (*(__I uint32_t*)0x400E1098U) /**< \brief (PIOB) Pad Pull-down Status Register */ + #define REG_PIOB_OWER (*(__O uint32_t*)0x400E10A0U) /**< \brief (PIOB) Output Write Enable */ + #define REG_PIOB_OWDR (*(__O uint32_t*)0x400E10A4U) /**< \brief (PIOB) Output Write Disable */ + #define REG_PIOB_OWSR (*(__I uint32_t*)0x400E10A8U) /**< \brief (PIOB) Output Write Status Register */ + #define REG_PIOB_AIMER (*(__O uint32_t*)0x400E10B0U) /**< \brief (PIOB) Additional Interrupt Modes Enable Register */ + #define REG_PIOB_AIMDR (*(__O uint32_t*)0x400E10B4U) /**< \brief (PIOB) Additional Interrupt Modes Disable Register */ + #define REG_PIOB_AIMMR (*(__I uint32_t*)0x400E10B8U) /**< \brief (PIOB) Additional Interrupt Modes Mask Register */ + #define REG_PIOB_ESR (*(__O uint32_t*)0x400E10C0U) /**< \brief (PIOB) Edge Select Register */ + #define REG_PIOB_LSR (*(__O uint32_t*)0x400E10C4U) /**< \brief (PIOB) Level Select Register */ + #define REG_PIOB_ELSR (*(__I uint32_t*)0x400E10C8U) /**< \brief (PIOB) Edge/Level Status Register */ + #define REG_PIOB_FELLSR (*(__O uint32_t*)0x400E10D0U) /**< \brief (PIOB) Falling Edge/Low-Level Select Register */ + #define REG_PIOB_REHLSR (*(__O uint32_t*)0x400E10D4U) /**< \brief (PIOB) Rising Edge/High-Level Select Register */ + #define REG_PIOB_FRLHSR (*(__I uint32_t*)0x400E10D8U) /**< \brief (PIOB) Fall/Rise - Low/High Status Register */ + #define REG_PIOB_LOCKSR (*(__I uint32_t*)0x400E10E0U) /**< \brief (PIOB) Lock Status */ + #define REG_PIOB_WPMR (*(__IO uint32_t*)0x400E10E4U) /**< \brief (PIOB) Write Protection Mode Register */ + #define REG_PIOB_WPSR (*(__I uint32_t*)0x400E10E8U) /**< \brief (PIOB) Write Protection Status Register */ + #define REG_PIOB_VERSION (*(__I uint32_t*)0x400E10FCU) /**< \brief (PIOB) Version Register */ + #define REG_PIOB_SCHMITT (*(__IO uint32_t*)0x400E1100U) /**< \brief (PIOB) Schmitt Trigger Register */ + #define REG_PIOB_DRIVER (*(__IO uint32_t*)0x400E1118U) /**< \brief (PIOB) PIO I/O Drive Register */ + #define REG_PIOB_KER (*(__IO uint32_t*)0x400E1120U) /**< \brief (PIOB) Keypad Controller Enable Register */ + #define REG_PIOB_KRCR (*(__IO uint32_t*)0x400E1124U) /**< \brief (PIOB) Keypad Controller Row Column Register */ + #define REG_PIOB_KDR (*(__IO uint32_t*)0x400E1128U) /**< \brief (PIOB) Keypad Controller Debouncing Register */ + #define REG_PIOB_KIER (*(__O uint32_t*)0x400E1130U) /**< \brief (PIOB) Keypad Controller Interrupt Enable Register */ + #define REG_PIOB_KIDR (*(__O uint32_t*)0x400E1134U) /**< \brief (PIOB) Keypad Controller Interrupt Disable Register */ + #define REG_PIOB_KIMR (*(__I uint32_t*)0x400E1138U) /**< \brief (PIOB) Keypad Controller Interrupt Mask Register */ + #define REG_PIOB_KSR (*(__I uint32_t*)0x400E113CU) /**< \brief (PIOB) Keypad Controller Status Register */ + #define REG_PIOB_KKPR (*(__I uint32_t*)0x400E1140U) /**< \brief (PIOB) Keypad Controller Key Press Register */ + #define REG_PIOB_KKRR (*(__I uint32_t*)0x400E1144U) /**< \brief (PIOB) Keypad Controller Key Release Register */ + #define REG_PIOB_PCMR (*(__IO uint32_t*)0x400E1150U) /**< \brief (PIOB) Parallel Capture Mode Register */ + #define REG_PIOB_PCIER (*(__O uint32_t*)0x400E1154U) /**< \brief (PIOB) Parallel Capture Interrupt Enable Register */ + #define REG_PIOB_PCIDR (*(__O uint32_t*)0x400E1158U) /**< \brief (PIOB) Parallel Capture Interrupt Disable Register */ + #define REG_PIOB_PCIMR (*(__I uint32_t*)0x400E115CU) /**< \brief (PIOB) Parallel Capture Interrupt Mask Register */ + #define REG_PIOB_PCISR (*(__I uint32_t*)0x400E1160U) /**< \brief (PIOB) Parallel Capture Interrupt Status Register */ + #define REG_PIOB_PCRHR (*(__I uint32_t*)0x400E1164U) /**< \brief (PIOB) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PIOB_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h new file mode 100644 index 00000000..802bd831 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h @@ -0,0 +1,171 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PIOC_INSTANCE_ +#define _SAME70_PIOC_INSTANCE_ + +/* ========== Register definition for PIOC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PIOC_PER (0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ + #define REG_PIOC_PDR (0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ + #define REG_PIOC_PSR (0x400E1208U) /**< \brief (PIOC) PIO Status Register */ + #define REG_PIOC_OER (0x400E1210U) /**< \brief (PIOC) Output Enable Register */ + #define REG_PIOC_ODR (0x400E1214U) /**< \brief (PIOC) Output Disable Register */ + #define REG_PIOC_OSR (0x400E1218U) /**< \brief (PIOC) Output Status Register */ + #define REG_PIOC_IFER (0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ + #define REG_PIOC_IFDR (0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ + #define REG_PIOC_IFSR (0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ + #define REG_PIOC_SODR (0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ + #define REG_PIOC_CODR (0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ + #define REG_PIOC_ODSR (0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ + #define REG_PIOC_PDSR (0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ + #define REG_PIOC_IER (0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ + #define REG_PIOC_IDR (0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ + #define REG_PIOC_IMR (0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ + #define REG_PIOC_ISR (0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ + #define REG_PIOC_MDER (0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ + #define REG_PIOC_MDDR (0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ + #define REG_PIOC_MDSR (0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ + #define REG_PIOC_PUDR (0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ + #define REG_PIOC_PUER (0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ + #define REG_PIOC_PUSR (0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ + #define REG_PIOC_ABCDSR (0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ + #define REG_PIOC_IFSCDR (0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ + #define REG_PIOC_IFSCER (0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ + #define REG_PIOC_IFSCSR (0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ + #define REG_PIOC_SCDR (0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ + #define REG_PIOC_PPDDR (0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ + #define REG_PIOC_PPDER (0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ + #define REG_PIOC_PPDSR (0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ + #define REG_PIOC_OWER (0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ + #define REG_PIOC_OWDR (0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ + #define REG_PIOC_OWSR (0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ + #define REG_PIOC_AIMER (0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ + #define REG_PIOC_AIMDR (0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disable Register */ + #define REG_PIOC_AIMMR (0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ + #define REG_PIOC_ESR (0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ + #define REG_PIOC_LSR (0x400E12C4U) /**< \brief (PIOC) Level Select Register */ + #define REG_PIOC_ELSR (0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ + #define REG_PIOC_FELLSR (0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low-Level Select Register */ + #define REG_PIOC_REHLSR (0x400E12D4U) /**< \brief (PIOC) Rising Edge/High-Level Select Register */ + #define REG_PIOC_FRLHSR (0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ + #define REG_PIOC_LOCKSR (0x400E12E0U) /**< \brief (PIOC) Lock Status */ + #define REG_PIOC_WPMR (0x400E12E4U) /**< \brief (PIOC) Write Protection Mode Register */ + #define REG_PIOC_WPSR (0x400E12E8U) /**< \brief (PIOC) Write Protection Status Register */ + #define REG_PIOC_VERSION (0x400E12FCU) /**< \brief (PIOC) Version Register */ + #define REG_PIOC_SCHMITT (0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ + #define REG_PIOC_DRIVER (0x400E1318U) /**< \brief (PIOC) PIO I/O Drive Register */ + #define REG_PIOC_KER (0x400E1320U) /**< \brief (PIOC) Keypad Controller Enable Register */ + #define REG_PIOC_KRCR (0x400E1324U) /**< \brief (PIOC) Keypad Controller Row Column Register */ + #define REG_PIOC_KDR (0x400E1328U) /**< \brief (PIOC) Keypad Controller Debouncing Register */ + #define REG_PIOC_KIER (0x400E1330U) /**< \brief (PIOC) Keypad Controller Interrupt Enable Register */ + #define REG_PIOC_KIDR (0x400E1334U) /**< \brief (PIOC) Keypad Controller Interrupt Disable Register */ + #define REG_PIOC_KIMR (0x400E1338U) /**< \brief (PIOC) Keypad Controller Interrupt Mask Register */ + #define REG_PIOC_KSR (0x400E133CU) /**< \brief (PIOC) Keypad Controller Status Register */ + #define REG_PIOC_KKPR (0x400E1340U) /**< \brief (PIOC) Keypad Controller Key Press Register */ + #define REG_PIOC_KKRR (0x400E1344U) /**< \brief (PIOC) Keypad Controller Key Release Register */ + #define REG_PIOC_PCMR (0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ + #define REG_PIOC_PCIER (0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ + #define REG_PIOC_PCIDR (0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ + #define REG_PIOC_PCIMR (0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ + #define REG_PIOC_PCISR (0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ + #define REG_PIOC_PCRHR (0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#else + #define REG_PIOC_PER (*(__O uint32_t*)0x400E1200U) /**< \brief (PIOC) PIO Enable Register */ + #define REG_PIOC_PDR (*(__O uint32_t*)0x400E1204U) /**< \brief (PIOC) PIO Disable Register */ + #define REG_PIOC_PSR (*(__I uint32_t*)0x400E1208U) /**< \brief (PIOC) PIO Status Register */ + #define REG_PIOC_OER (*(__O uint32_t*)0x400E1210U) /**< \brief (PIOC) Output Enable Register */ + #define REG_PIOC_ODR (*(__O uint32_t*)0x400E1214U) /**< \brief (PIOC) Output Disable Register */ + #define REG_PIOC_OSR (*(__I uint32_t*)0x400E1218U) /**< \brief (PIOC) Output Status Register */ + #define REG_PIOC_IFER (*(__O uint32_t*)0x400E1220U) /**< \brief (PIOC) Glitch Input Filter Enable Register */ + #define REG_PIOC_IFDR (*(__O uint32_t*)0x400E1224U) /**< \brief (PIOC) Glitch Input Filter Disable Register */ + #define REG_PIOC_IFSR (*(__I uint32_t*)0x400E1228U) /**< \brief (PIOC) Glitch Input Filter Status Register */ + #define REG_PIOC_SODR (*(__O uint32_t*)0x400E1230U) /**< \brief (PIOC) Set Output Data Register */ + #define REG_PIOC_CODR (*(__O uint32_t*)0x400E1234U) /**< \brief (PIOC) Clear Output Data Register */ + #define REG_PIOC_ODSR (*(__IO uint32_t*)0x400E1238U) /**< \brief (PIOC) Output Data Status Register */ + #define REG_PIOC_PDSR (*(__I uint32_t*)0x400E123CU) /**< \brief (PIOC) Pin Data Status Register */ + #define REG_PIOC_IER (*(__O uint32_t*)0x400E1240U) /**< \brief (PIOC) Interrupt Enable Register */ + #define REG_PIOC_IDR (*(__O uint32_t*)0x400E1244U) /**< \brief (PIOC) Interrupt Disable Register */ + #define REG_PIOC_IMR (*(__I uint32_t*)0x400E1248U) /**< \brief (PIOC) Interrupt Mask Register */ + #define REG_PIOC_ISR (*(__I uint32_t*)0x400E124CU) /**< \brief (PIOC) Interrupt Status Register */ + #define REG_PIOC_MDER (*(__O uint32_t*)0x400E1250U) /**< \brief (PIOC) Multi-driver Enable Register */ + #define REG_PIOC_MDDR (*(__O uint32_t*)0x400E1254U) /**< \brief (PIOC) Multi-driver Disable Register */ + #define REG_PIOC_MDSR (*(__I uint32_t*)0x400E1258U) /**< \brief (PIOC) Multi-driver Status Register */ + #define REG_PIOC_PUDR (*(__O uint32_t*)0x400E1260U) /**< \brief (PIOC) Pull-up Disable Register */ + #define REG_PIOC_PUER (*(__O uint32_t*)0x400E1264U) /**< \brief (PIOC) Pull-up Enable Register */ + #define REG_PIOC_PUSR (*(__I uint32_t*)0x400E1268U) /**< \brief (PIOC) Pad Pull-up Status Register */ + #define REG_PIOC_ABCDSR (*(__IO uint32_t*)0x400E1270U) /**< \brief (PIOC) Peripheral Select Register */ + #define REG_PIOC_IFSCDR (*(__O uint32_t*)0x400E1280U) /**< \brief (PIOC) Input Filter Slow Clock Disable Register */ + #define REG_PIOC_IFSCER (*(__O uint32_t*)0x400E1284U) /**< \brief (PIOC) Input Filter Slow Clock Enable Register */ + #define REG_PIOC_IFSCSR (*(__I uint32_t*)0x400E1288U) /**< \brief (PIOC) Input Filter Slow Clock Status Register */ + #define REG_PIOC_SCDR (*(__IO uint32_t*)0x400E128CU) /**< \brief (PIOC) Slow Clock Divider Debouncing Register */ + #define REG_PIOC_PPDDR (*(__O uint32_t*)0x400E1290U) /**< \brief (PIOC) Pad Pull-down Disable Register */ + #define REG_PIOC_PPDER (*(__O uint32_t*)0x400E1294U) /**< \brief (PIOC) Pad Pull-down Enable Register */ + #define REG_PIOC_PPDSR (*(__I uint32_t*)0x400E1298U) /**< \brief (PIOC) Pad Pull-down Status Register */ + #define REG_PIOC_OWER (*(__O uint32_t*)0x400E12A0U) /**< \brief (PIOC) Output Write Enable */ + #define REG_PIOC_OWDR (*(__O uint32_t*)0x400E12A4U) /**< \brief (PIOC) Output Write Disable */ + #define REG_PIOC_OWSR (*(__I uint32_t*)0x400E12A8U) /**< \brief (PIOC) Output Write Status Register */ + #define REG_PIOC_AIMER (*(__O uint32_t*)0x400E12B0U) /**< \brief (PIOC) Additional Interrupt Modes Enable Register */ + #define REG_PIOC_AIMDR (*(__O uint32_t*)0x400E12B4U) /**< \brief (PIOC) Additional Interrupt Modes Disable Register */ + #define REG_PIOC_AIMMR (*(__I uint32_t*)0x400E12B8U) /**< \brief (PIOC) Additional Interrupt Modes Mask Register */ + #define REG_PIOC_ESR (*(__O uint32_t*)0x400E12C0U) /**< \brief (PIOC) Edge Select Register */ + #define REG_PIOC_LSR (*(__O uint32_t*)0x400E12C4U) /**< \brief (PIOC) Level Select Register */ + #define REG_PIOC_ELSR (*(__I uint32_t*)0x400E12C8U) /**< \brief (PIOC) Edge/Level Status Register */ + #define REG_PIOC_FELLSR (*(__O uint32_t*)0x400E12D0U) /**< \brief (PIOC) Falling Edge/Low-Level Select Register */ + #define REG_PIOC_REHLSR (*(__O uint32_t*)0x400E12D4U) /**< \brief (PIOC) Rising Edge/High-Level Select Register */ + #define REG_PIOC_FRLHSR (*(__I uint32_t*)0x400E12D8U) /**< \brief (PIOC) Fall/Rise - Low/High Status Register */ + #define REG_PIOC_LOCKSR (*(__I uint32_t*)0x400E12E0U) /**< \brief (PIOC) Lock Status */ + #define REG_PIOC_WPMR (*(__IO uint32_t*)0x400E12E4U) /**< \brief (PIOC) Write Protection Mode Register */ + #define REG_PIOC_WPSR (*(__I uint32_t*)0x400E12E8U) /**< \brief (PIOC) Write Protection Status Register */ + #define REG_PIOC_VERSION (*(__I uint32_t*)0x400E12FCU) /**< \brief (PIOC) Version Register */ + #define REG_PIOC_SCHMITT (*(__IO uint32_t*)0x400E1300U) /**< \brief (PIOC) Schmitt Trigger Register */ + #define REG_PIOC_DRIVER (*(__IO uint32_t*)0x400E1318U) /**< \brief (PIOC) PIO I/O Drive Register */ + #define REG_PIOC_KER (*(__IO uint32_t*)0x400E1320U) /**< \brief (PIOC) Keypad Controller Enable Register */ + #define REG_PIOC_KRCR (*(__IO uint32_t*)0x400E1324U) /**< \brief (PIOC) Keypad Controller Row Column Register */ + #define REG_PIOC_KDR (*(__IO uint32_t*)0x400E1328U) /**< \brief (PIOC) Keypad Controller Debouncing Register */ + #define REG_PIOC_KIER (*(__O uint32_t*)0x400E1330U) /**< \brief (PIOC) Keypad Controller Interrupt Enable Register */ + #define REG_PIOC_KIDR (*(__O uint32_t*)0x400E1334U) /**< \brief (PIOC) Keypad Controller Interrupt Disable Register */ + #define REG_PIOC_KIMR (*(__I uint32_t*)0x400E1338U) /**< \brief (PIOC) Keypad Controller Interrupt Mask Register */ + #define REG_PIOC_KSR (*(__I uint32_t*)0x400E133CU) /**< \brief (PIOC) Keypad Controller Status Register */ + #define REG_PIOC_KKPR (*(__I uint32_t*)0x400E1340U) /**< \brief (PIOC) Keypad Controller Key Press Register */ + #define REG_PIOC_KKRR (*(__I uint32_t*)0x400E1344U) /**< \brief (PIOC) Keypad Controller Key Release Register */ + #define REG_PIOC_PCMR (*(__IO uint32_t*)0x400E1350U) /**< \brief (PIOC) Parallel Capture Mode Register */ + #define REG_PIOC_PCIER (*(__O uint32_t*)0x400E1354U) /**< \brief (PIOC) Parallel Capture Interrupt Enable Register */ + #define REG_PIOC_PCIDR (*(__O uint32_t*)0x400E1358U) /**< \brief (PIOC) Parallel Capture Interrupt Disable Register */ + #define REG_PIOC_PCIMR (*(__I uint32_t*)0x400E135CU) /**< \brief (PIOC) Parallel Capture Interrupt Mask Register */ + #define REG_PIOC_PCISR (*(__I uint32_t*)0x400E1360U) /**< \brief (PIOC) Parallel Capture Interrupt Status Register */ + #define REG_PIOC_PCRHR (*(__I uint32_t*)0x400E1364U) /**< \brief (PIOC) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PIOC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h new file mode 100644 index 00000000..850bcf04 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h @@ -0,0 +1,171 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PIOD_INSTANCE_ +#define _SAME70_PIOD_INSTANCE_ + +/* ========== Register definition for PIOD peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PIOD_PER (0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ + #define REG_PIOD_PDR (0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ + #define REG_PIOD_PSR (0x400E1408U) /**< \brief (PIOD) PIO Status Register */ + #define REG_PIOD_OER (0x400E1410U) /**< \brief (PIOD) Output Enable Register */ + #define REG_PIOD_ODR (0x400E1414U) /**< \brief (PIOD) Output Disable Register */ + #define REG_PIOD_OSR (0x400E1418U) /**< \brief (PIOD) Output Status Register */ + #define REG_PIOD_IFER (0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ + #define REG_PIOD_IFDR (0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ + #define REG_PIOD_IFSR (0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ + #define REG_PIOD_SODR (0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ + #define REG_PIOD_CODR (0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ + #define REG_PIOD_ODSR (0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ + #define REG_PIOD_PDSR (0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ + #define REG_PIOD_IER (0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ + #define REG_PIOD_IDR (0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ + #define REG_PIOD_IMR (0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ + #define REG_PIOD_ISR (0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ + #define REG_PIOD_MDER (0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ + #define REG_PIOD_MDDR (0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ + #define REG_PIOD_MDSR (0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ + #define REG_PIOD_PUDR (0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ + #define REG_PIOD_PUER (0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ + #define REG_PIOD_PUSR (0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ + #define REG_PIOD_ABCDSR (0x400E1470U) /**< \brief (PIOD) Peripheral Select Register */ + #define REG_PIOD_IFSCDR (0x400E1480U) /**< \brief (PIOD) Input Filter Slow Clock Disable Register */ + #define REG_PIOD_IFSCER (0x400E1484U) /**< \brief (PIOD) Input Filter Slow Clock Enable Register */ + #define REG_PIOD_IFSCSR (0x400E1488U) /**< \brief (PIOD) Input Filter Slow Clock Status Register */ + #define REG_PIOD_SCDR (0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ + #define REG_PIOD_PPDDR (0x400E1490U) /**< \brief (PIOD) Pad Pull-down Disable Register */ + #define REG_PIOD_PPDER (0x400E1494U) /**< \brief (PIOD) Pad Pull-down Enable Register */ + #define REG_PIOD_PPDSR (0x400E1498U) /**< \brief (PIOD) Pad Pull-down Status Register */ + #define REG_PIOD_OWER (0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ + #define REG_PIOD_OWDR (0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ + #define REG_PIOD_OWSR (0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ + #define REG_PIOD_AIMER (0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ + #define REG_PIOD_AIMDR (0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disable Register */ + #define REG_PIOD_AIMMR (0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ + #define REG_PIOD_ESR (0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ + #define REG_PIOD_LSR (0x400E14C4U) /**< \brief (PIOD) Level Select Register */ + #define REG_PIOD_ELSR (0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ + #define REG_PIOD_FELLSR (0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low-Level Select Register */ + #define REG_PIOD_REHLSR (0x400E14D4U) /**< \brief (PIOD) Rising Edge/High-Level Select Register */ + #define REG_PIOD_FRLHSR (0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ + #define REG_PIOD_LOCKSR (0x400E14E0U) /**< \brief (PIOD) Lock Status */ + #define REG_PIOD_WPMR (0x400E14E4U) /**< \brief (PIOD) Write Protection Mode Register */ + #define REG_PIOD_WPSR (0x400E14E8U) /**< \brief (PIOD) Write Protection Status Register */ + #define REG_PIOD_VERSION (0x400E14FCU) /**< \brief (PIOD) Version Register */ + #define REG_PIOD_SCHMITT (0x400E1500U) /**< \brief (PIOD) Schmitt Trigger Register */ + #define REG_PIOD_DRIVER (0x400E1518U) /**< \brief (PIOD) PIO I/O Drive Register */ + #define REG_PIOD_KER (0x400E1520U) /**< \brief (PIOD) Keypad Controller Enable Register */ + #define REG_PIOD_KRCR (0x400E1524U) /**< \brief (PIOD) Keypad Controller Row Column Register */ + #define REG_PIOD_KDR (0x400E1528U) /**< \brief (PIOD) Keypad Controller Debouncing Register */ + #define REG_PIOD_KIER (0x400E1530U) /**< \brief (PIOD) Keypad Controller Interrupt Enable Register */ + #define REG_PIOD_KIDR (0x400E1534U) /**< \brief (PIOD) Keypad Controller Interrupt Disable Register */ + #define REG_PIOD_KIMR (0x400E1538U) /**< \brief (PIOD) Keypad Controller Interrupt Mask Register */ + #define REG_PIOD_KSR (0x400E153CU) /**< \brief (PIOD) Keypad Controller Status Register */ + #define REG_PIOD_KKPR (0x400E1540U) /**< \brief (PIOD) Keypad Controller Key Press Register */ + #define REG_PIOD_KKRR (0x400E1544U) /**< \brief (PIOD) Keypad Controller Key Release Register */ + #define REG_PIOD_PCMR (0x400E1550U) /**< \brief (PIOD) Parallel Capture Mode Register */ + #define REG_PIOD_PCIER (0x400E1554U) /**< \brief (PIOD) Parallel Capture Interrupt Enable Register */ + #define REG_PIOD_PCIDR (0x400E1558U) /**< \brief (PIOD) Parallel Capture Interrupt Disable Register */ + #define REG_PIOD_PCIMR (0x400E155CU) /**< \brief (PIOD) Parallel Capture Interrupt Mask Register */ + #define REG_PIOD_PCISR (0x400E1560U) /**< \brief (PIOD) Parallel Capture Interrupt Status Register */ + #define REG_PIOD_PCRHR (0x400E1564U) /**< \brief (PIOD) Parallel Capture Reception Holding Register */ +#else + #define REG_PIOD_PER (*(__O uint32_t*)0x400E1400U) /**< \brief (PIOD) PIO Enable Register */ + #define REG_PIOD_PDR (*(__O uint32_t*)0x400E1404U) /**< \brief (PIOD) PIO Disable Register */ + #define REG_PIOD_PSR (*(__I uint32_t*)0x400E1408U) /**< \brief (PIOD) PIO Status Register */ + #define REG_PIOD_OER (*(__O uint32_t*)0x400E1410U) /**< \brief (PIOD) Output Enable Register */ + #define REG_PIOD_ODR (*(__O uint32_t*)0x400E1414U) /**< \brief (PIOD) Output Disable Register */ + #define REG_PIOD_OSR (*(__I uint32_t*)0x400E1418U) /**< \brief (PIOD) Output Status Register */ + #define REG_PIOD_IFER (*(__O uint32_t*)0x400E1420U) /**< \brief (PIOD) Glitch Input Filter Enable Register */ + #define REG_PIOD_IFDR (*(__O uint32_t*)0x400E1424U) /**< \brief (PIOD) Glitch Input Filter Disable Register */ + #define REG_PIOD_IFSR (*(__I uint32_t*)0x400E1428U) /**< \brief (PIOD) Glitch Input Filter Status Register */ + #define REG_PIOD_SODR (*(__O uint32_t*)0x400E1430U) /**< \brief (PIOD) Set Output Data Register */ + #define REG_PIOD_CODR (*(__O uint32_t*)0x400E1434U) /**< \brief (PIOD) Clear Output Data Register */ + #define REG_PIOD_ODSR (*(__IO uint32_t*)0x400E1438U) /**< \brief (PIOD) Output Data Status Register */ + #define REG_PIOD_PDSR (*(__I uint32_t*)0x400E143CU) /**< \brief (PIOD) Pin Data Status Register */ + #define REG_PIOD_IER (*(__O uint32_t*)0x400E1440U) /**< \brief (PIOD) Interrupt Enable Register */ + #define REG_PIOD_IDR (*(__O uint32_t*)0x400E1444U) /**< \brief (PIOD) Interrupt Disable Register */ + #define REG_PIOD_IMR (*(__I uint32_t*)0x400E1448U) /**< \brief (PIOD) Interrupt Mask Register */ + #define REG_PIOD_ISR (*(__I uint32_t*)0x400E144CU) /**< \brief (PIOD) Interrupt Status Register */ + #define REG_PIOD_MDER (*(__O uint32_t*)0x400E1450U) /**< \brief (PIOD) Multi-driver Enable Register */ + #define REG_PIOD_MDDR (*(__O uint32_t*)0x400E1454U) /**< \brief (PIOD) Multi-driver Disable Register */ + #define REG_PIOD_MDSR (*(__I uint32_t*)0x400E1458U) /**< \brief (PIOD) Multi-driver Status Register */ + #define REG_PIOD_PUDR (*(__O uint32_t*)0x400E1460U) /**< \brief (PIOD) Pull-up Disable Register */ + #define REG_PIOD_PUER (*(__O uint32_t*)0x400E1464U) /**< \brief (PIOD) Pull-up Enable Register */ + #define REG_PIOD_PUSR (*(__I uint32_t*)0x400E1468U) /**< \brief (PIOD) Pad Pull-up Status Register */ + #define REG_PIOD_ABCDSR (*(__IO uint32_t*)0x400E1470U) /**< \brief (PIOD) Peripheral Select Register */ + #define REG_PIOD_IFSCDR (*(__O uint32_t*)0x400E1480U) /**< \brief (PIOD) Input Filter Slow Clock Disable Register */ + #define REG_PIOD_IFSCER (*(__O uint32_t*)0x400E1484U) /**< \brief (PIOD) Input Filter Slow Clock Enable Register */ + #define REG_PIOD_IFSCSR (*(__I uint32_t*)0x400E1488U) /**< \brief (PIOD) Input Filter Slow Clock Status Register */ + #define REG_PIOD_SCDR (*(__IO uint32_t*)0x400E148CU) /**< \brief (PIOD) Slow Clock Divider Debouncing Register */ + #define REG_PIOD_PPDDR (*(__O uint32_t*)0x400E1490U) /**< \brief (PIOD) Pad Pull-down Disable Register */ + #define REG_PIOD_PPDER (*(__O uint32_t*)0x400E1494U) /**< \brief (PIOD) Pad Pull-down Enable Register */ + #define REG_PIOD_PPDSR (*(__I uint32_t*)0x400E1498U) /**< \brief (PIOD) Pad Pull-down Status Register */ + #define REG_PIOD_OWER (*(__O uint32_t*)0x400E14A0U) /**< \brief (PIOD) Output Write Enable */ + #define REG_PIOD_OWDR (*(__O uint32_t*)0x400E14A4U) /**< \brief (PIOD) Output Write Disable */ + #define REG_PIOD_OWSR (*(__I uint32_t*)0x400E14A8U) /**< \brief (PIOD) Output Write Status Register */ + #define REG_PIOD_AIMER (*(__O uint32_t*)0x400E14B0U) /**< \brief (PIOD) Additional Interrupt Modes Enable Register */ + #define REG_PIOD_AIMDR (*(__O uint32_t*)0x400E14B4U) /**< \brief (PIOD) Additional Interrupt Modes Disable Register */ + #define REG_PIOD_AIMMR (*(__I uint32_t*)0x400E14B8U) /**< \brief (PIOD) Additional Interrupt Modes Mask Register */ + #define REG_PIOD_ESR (*(__O uint32_t*)0x400E14C0U) /**< \brief (PIOD) Edge Select Register */ + #define REG_PIOD_LSR (*(__O uint32_t*)0x400E14C4U) /**< \brief (PIOD) Level Select Register */ + #define REG_PIOD_ELSR (*(__I uint32_t*)0x400E14C8U) /**< \brief (PIOD) Edge/Level Status Register */ + #define REG_PIOD_FELLSR (*(__O uint32_t*)0x400E14D0U) /**< \brief (PIOD) Falling Edge/Low-Level Select Register */ + #define REG_PIOD_REHLSR (*(__O uint32_t*)0x400E14D4U) /**< \brief (PIOD) Rising Edge/High-Level Select Register */ + #define REG_PIOD_FRLHSR (*(__I uint32_t*)0x400E14D8U) /**< \brief (PIOD) Fall/Rise - Low/High Status Register */ + #define REG_PIOD_LOCKSR (*(__I uint32_t*)0x400E14E0U) /**< \brief (PIOD) Lock Status */ + #define REG_PIOD_WPMR (*(__IO uint32_t*)0x400E14E4U) /**< \brief (PIOD) Write Protection Mode Register */ + #define REG_PIOD_WPSR (*(__I uint32_t*)0x400E14E8U) /**< \brief (PIOD) Write Protection Status Register */ + #define REG_PIOD_VERSION (*(__I uint32_t*)0x400E14FCU) /**< \brief (PIOD) Version Register */ + #define REG_PIOD_SCHMITT (*(__IO uint32_t*)0x400E1500U) /**< \brief (PIOD) Schmitt Trigger Register */ + #define REG_PIOD_DRIVER (*(__IO uint32_t*)0x400E1518U) /**< \brief (PIOD) PIO I/O Drive Register */ + #define REG_PIOD_KER (*(__IO uint32_t*)0x400E1520U) /**< \brief (PIOD) Keypad Controller Enable Register */ + #define REG_PIOD_KRCR (*(__IO uint32_t*)0x400E1524U) /**< \brief (PIOD) Keypad Controller Row Column Register */ + #define REG_PIOD_KDR (*(__IO uint32_t*)0x400E1528U) /**< \brief (PIOD) Keypad Controller Debouncing Register */ + #define REG_PIOD_KIER (*(__O uint32_t*)0x400E1530U) /**< \brief (PIOD) Keypad Controller Interrupt Enable Register */ + #define REG_PIOD_KIDR (*(__O uint32_t*)0x400E1534U) /**< \brief (PIOD) Keypad Controller Interrupt Disable Register */ + #define REG_PIOD_KIMR (*(__I uint32_t*)0x400E1538U) /**< \brief (PIOD) Keypad Controller Interrupt Mask Register */ + #define REG_PIOD_KSR (*(__I uint32_t*)0x400E153CU) /**< \brief (PIOD) Keypad Controller Status Register */ + #define REG_PIOD_KKPR (*(__I uint32_t*)0x400E1540U) /**< \brief (PIOD) Keypad Controller Key Press Register */ + #define REG_PIOD_KKRR (*(__I uint32_t*)0x400E1544U) /**< \brief (PIOD) Keypad Controller Key Release Register */ + #define REG_PIOD_PCMR (*(__IO uint32_t*)0x400E1550U) /**< \brief (PIOD) Parallel Capture Mode Register */ + #define REG_PIOD_PCIER (*(__O uint32_t*)0x400E1554U) /**< \brief (PIOD) Parallel Capture Interrupt Enable Register */ + #define REG_PIOD_PCIDR (*(__O uint32_t*)0x400E1558U) /**< \brief (PIOD) Parallel Capture Interrupt Disable Register */ + #define REG_PIOD_PCIMR (*(__I uint32_t*)0x400E155CU) /**< \brief (PIOD) Parallel Capture Interrupt Mask Register */ + #define REG_PIOD_PCISR (*(__I uint32_t*)0x400E1560U) /**< \brief (PIOD) Parallel Capture Interrupt Status Register */ + #define REG_PIOD_PCRHR (*(__I uint32_t*)0x400E1564U) /**< \brief (PIOD) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PIOD_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h new file mode 100644 index 00000000..5291dac7 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h @@ -0,0 +1,171 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PIOE_INSTANCE_ +#define _SAME70_PIOE_INSTANCE_ + +/* ========== Register definition for PIOE peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PIOE_PER (0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ + #define REG_PIOE_PDR (0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ + #define REG_PIOE_PSR (0x400E1608U) /**< \brief (PIOE) PIO Status Register */ + #define REG_PIOE_OER (0x400E1610U) /**< \brief (PIOE) Output Enable Register */ + #define REG_PIOE_ODR (0x400E1614U) /**< \brief (PIOE) Output Disable Register */ + #define REG_PIOE_OSR (0x400E1618U) /**< \brief (PIOE) Output Status Register */ + #define REG_PIOE_IFER (0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ + #define REG_PIOE_IFDR (0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ + #define REG_PIOE_IFSR (0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ + #define REG_PIOE_SODR (0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ + #define REG_PIOE_CODR (0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ + #define REG_PIOE_ODSR (0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ + #define REG_PIOE_PDSR (0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ + #define REG_PIOE_IER (0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ + #define REG_PIOE_IDR (0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ + #define REG_PIOE_IMR (0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ + #define REG_PIOE_ISR (0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ + #define REG_PIOE_MDER (0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ + #define REG_PIOE_MDDR (0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ + #define REG_PIOE_MDSR (0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ + #define REG_PIOE_PUDR (0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ + #define REG_PIOE_PUER (0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ + #define REG_PIOE_PUSR (0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ + #define REG_PIOE_ABCDSR (0x400E1670U) /**< \brief (PIOE) Peripheral Select Register */ + #define REG_PIOE_IFSCDR (0x400E1680U) /**< \brief (PIOE) Input Filter Slow Clock Disable Register */ + #define REG_PIOE_IFSCER (0x400E1684U) /**< \brief (PIOE) Input Filter Slow Clock Enable Register */ + #define REG_PIOE_IFSCSR (0x400E1688U) /**< \brief (PIOE) Input Filter Slow Clock Status Register */ + #define REG_PIOE_SCDR (0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ + #define REG_PIOE_PPDDR (0x400E1690U) /**< \brief (PIOE) Pad Pull-down Disable Register */ + #define REG_PIOE_PPDER (0x400E1694U) /**< \brief (PIOE) Pad Pull-down Enable Register */ + #define REG_PIOE_PPDSR (0x400E1698U) /**< \brief (PIOE) Pad Pull-down Status Register */ + #define REG_PIOE_OWER (0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ + #define REG_PIOE_OWDR (0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ + #define REG_PIOE_OWSR (0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ + #define REG_PIOE_AIMER (0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ + #define REG_PIOE_AIMDR (0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disable Register */ + #define REG_PIOE_AIMMR (0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ + #define REG_PIOE_ESR (0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ + #define REG_PIOE_LSR (0x400E16C4U) /**< \brief (PIOE) Level Select Register */ + #define REG_PIOE_ELSR (0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ + #define REG_PIOE_FELLSR (0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low-Level Select Register */ + #define REG_PIOE_REHLSR (0x400E16D4U) /**< \brief (PIOE) Rising Edge/High-Level Select Register */ + #define REG_PIOE_FRLHSR (0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ + #define REG_PIOE_LOCKSR (0x400E16E0U) /**< \brief (PIOE) Lock Status */ + #define REG_PIOE_WPMR (0x400E16E4U) /**< \brief (PIOE) Write Protection Mode Register */ + #define REG_PIOE_WPSR (0x400E16E8U) /**< \brief (PIOE) Write Protection Status Register */ + #define REG_PIOE_VERSION (0x400E16FCU) /**< \brief (PIOE) Version Register */ + #define REG_PIOE_SCHMITT (0x400E1700U) /**< \brief (PIOE) Schmitt Trigger Register */ + #define REG_PIOE_DRIVER (0x400E1718U) /**< \brief (PIOE) PIO I/O Drive Register */ + #define REG_PIOE_KER (0x400E1720U) /**< \brief (PIOE) Keypad Controller Enable Register */ + #define REG_PIOE_KRCR (0x400E1724U) /**< \brief (PIOE) Keypad Controller Row Column Register */ + #define REG_PIOE_KDR (0x400E1728U) /**< \brief (PIOE) Keypad Controller Debouncing Register */ + #define REG_PIOE_KIER (0x400E1730U) /**< \brief (PIOE) Keypad Controller Interrupt Enable Register */ + #define REG_PIOE_KIDR (0x400E1734U) /**< \brief (PIOE) Keypad Controller Interrupt Disable Register */ + #define REG_PIOE_KIMR (0x400E1738U) /**< \brief (PIOE) Keypad Controller Interrupt Mask Register */ + #define REG_PIOE_KSR (0x400E173CU) /**< \brief (PIOE) Keypad Controller Status Register */ + #define REG_PIOE_KKPR (0x400E1740U) /**< \brief (PIOE) Keypad Controller Key Press Register */ + #define REG_PIOE_KKRR (0x400E1744U) /**< \brief (PIOE) Keypad Controller Key Release Register */ + #define REG_PIOE_PCMR (0x400E1750U) /**< \brief (PIOE) Parallel Capture Mode Register */ + #define REG_PIOE_PCIER (0x400E1754U) /**< \brief (PIOE) Parallel Capture Interrupt Enable Register */ + #define REG_PIOE_PCIDR (0x400E1758U) /**< \brief (PIOE) Parallel Capture Interrupt Disable Register */ + #define REG_PIOE_PCIMR (0x400E175CU) /**< \brief (PIOE) Parallel Capture Interrupt Mask Register */ + #define REG_PIOE_PCISR (0x400E1760U) /**< \brief (PIOE) Parallel Capture Interrupt Status Register */ + #define REG_PIOE_PCRHR (0x400E1764U) /**< \brief (PIOE) Parallel Capture Reception Holding Register */ +#else + #define REG_PIOE_PER (*(__O uint32_t*)0x400E1600U) /**< \brief (PIOE) PIO Enable Register */ + #define REG_PIOE_PDR (*(__O uint32_t*)0x400E1604U) /**< \brief (PIOE) PIO Disable Register */ + #define REG_PIOE_PSR (*(__I uint32_t*)0x400E1608U) /**< \brief (PIOE) PIO Status Register */ + #define REG_PIOE_OER (*(__O uint32_t*)0x400E1610U) /**< \brief (PIOE) Output Enable Register */ + #define REG_PIOE_ODR (*(__O uint32_t*)0x400E1614U) /**< \brief (PIOE) Output Disable Register */ + #define REG_PIOE_OSR (*(__I uint32_t*)0x400E1618U) /**< \brief (PIOE) Output Status Register */ + #define REG_PIOE_IFER (*(__O uint32_t*)0x400E1620U) /**< \brief (PIOE) Glitch Input Filter Enable Register */ + #define REG_PIOE_IFDR (*(__O uint32_t*)0x400E1624U) /**< \brief (PIOE) Glitch Input Filter Disable Register */ + #define REG_PIOE_IFSR (*(__I uint32_t*)0x400E1628U) /**< \brief (PIOE) Glitch Input Filter Status Register */ + #define REG_PIOE_SODR (*(__O uint32_t*)0x400E1630U) /**< \brief (PIOE) Set Output Data Register */ + #define REG_PIOE_CODR (*(__O uint32_t*)0x400E1634U) /**< \brief (PIOE) Clear Output Data Register */ + #define REG_PIOE_ODSR (*(__IO uint32_t*)0x400E1638U) /**< \brief (PIOE) Output Data Status Register */ + #define REG_PIOE_PDSR (*(__I uint32_t*)0x400E163CU) /**< \brief (PIOE) Pin Data Status Register */ + #define REG_PIOE_IER (*(__O uint32_t*)0x400E1640U) /**< \brief (PIOE) Interrupt Enable Register */ + #define REG_PIOE_IDR (*(__O uint32_t*)0x400E1644U) /**< \brief (PIOE) Interrupt Disable Register */ + #define REG_PIOE_IMR (*(__I uint32_t*)0x400E1648U) /**< \brief (PIOE) Interrupt Mask Register */ + #define REG_PIOE_ISR (*(__I uint32_t*)0x400E164CU) /**< \brief (PIOE) Interrupt Status Register */ + #define REG_PIOE_MDER (*(__O uint32_t*)0x400E1650U) /**< \brief (PIOE) Multi-driver Enable Register */ + #define REG_PIOE_MDDR (*(__O uint32_t*)0x400E1654U) /**< \brief (PIOE) Multi-driver Disable Register */ + #define REG_PIOE_MDSR (*(__I uint32_t*)0x400E1658U) /**< \brief (PIOE) Multi-driver Status Register */ + #define REG_PIOE_PUDR (*(__O uint32_t*)0x400E1660U) /**< \brief (PIOE) Pull-up Disable Register */ + #define REG_PIOE_PUER (*(__O uint32_t*)0x400E1664U) /**< \brief (PIOE) Pull-up Enable Register */ + #define REG_PIOE_PUSR (*(__I uint32_t*)0x400E1668U) /**< \brief (PIOE) Pad Pull-up Status Register */ + #define REG_PIOE_ABCDSR (*(__IO uint32_t*)0x400E1670U) /**< \brief (PIOE) Peripheral Select Register */ + #define REG_PIOE_IFSCDR (*(__O uint32_t*)0x400E1680U) /**< \brief (PIOE) Input Filter Slow Clock Disable Register */ + #define REG_PIOE_IFSCER (*(__O uint32_t*)0x400E1684U) /**< \brief (PIOE) Input Filter Slow Clock Enable Register */ + #define REG_PIOE_IFSCSR (*(__I uint32_t*)0x400E1688U) /**< \brief (PIOE) Input Filter Slow Clock Status Register */ + #define REG_PIOE_SCDR (*(__IO uint32_t*)0x400E168CU) /**< \brief (PIOE) Slow Clock Divider Debouncing Register */ + #define REG_PIOE_PPDDR (*(__O uint32_t*)0x400E1690U) /**< \brief (PIOE) Pad Pull-down Disable Register */ + #define REG_PIOE_PPDER (*(__O uint32_t*)0x400E1694U) /**< \brief (PIOE) Pad Pull-down Enable Register */ + #define REG_PIOE_PPDSR (*(__I uint32_t*)0x400E1698U) /**< \brief (PIOE) Pad Pull-down Status Register */ + #define REG_PIOE_OWER (*(__O uint32_t*)0x400E16A0U) /**< \brief (PIOE) Output Write Enable */ + #define REG_PIOE_OWDR (*(__O uint32_t*)0x400E16A4U) /**< \brief (PIOE) Output Write Disable */ + #define REG_PIOE_OWSR (*(__I uint32_t*)0x400E16A8U) /**< \brief (PIOE) Output Write Status Register */ + #define REG_PIOE_AIMER (*(__O uint32_t*)0x400E16B0U) /**< \brief (PIOE) Additional Interrupt Modes Enable Register */ + #define REG_PIOE_AIMDR (*(__O uint32_t*)0x400E16B4U) /**< \brief (PIOE) Additional Interrupt Modes Disable Register */ + #define REG_PIOE_AIMMR (*(__I uint32_t*)0x400E16B8U) /**< \brief (PIOE) Additional Interrupt Modes Mask Register */ + #define REG_PIOE_ESR (*(__O uint32_t*)0x400E16C0U) /**< \brief (PIOE) Edge Select Register */ + #define REG_PIOE_LSR (*(__O uint32_t*)0x400E16C4U) /**< \brief (PIOE) Level Select Register */ + #define REG_PIOE_ELSR (*(__I uint32_t*)0x400E16C8U) /**< \brief (PIOE) Edge/Level Status Register */ + #define REG_PIOE_FELLSR (*(__O uint32_t*)0x400E16D0U) /**< \brief (PIOE) Falling Edge/Low-Level Select Register */ + #define REG_PIOE_REHLSR (*(__O uint32_t*)0x400E16D4U) /**< \brief (PIOE) Rising Edge/High-Level Select Register */ + #define REG_PIOE_FRLHSR (*(__I uint32_t*)0x400E16D8U) /**< \brief (PIOE) Fall/Rise - Low/High Status Register */ + #define REG_PIOE_LOCKSR (*(__I uint32_t*)0x400E16E0U) /**< \brief (PIOE) Lock Status */ + #define REG_PIOE_WPMR (*(__IO uint32_t*)0x400E16E4U) /**< \brief (PIOE) Write Protection Mode Register */ + #define REG_PIOE_WPSR (*(__I uint32_t*)0x400E16E8U) /**< \brief (PIOE) Write Protection Status Register */ + #define REG_PIOE_VERSION (*(__I uint32_t*)0x400E16FCU) /**< \brief (PIOE) Version Register */ + #define REG_PIOE_SCHMITT (*(__IO uint32_t*)0x400E1700U) /**< \brief (PIOE) Schmitt Trigger Register */ + #define REG_PIOE_DRIVER (*(__IO uint32_t*)0x400E1718U) /**< \brief (PIOE) PIO I/O Drive Register */ + #define REG_PIOE_KER (*(__IO uint32_t*)0x400E1720U) /**< \brief (PIOE) Keypad Controller Enable Register */ + #define REG_PIOE_KRCR (*(__IO uint32_t*)0x400E1724U) /**< \brief (PIOE) Keypad Controller Row Column Register */ + #define REG_PIOE_KDR (*(__IO uint32_t*)0x400E1728U) /**< \brief (PIOE) Keypad Controller Debouncing Register */ + #define REG_PIOE_KIER (*(__O uint32_t*)0x400E1730U) /**< \brief (PIOE) Keypad Controller Interrupt Enable Register */ + #define REG_PIOE_KIDR (*(__O uint32_t*)0x400E1734U) /**< \brief (PIOE) Keypad Controller Interrupt Disable Register */ + #define REG_PIOE_KIMR (*(__I uint32_t*)0x400E1738U) /**< \brief (PIOE) Keypad Controller Interrupt Mask Register */ + #define REG_PIOE_KSR (*(__I uint32_t*)0x400E173CU) /**< \brief (PIOE) Keypad Controller Status Register */ + #define REG_PIOE_KKPR (*(__I uint32_t*)0x400E1740U) /**< \brief (PIOE) Keypad Controller Key Press Register */ + #define REG_PIOE_KKRR (*(__I uint32_t*)0x400E1744U) /**< \brief (PIOE) Keypad Controller Key Release Register */ + #define REG_PIOE_PCMR (*(__IO uint32_t*)0x400E1750U) /**< \brief (PIOE) Parallel Capture Mode Register */ + #define REG_PIOE_PCIER (*(__O uint32_t*)0x400E1754U) /**< \brief (PIOE) Parallel Capture Interrupt Enable Register */ + #define REG_PIOE_PCIDR (*(__O uint32_t*)0x400E1758U) /**< \brief (PIOE) Parallel Capture Interrupt Disable Register */ + #define REG_PIOE_PCIMR (*(__I uint32_t*)0x400E175CU) /**< \brief (PIOE) Parallel Capture Interrupt Mask Register */ + #define REG_PIOE_PCISR (*(__I uint32_t*)0x400E1760U) /**< \brief (PIOE) Parallel Capture Interrupt Status Register */ + #define REG_PIOE_PCRHR (*(__I uint32_t*)0x400E1764U) /**< \brief (PIOE) Parallel Capture Reception Holding Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PIOE_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h new file mode 100644 index 00000000..54094217 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h @@ -0,0 +1,123 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PMC_INSTANCE_ +#define _SAME70_PMC_INSTANCE_ + +/* ========== Register definition for PMC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PMC_SCER (0x400E0600U) /**< \brief (PMC) System Clock Enable Register */ + #define REG_PMC_SCDR (0x400E0604U) /**< \brief (PMC) System Clock Disable Register */ + #define REG_PMC_SCSR (0x400E0608U) /**< \brief (PMC) System Clock Status Register */ + #define REG_PMC_PCER0 (0x400E0610U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ + #define REG_PMC_PCDR0 (0x400E0614U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ + #define REG_PMC_PCSR0 (0x400E0618U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ + #define REG_CKGR_UCKR (0x400E061CU) /**< \brief (PMC) UTMI Clock Register */ + #define REG_CKGR_MOR (0x400E0620U) /**< \brief (PMC) Main Oscillator Register */ + #define REG_CKGR_MCFR (0x400E0624U) /**< \brief (PMC) Main Clock Frequency Register */ + #define REG_CKGR_PLLAR (0x400E0628U) /**< \brief (PMC) PLLA Register */ + #define REG_PMC_MCKR (0x400E0630U) /**< \brief (PMC) Master Clock Register */ + #define REG_PMC_USB (0x400E0638U) /**< \brief (PMC) USB Clock Register */ + #define REG_PMC_PCK (0x400E0640U) /**< \brief (PMC) Programmable Clock 0 Register */ + #define REG_PMC_IER (0x400E0660U) /**< \brief (PMC) Interrupt Enable Register */ + #define REG_PMC_IDR (0x400E0664U) /**< \brief (PMC) Interrupt Disable Register */ + #define REG_PMC_SR (0x400E0668U) /**< \brief (PMC) Status Register */ + #define REG_PMC_IMR (0x400E066CU) /**< \brief (PMC) Interrupt Mask Register */ + #define REG_PMC_FSMR (0x400E0670U) /**< \brief (PMC) Fast Startup Mode Register */ + #define REG_PMC_FSPR (0x400E0674U) /**< \brief (PMC) Fast Startup Polarity Register */ + #define REG_PMC_FOCR (0x400E0678U) /**< \brief (PMC) Fault Output Clear Register */ + #define REG_PMC_WPMR (0x400E06E4U) /**< \brief (PMC) Write Protection Mode Register */ + #define REG_PMC_WPSR (0x400E06E8U) /**< \brief (PMC) Write Protection Status Register */ + #define REG_PMC_VERSION (0x400E06FCU) /**< \brief (PMC) Version Register */ + #define REG_PMC_PCER1 (0x400E0700U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ + #define REG_PMC_PCDR1 (0x400E0704U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ + #define REG_PMC_PCSR1 (0x400E0708U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ + #define REG_PMC_PCR (0x400E070CU) /**< \brief (PMC) Peripheral Control Register */ + #define REG_PMC_OCR (0x400E0710U) /**< \brief (PMC) Oscillator Calibration Register */ + #define REG_PMC_SLPWK_ER0 (0x400E0714U) /**< \brief (PMC) SleepWalking Enable Register 0 */ + #define REG_PMC_SLPWK_DR0 (0x400E0718U) /**< \brief (PMC) SleepWalking Disable Register 0 */ + #define REG_PMC_SLPWK_SR0 (0x400E071CU) /**< \brief (PMC) SleepWalking Status Register 0 */ + #define REG_PMC_SLPWK_ASR0 (0x400E0720U) /**< \brief (PMC) SleepWalking Activity Status Register 0 */ + #define REG_PMC_PMMR (0x400E0730U) /**< \brief (PMC) PLL Maximum Multiplier Value Register */ + #define REG_PMC_SLPWK_ER1 (0x400E0734U) /**< \brief (PMC) SleepWalking Enable Register 1 */ + #define REG_PMC_SLPWK_DR1 (0x400E0738U) /**< \brief (PMC) SleepWalking Disable Register 1 */ + #define REG_PMC_SLPWK_SR1 (0x400E073CU) /**< \brief (PMC) SleepWalking Status Register 1 */ + #define REG_PMC_SLPWK_ASR1 (0x400E0740U) /**< \brief (PMC) SleepWalking Activity Status Register 1 */ + #define REG_PMC_SLPWK_AIPR (0x400E0744U) /**< \brief (PMC) SleepWalking Activity In Progress Register */ + #define REG_PMC_APLLACR (0x400E0758U) /**< \brief (PMC) Audio PLL Analog Configuration Register */ + #define REG_PMC_WMST (0x400E075CU) /**< \brief (PMC) Wait Mode Startup Time Register */ +#else + #define REG_PMC_SCER (*(__O uint32_t*)0x400E0600U) /**< \brief (PMC) System Clock Enable Register */ + #define REG_PMC_SCDR (*(__O uint32_t*)0x400E0604U) /**< \brief (PMC) System Clock Disable Register */ + #define REG_PMC_SCSR (*(__I uint32_t*)0x400E0608U) /**< \brief (PMC) System Clock Status Register */ + #define REG_PMC_PCER0 (*(__O uint32_t*)0x400E0610U) /**< \brief (PMC) Peripheral Clock Enable Register 0 */ + #define REG_PMC_PCDR0 (*(__O uint32_t*)0x400E0614U) /**< \brief (PMC) Peripheral Clock Disable Register 0 */ + #define REG_PMC_PCSR0 (*(__I uint32_t*)0x400E0618U) /**< \brief (PMC) Peripheral Clock Status Register 0 */ + #define REG_CKGR_UCKR (*(__IO uint32_t*)0x400E061CU) /**< \brief (PMC) UTMI Clock Register */ + #define REG_CKGR_MOR (*(__IO uint32_t*)0x400E0620U) /**< \brief (PMC) Main Oscillator Register */ + #define REG_CKGR_MCFR (*(__IO uint32_t*)0x400E0624U) /**< \brief (PMC) Main Clock Frequency Register */ + #define REG_CKGR_PLLAR (*(__IO uint32_t*)0x400E0628U) /**< \brief (PMC) PLLA Register */ + #define REG_PMC_MCKR (*(__IO uint32_t*)0x400E0630U) /**< \brief (PMC) Master Clock Register */ + #define REG_PMC_USB (*(__IO uint32_t*)0x400E0638U) /**< \brief (PMC) USB Clock Register */ + #define REG_PMC_PCK (*(__IO uint32_t*)0x400E0640U) /**< \brief (PMC) Programmable Clock 0 Register */ + #define REG_PMC_IER (*(__O uint32_t*)0x400E0660U) /**< \brief (PMC) Interrupt Enable Register */ + #define REG_PMC_IDR (*(__O uint32_t*)0x400E0664U) /**< \brief (PMC) Interrupt Disable Register */ + #define REG_PMC_SR (*(__I uint32_t*)0x400E0668U) /**< \brief (PMC) Status Register */ + #define REG_PMC_IMR (*(__I uint32_t*)0x400E066CU) /**< \brief (PMC) Interrupt Mask Register */ + #define REG_PMC_FSMR (*(__IO uint32_t*)0x400E0670U) /**< \brief (PMC) Fast Startup Mode Register */ + #define REG_PMC_FSPR (*(__IO uint32_t*)0x400E0674U) /**< \brief (PMC) Fast Startup Polarity Register */ + #define REG_PMC_FOCR (*(__O uint32_t*)0x400E0678U) /**< \brief (PMC) Fault Output Clear Register */ + #define REG_PMC_WPMR (*(__IO uint32_t*)0x400E06E4U) /**< \brief (PMC) Write Protection Mode Register */ + #define REG_PMC_WPSR (*(__I uint32_t*)0x400E06E8U) /**< \brief (PMC) Write Protection Status Register */ + #define REG_PMC_VERSION (*(__I uint32_t*)0x400E06FCU) /**< \brief (PMC) Version Register */ + #define REG_PMC_PCER1 (*(__O uint32_t*)0x400E0700U) /**< \brief (PMC) Peripheral Clock Enable Register 1 */ + #define REG_PMC_PCDR1 (*(__O uint32_t*)0x400E0704U) /**< \brief (PMC) Peripheral Clock Disable Register 1 */ + #define REG_PMC_PCSR1 (*(__I uint32_t*)0x400E0708U) /**< \brief (PMC) Peripheral Clock Status Register 1 */ + #define REG_PMC_PCR (*(__IO uint32_t*)0x400E070CU) /**< \brief (PMC) Peripheral Control Register */ + #define REG_PMC_OCR (*(__IO uint32_t*)0x400E0710U) /**< \brief (PMC) Oscillator Calibration Register */ + #define REG_PMC_SLPWK_ER0 (*(__O uint32_t*)0x400E0714U) /**< \brief (PMC) SleepWalking Enable Register 0 */ + #define REG_PMC_SLPWK_DR0 (*(__O uint32_t*)0x400E0718U) /**< \brief (PMC) SleepWalking Disable Register 0 */ + #define REG_PMC_SLPWK_SR0 (*(__I uint32_t*)0x400E071CU) /**< \brief (PMC) SleepWalking Status Register 0 */ + #define REG_PMC_SLPWK_ASR0 (*(__I uint32_t*)0x400E0720U) /**< \brief (PMC) SleepWalking Activity Status Register 0 */ + #define REG_PMC_PMMR (*(__IO uint32_t*)0x400E0730U) /**< \brief (PMC) PLL Maximum Multiplier Value Register */ + #define REG_PMC_SLPWK_ER1 (*(__O uint32_t*)0x400E0734U) /**< \brief (PMC) SleepWalking Enable Register 1 */ + #define REG_PMC_SLPWK_DR1 (*(__O uint32_t*)0x400E0738U) /**< \brief (PMC) SleepWalking Disable Register 1 */ + #define REG_PMC_SLPWK_SR1 (*(__I uint32_t*)0x400E073CU) /**< \brief (PMC) SleepWalking Status Register 1 */ + #define REG_PMC_SLPWK_ASR1 (*(__I uint32_t*)0x400E0740U) /**< \brief (PMC) SleepWalking Activity Status Register 1 */ + #define REG_PMC_SLPWK_AIPR (*(__I uint32_t*)0x400E0744U) /**< \brief (PMC) SleepWalking Activity In Progress Register */ + #define REG_PMC_APLLACR (*(__IO uint32_t*)0x400E0758U) /**< \brief (PMC) Audio PLL Analog Configuration Register */ + #define REG_PMC_WMST (*(__IO uint32_t*)0x400E075CU) /**< \brief (PMC) Wait Mode Startup Time Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PMC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h new file mode 100644 index 00000000..27c1b906 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h @@ -0,0 +1,259 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PWM0_INSTANCE_ +#define _SAME70_PWM0_INSTANCE_ + +/* ========== Register definition for PWM0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PWM0_CLK (0x40020000U) /**< \brief (PWM0) PWM Clock Register */ + #define REG_PWM0_ENA (0x40020004U) /**< \brief (PWM0) PWM Enable Register */ + #define REG_PWM0_DIS (0x40020008U) /**< \brief (PWM0) PWM Disable Register */ + #define REG_PWM0_SR (0x4002000CU) /**< \brief (PWM0) PWM Status Register */ + #define REG_PWM0_IER1 (0x40020010U) /**< \brief (PWM0) PWM Interrupt Enable Register 1 */ + #define REG_PWM0_IDR1 (0x40020014U) /**< \brief (PWM0) PWM Interrupt Disable Register 1 */ + #define REG_PWM0_IMR1 (0x40020018U) /**< \brief (PWM0) PWM Interrupt Mask Register 1 */ + #define REG_PWM0_ISR1 (0x4002001CU) /**< \brief (PWM0) PWM Interrupt Status Register 1 */ + #define REG_PWM0_SCM (0x40020020U) /**< \brief (PWM0) PWM Sync Channels Mode Register */ + #define REG_PWM0_DMAR (0x40020024U) /**< \brief (PWM0) PWM DMA Register */ + #define REG_PWM0_SCUC (0x40020028U) /**< \brief (PWM0) PWM Sync Channels Update Control Register */ + #define REG_PWM0_SCUP (0x4002002CU) /**< \brief (PWM0) PWM Sync Channels Update Period Register */ + #define REG_PWM0_SCUPUPD (0x40020030U) /**< \brief (PWM0) PWM Sync Channels Update Period Update Register */ + #define REG_PWM0_IER2 (0x40020034U) /**< \brief (PWM0) PWM Interrupt Enable Register 2 */ + #define REG_PWM0_IDR2 (0x40020038U) /**< \brief (PWM0) PWM Interrupt Disable Register 2 */ + #define REG_PWM0_IMR2 (0x4002003CU) /**< \brief (PWM0) PWM Interrupt Mask Register 2 */ + #define REG_PWM0_ISR2 (0x40020040U) /**< \brief (PWM0) PWM Interrupt Status Register 2 */ + #define REG_PWM0_OOV (0x40020044U) /**< \brief (PWM0) PWM Output Override Value Register */ + #define REG_PWM0_OS (0x40020048U) /**< \brief (PWM0) PWM Output Selection Register */ + #define REG_PWM0_OSS (0x4002004CU) /**< \brief (PWM0) PWM Output Selection Set Register */ + #define REG_PWM0_OSC (0x40020050U) /**< \brief (PWM0) PWM Output Selection Clear Register */ + #define REG_PWM0_OSSUPD (0x40020054U) /**< \brief (PWM0) PWM Output Selection Set Update Register */ + #define REG_PWM0_OSCUPD (0x40020058U) /**< \brief (PWM0) PWM Output Selection Clear Update Register */ + #define REG_PWM0_FMR (0x4002005CU) /**< \brief (PWM0) PWM Fault Mode Register */ + #define REG_PWM0_FSR (0x40020060U) /**< \brief (PWM0) PWM Fault Status Register */ + #define REG_PWM0_FCR (0x40020064U) /**< \brief (PWM0) PWM Fault Clear Register */ + #define REG_PWM0_FPV1 (0x40020068U) /**< \brief (PWM0) PWM Fault Protection Value Register 1 */ + #define REG_PWM0_FPE (0x4002006CU) /**< \brief (PWM0) PWM Fault Protection Enable Register */ + #define REG_PWM0_ELMR (0x4002007CU) /**< \brief (PWM0) PWM Event Line 0 Mode Register */ + #define REG_PWM0_SSPR (0x400200A0U) /**< \brief (PWM0) PWM Spread Spectrum Register */ + #define REG_PWM0_SSPUP (0x400200A4U) /**< \brief (PWM0) PWM Spread Spectrum Update Register */ + #define REG_PWM0_SMMR (0x400200B0U) /**< \brief (PWM0) PWM Stepper Motor Mode Register */ + #define REG_PWM0_FPV2 (0x400200C0U) /**< \brief (PWM0) PWM Fault Protection Value 2 Register */ + #define REG_PWM0_WPCR (0x400200E4U) /**< \brief (PWM0) PWM Write Protection Control Register */ + #define REG_PWM0_WPSR (0x400200E8U) /**< \brief (PWM0) PWM Write Protection Status Register */ + #define REG_PWM0_VERSION (0x400200FCU) /**< \brief (PWM0) Version Register */ + #define REG_PWM0_CMPV0 (0x40020130U) /**< \brief (PWM0) PWM Comparison 0 Value Register */ + #define REG_PWM0_CMPVUPD0 (0x40020134U) /**< \brief (PWM0) PWM Comparison 0 Value Update Register */ + #define REG_PWM0_CMPM0 (0x40020138U) /**< \brief (PWM0) PWM Comparison 0 Mode Register */ + #define REG_PWM0_CMPMUPD0 (0x4002013CU) /**< \brief (PWM0) PWM Comparison 0 Mode Update Register */ + #define REG_PWM0_CMPV1 (0x40020140U) /**< \brief (PWM0) PWM Comparison 1 Value Register */ + #define REG_PWM0_CMPVUPD1 (0x40020144U) /**< \brief (PWM0) PWM Comparison 1 Value Update Register */ + #define REG_PWM0_CMPM1 (0x40020148U) /**< \brief (PWM0) PWM Comparison 1 Mode Register */ + #define REG_PWM0_CMPMUPD1 (0x4002014CU) /**< \brief (PWM0) PWM Comparison 1 Mode Update Register */ + #define REG_PWM0_CMPV2 (0x40020150U) /**< \brief (PWM0) PWM Comparison 2 Value Register */ + #define REG_PWM0_CMPVUPD2 (0x40020154U) /**< \brief (PWM0) PWM Comparison 2 Value Update Register */ + #define REG_PWM0_CMPM2 (0x40020158U) /**< \brief (PWM0) PWM Comparison 2 Mode Register */ + #define REG_PWM0_CMPMUPD2 (0x4002015CU) /**< \brief (PWM0) PWM Comparison 2 Mode Update Register */ + #define REG_PWM0_CMPV3 (0x40020160U) /**< \brief (PWM0) PWM Comparison 3 Value Register */ + #define REG_PWM0_CMPVUPD3 (0x40020164U) /**< \brief (PWM0) PWM Comparison 3 Value Update Register */ + #define REG_PWM0_CMPM3 (0x40020168U) /**< \brief (PWM0) PWM Comparison 3 Mode Register */ + #define REG_PWM0_CMPMUPD3 (0x4002016CU) /**< \brief (PWM0) PWM Comparison 3 Mode Update Register */ + #define REG_PWM0_CMPV4 (0x40020170U) /**< \brief (PWM0) PWM Comparison 4 Value Register */ + #define REG_PWM0_CMPVUPD4 (0x40020174U) /**< \brief (PWM0) PWM Comparison 4 Value Update Register */ + #define REG_PWM0_CMPM4 (0x40020178U) /**< \brief (PWM0) PWM Comparison 4 Mode Register */ + #define REG_PWM0_CMPMUPD4 (0x4002017CU) /**< \brief (PWM0) PWM Comparison 4 Mode Update Register */ + #define REG_PWM0_CMPV5 (0x40020180U) /**< \brief (PWM0) PWM Comparison 5 Value Register */ + #define REG_PWM0_CMPVUPD5 (0x40020184U) /**< \brief (PWM0) PWM Comparison 5 Value Update Register */ + #define REG_PWM0_CMPM5 (0x40020188U) /**< \brief (PWM0) PWM Comparison 5 Mode Register */ + #define REG_PWM0_CMPMUPD5 (0x4002018CU) /**< \brief (PWM0) PWM Comparison 5 Mode Update Register */ + #define REG_PWM0_CMPV6 (0x40020190U) /**< \brief (PWM0) PWM Comparison 6 Value Register */ + #define REG_PWM0_CMPVUPD6 (0x40020194U) /**< \brief (PWM0) PWM Comparison 6 Value Update Register */ + #define REG_PWM0_CMPM6 (0x40020198U) /**< \brief (PWM0) PWM Comparison 6 Mode Register */ + #define REG_PWM0_CMPMUPD6 (0x4002019CU) /**< \brief (PWM0) PWM Comparison 6 Mode Update Register */ + #define REG_PWM0_CMPV7 (0x400201A0U) /**< \brief (PWM0) PWM Comparison 7 Value Register */ + #define REG_PWM0_CMPVUPD7 (0x400201A4U) /**< \brief (PWM0) PWM Comparison 7 Value Update Register */ + #define REG_PWM0_CMPM7 (0x400201A8U) /**< \brief (PWM0) PWM Comparison 7 Mode Register */ + #define REG_PWM0_CMPMUPD7 (0x400201ACU) /**< \brief (PWM0) PWM Comparison 7 Mode Update Register */ + #define REG_PWM0_CMR0 (0x40020200U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 0) */ + #define REG_PWM0_CDTY0 (0x40020204U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 0) */ + #define REG_PWM0_CDTYUPD0 (0x40020208U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 0) */ + #define REG_PWM0_CPRD0 (0x4002020CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 0) */ + #define REG_PWM0_CPRDUPD0 (0x40020210U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 0) */ + #define REG_PWM0_CCNT0 (0x40020214U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 0) */ + #define REG_PWM0_DT0 (0x40020218U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 0) */ + #define REG_PWM0_DTUPD0 (0x4002021CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 0) */ + #define REG_PWM0_CMR1 (0x40020220U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 1) */ + #define REG_PWM0_CDTY1 (0x40020224U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 1) */ + #define REG_PWM0_CDTYUPD1 (0x40020228U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 1) */ + #define REG_PWM0_CPRD1 (0x4002022CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 1) */ + #define REG_PWM0_CPRDUPD1 (0x40020230U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 1) */ + #define REG_PWM0_CCNT1 (0x40020234U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 1) */ + #define REG_PWM0_DT1 (0x40020238U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 1) */ + #define REG_PWM0_DTUPD1 (0x4002023CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 1) */ + #define REG_PWM0_CMR2 (0x40020240U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 2) */ + #define REG_PWM0_CDTY2 (0x40020244U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 2) */ + #define REG_PWM0_CDTYUPD2 (0x40020248U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 2) */ + #define REG_PWM0_CPRD2 (0x4002024CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 2) */ + #define REG_PWM0_CPRDUPD2 (0x40020250U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 2) */ + #define REG_PWM0_CCNT2 (0x40020254U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 2) */ + #define REG_PWM0_DT2 (0x40020258U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 2) */ + #define REG_PWM0_DTUPD2 (0x4002025CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 2) */ + #define REG_PWM0_CMR3 (0x40020260U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 3) */ + #define REG_PWM0_CDTY3 (0x40020264U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 3) */ + #define REG_PWM0_CDTYUPD3 (0x40020268U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 3) */ + #define REG_PWM0_CPRD3 (0x4002026CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 3) */ + #define REG_PWM0_CPRDUPD3 (0x40020270U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 3) */ + #define REG_PWM0_CCNT3 (0x40020274U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 3) */ + #define REG_PWM0_DT3 (0x40020278U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 3) */ + #define REG_PWM0_DTUPD3 (0x4002027CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 3) */ + #define REG_PWM0_CMUPD0 (0x40020400U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 0) */ + #define REG_PWM0_CMUPD1 (0x40020420U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 1) */ + #define REG_PWM0_ETRG1 (0x4002042CU) /**< \brief (PWM0) PWM External Trigger Register (trg_num = 1) */ + #define REG_PWM0_LEBR1 (0x40020430U) /**< \brief (PWM0) PWM Leading-Edge Blanking Register (trg_num = 1) */ + #define REG_PWM0_CMUPD2 (0x40020440U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 2) */ + #define REG_PWM0_ETRG2 (0x4002044CU) /**< \brief (PWM0) PWM External Trigger Register (trg_num = 2) */ + #define REG_PWM0_LEBR2 (0x40020450U) /**< \brief (PWM0) PWM Leading-Edge Blanking Register (trg_num = 2) */ + #define REG_PWM0_CMUPD3 (0x40020460U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 3) */ +#else + #define REG_PWM0_CLK (*(__IO uint32_t*)0x40020000U) /**< \brief (PWM0) PWM Clock Register */ + #define REG_PWM0_ENA (*(__O uint32_t*)0x40020004U) /**< \brief (PWM0) PWM Enable Register */ + #define REG_PWM0_DIS (*(__O uint32_t*)0x40020008U) /**< \brief (PWM0) PWM Disable Register */ + #define REG_PWM0_SR (*(__I uint32_t*)0x4002000CU) /**< \brief (PWM0) PWM Status Register */ + #define REG_PWM0_IER1 (*(__O uint32_t*)0x40020010U) /**< \brief (PWM0) PWM Interrupt Enable Register 1 */ + #define REG_PWM0_IDR1 (*(__O uint32_t*)0x40020014U) /**< \brief (PWM0) PWM Interrupt Disable Register 1 */ + #define REG_PWM0_IMR1 (*(__I uint32_t*)0x40020018U) /**< \brief (PWM0) PWM Interrupt Mask Register 1 */ + #define REG_PWM0_ISR1 (*(__I uint32_t*)0x4002001CU) /**< \brief (PWM0) PWM Interrupt Status Register 1 */ + #define REG_PWM0_SCM (*(__IO uint32_t*)0x40020020U) /**< \brief (PWM0) PWM Sync Channels Mode Register */ + #define REG_PWM0_DMAR (*(__O uint32_t*)0x40020024U) /**< \brief (PWM0) PWM DMA Register */ + #define REG_PWM0_SCUC (*(__IO uint32_t*)0x40020028U) /**< \brief (PWM0) PWM Sync Channels Update Control Register */ + #define REG_PWM0_SCUP (*(__IO uint32_t*)0x4002002CU) /**< \brief (PWM0) PWM Sync Channels Update Period Register */ + #define REG_PWM0_SCUPUPD (*(__O uint32_t*)0x40020030U) /**< \brief (PWM0) PWM Sync Channels Update Period Update Register */ + #define REG_PWM0_IER2 (*(__O uint32_t*)0x40020034U) /**< \brief (PWM0) PWM Interrupt Enable Register 2 */ + #define REG_PWM0_IDR2 (*(__O uint32_t*)0x40020038U) /**< \brief (PWM0) PWM Interrupt Disable Register 2 */ + #define REG_PWM0_IMR2 (*(__I uint32_t*)0x4002003CU) /**< \brief (PWM0) PWM Interrupt Mask Register 2 */ + #define REG_PWM0_ISR2 (*(__I uint32_t*)0x40020040U) /**< \brief (PWM0) PWM Interrupt Status Register 2 */ + #define REG_PWM0_OOV (*(__IO uint32_t*)0x40020044U) /**< \brief (PWM0) PWM Output Override Value Register */ + #define REG_PWM0_OS (*(__IO uint32_t*)0x40020048U) /**< \brief (PWM0) PWM Output Selection Register */ + #define REG_PWM0_OSS (*(__O uint32_t*)0x4002004CU) /**< \brief (PWM0) PWM Output Selection Set Register */ + #define REG_PWM0_OSC (*(__O uint32_t*)0x40020050U) /**< \brief (PWM0) PWM Output Selection Clear Register */ + #define REG_PWM0_OSSUPD (*(__O uint32_t*)0x40020054U) /**< \brief (PWM0) PWM Output Selection Set Update Register */ + #define REG_PWM0_OSCUPD (*(__O uint32_t*)0x40020058U) /**< \brief (PWM0) PWM Output Selection Clear Update Register */ + #define REG_PWM0_FMR (*(__IO uint32_t*)0x4002005CU) /**< \brief (PWM0) PWM Fault Mode Register */ + #define REG_PWM0_FSR (*(__I uint32_t*)0x40020060U) /**< \brief (PWM0) PWM Fault Status Register */ + #define REG_PWM0_FCR (*(__O uint32_t*)0x40020064U) /**< \brief (PWM0) PWM Fault Clear Register */ + #define REG_PWM0_FPV1 (*(__IO uint32_t*)0x40020068U) /**< \brief (PWM0) PWM Fault Protection Value Register 1 */ + #define REG_PWM0_FPE (*(__IO uint32_t*)0x4002006CU) /**< \brief (PWM0) PWM Fault Protection Enable Register */ + #define REG_PWM0_ELMR (*(__IO uint32_t*)0x4002007CU) /**< \brief (PWM0) PWM Event Line 0 Mode Register */ + #define REG_PWM0_SSPR (*(__IO uint32_t*)0x400200A0U) /**< \brief (PWM0) PWM Spread Spectrum Register */ + #define REG_PWM0_SSPUP (*(__O uint32_t*)0x400200A4U) /**< \brief (PWM0) PWM Spread Spectrum Update Register */ + #define REG_PWM0_SMMR (*(__IO uint32_t*)0x400200B0U) /**< \brief (PWM0) PWM Stepper Motor Mode Register */ + #define REG_PWM0_FPV2 (*(__IO uint32_t*)0x400200C0U) /**< \brief (PWM0) PWM Fault Protection Value 2 Register */ + #define REG_PWM0_WPCR (*(__O uint32_t*)0x400200E4U) /**< \brief (PWM0) PWM Write Protection Control Register */ + #define REG_PWM0_WPSR (*(__I uint32_t*)0x400200E8U) /**< \brief (PWM0) PWM Write Protection Status Register */ + #define REG_PWM0_VERSION (*(__I uint32_t*)0x400200FCU) /**< \brief (PWM0) Version Register */ + #define REG_PWM0_CMPV0 (*(__IO uint32_t*)0x40020130U) /**< \brief (PWM0) PWM Comparison 0 Value Register */ + #define REG_PWM0_CMPVUPD0 (*(__O uint32_t*)0x40020134U) /**< \brief (PWM0) PWM Comparison 0 Value Update Register */ + #define REG_PWM0_CMPM0 (*(__IO uint32_t*)0x40020138U) /**< \brief (PWM0) PWM Comparison 0 Mode Register */ + #define REG_PWM0_CMPMUPD0 (*(__O uint32_t*)0x4002013CU) /**< \brief (PWM0) PWM Comparison 0 Mode Update Register */ + #define REG_PWM0_CMPV1 (*(__IO uint32_t*)0x40020140U) /**< \brief (PWM0) PWM Comparison 1 Value Register */ + #define REG_PWM0_CMPVUPD1 (*(__O uint32_t*)0x40020144U) /**< \brief (PWM0) PWM Comparison 1 Value Update Register */ + #define REG_PWM0_CMPM1 (*(__IO uint32_t*)0x40020148U) /**< \brief (PWM0) PWM Comparison 1 Mode Register */ + #define REG_PWM0_CMPMUPD1 (*(__O uint32_t*)0x4002014CU) /**< \brief (PWM0) PWM Comparison 1 Mode Update Register */ + #define REG_PWM0_CMPV2 (*(__IO uint32_t*)0x40020150U) /**< \brief (PWM0) PWM Comparison 2 Value Register */ + #define REG_PWM0_CMPVUPD2 (*(__O uint32_t*)0x40020154U) /**< \brief (PWM0) PWM Comparison 2 Value Update Register */ + #define REG_PWM0_CMPM2 (*(__IO uint32_t*)0x40020158U) /**< \brief (PWM0) PWM Comparison 2 Mode Register */ + #define REG_PWM0_CMPMUPD2 (*(__O uint32_t*)0x4002015CU) /**< \brief (PWM0) PWM Comparison 2 Mode Update Register */ + #define REG_PWM0_CMPV3 (*(__IO uint32_t*)0x40020160U) /**< \brief (PWM0) PWM Comparison 3 Value Register */ + #define REG_PWM0_CMPVUPD3 (*(__O uint32_t*)0x40020164U) /**< \brief (PWM0) PWM Comparison 3 Value Update Register */ + #define REG_PWM0_CMPM3 (*(__IO uint32_t*)0x40020168U) /**< \brief (PWM0) PWM Comparison 3 Mode Register */ + #define REG_PWM0_CMPMUPD3 (*(__O uint32_t*)0x4002016CU) /**< \brief (PWM0) PWM Comparison 3 Mode Update Register */ + #define REG_PWM0_CMPV4 (*(__IO uint32_t*)0x40020170U) /**< \brief (PWM0) PWM Comparison 4 Value Register */ + #define REG_PWM0_CMPVUPD4 (*(__O uint32_t*)0x40020174U) /**< \brief (PWM0) PWM Comparison 4 Value Update Register */ + #define REG_PWM0_CMPM4 (*(__IO uint32_t*)0x40020178U) /**< \brief (PWM0) PWM Comparison 4 Mode Register */ + #define REG_PWM0_CMPMUPD4 (*(__O uint32_t*)0x4002017CU) /**< \brief (PWM0) PWM Comparison 4 Mode Update Register */ + #define REG_PWM0_CMPV5 (*(__IO uint32_t*)0x40020180U) /**< \brief (PWM0) PWM Comparison 5 Value Register */ + #define REG_PWM0_CMPVUPD5 (*(__O uint32_t*)0x40020184U) /**< \brief (PWM0) PWM Comparison 5 Value Update Register */ + #define REG_PWM0_CMPM5 (*(__IO uint32_t*)0x40020188U) /**< \brief (PWM0) PWM Comparison 5 Mode Register */ + #define REG_PWM0_CMPMUPD5 (*(__O uint32_t*)0x4002018CU) /**< \brief (PWM0) PWM Comparison 5 Mode Update Register */ + #define REG_PWM0_CMPV6 (*(__IO uint32_t*)0x40020190U) /**< \brief (PWM0) PWM Comparison 6 Value Register */ + #define REG_PWM0_CMPVUPD6 (*(__O uint32_t*)0x40020194U) /**< \brief (PWM0) PWM Comparison 6 Value Update Register */ + #define REG_PWM0_CMPM6 (*(__IO uint32_t*)0x40020198U) /**< \brief (PWM0) PWM Comparison 6 Mode Register */ + #define REG_PWM0_CMPMUPD6 (*(__O uint32_t*)0x4002019CU) /**< \brief (PWM0) PWM Comparison 6 Mode Update Register */ + #define REG_PWM0_CMPV7 (*(__IO uint32_t*)0x400201A0U) /**< \brief (PWM0) PWM Comparison 7 Value Register */ + #define REG_PWM0_CMPVUPD7 (*(__O uint32_t*)0x400201A4U) /**< \brief (PWM0) PWM Comparison 7 Value Update Register */ + #define REG_PWM0_CMPM7 (*(__IO uint32_t*)0x400201A8U) /**< \brief (PWM0) PWM Comparison 7 Mode Register */ + #define REG_PWM0_CMPMUPD7 (*(__O uint32_t*)0x400201ACU) /**< \brief (PWM0) PWM Comparison 7 Mode Update Register */ + #define REG_PWM0_CMR0 (*(__IO uint32_t*)0x40020200U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 0) */ + #define REG_PWM0_CDTY0 (*(__IO uint32_t*)0x40020204U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 0) */ + #define REG_PWM0_CDTYUPD0 (*(__O uint32_t*)0x40020208U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 0) */ + #define REG_PWM0_CPRD0 (*(__IO uint32_t*)0x4002020CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 0) */ + #define REG_PWM0_CPRDUPD0 (*(__O uint32_t*)0x40020210U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 0) */ + #define REG_PWM0_CCNT0 (*(__I uint32_t*)0x40020214U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 0) */ + #define REG_PWM0_DT0 (*(__IO uint32_t*)0x40020218U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 0) */ + #define REG_PWM0_DTUPD0 (*(__O uint32_t*)0x4002021CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 0) */ + #define REG_PWM0_CMR1 (*(__IO uint32_t*)0x40020220U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 1) */ + #define REG_PWM0_CDTY1 (*(__IO uint32_t*)0x40020224U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 1) */ + #define REG_PWM0_CDTYUPD1 (*(__O uint32_t*)0x40020228U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 1) */ + #define REG_PWM0_CPRD1 (*(__IO uint32_t*)0x4002022CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 1) */ + #define REG_PWM0_CPRDUPD1 (*(__O uint32_t*)0x40020230U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 1) */ + #define REG_PWM0_CCNT1 (*(__I uint32_t*)0x40020234U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 1) */ + #define REG_PWM0_DT1 (*(__IO uint32_t*)0x40020238U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 1) */ + #define REG_PWM0_DTUPD1 (*(__O uint32_t*)0x4002023CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 1) */ + #define REG_PWM0_CMR2 (*(__IO uint32_t*)0x40020240U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 2) */ + #define REG_PWM0_CDTY2 (*(__IO uint32_t*)0x40020244U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 2) */ + #define REG_PWM0_CDTYUPD2 (*(__O uint32_t*)0x40020248U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 2) */ + #define REG_PWM0_CPRD2 (*(__IO uint32_t*)0x4002024CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 2) */ + #define REG_PWM0_CPRDUPD2 (*(__O uint32_t*)0x40020250U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 2) */ + #define REG_PWM0_CCNT2 (*(__I uint32_t*)0x40020254U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 2) */ + #define REG_PWM0_DT2 (*(__IO uint32_t*)0x40020258U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 2) */ + #define REG_PWM0_DTUPD2 (*(__O uint32_t*)0x4002025CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 2) */ + #define REG_PWM0_CMR3 (*(__IO uint32_t*)0x40020260U) /**< \brief (PWM0) PWM Channel Mode Register (ch_num = 3) */ + #define REG_PWM0_CDTY3 (*(__IO uint32_t*)0x40020264U) /**< \brief (PWM0) PWM Channel Duty Cycle Register (ch_num = 3) */ + #define REG_PWM0_CDTYUPD3 (*(__O uint32_t*)0x40020268U) /**< \brief (PWM0) PWM Channel Duty Cycle Update Register (ch_num = 3) */ + #define REG_PWM0_CPRD3 (*(__IO uint32_t*)0x4002026CU) /**< \brief (PWM0) PWM Channel Period Register (ch_num = 3) */ + #define REG_PWM0_CPRDUPD3 (*(__O uint32_t*)0x40020270U) /**< \brief (PWM0) PWM Channel Period Update Register (ch_num = 3) */ + #define REG_PWM0_CCNT3 (*(__I uint32_t*)0x40020274U) /**< \brief (PWM0) PWM Channel Counter Register (ch_num = 3) */ + #define REG_PWM0_DT3 (*(__IO uint32_t*)0x40020278U) /**< \brief (PWM0) PWM Channel Dead Time Register (ch_num = 3) */ + #define REG_PWM0_DTUPD3 (*(__O uint32_t*)0x4002027CU) /**< \brief (PWM0) PWM Channel Dead Time Update Register (ch_num = 3) */ + #define REG_PWM0_CMUPD0 (*(__O uint32_t*)0x40020400U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 0) */ + #define REG_PWM0_CMUPD1 (*(__O uint32_t*)0x40020420U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 1) */ + #define REG_PWM0_ETRG1 (*(__IO uint32_t*)0x4002042CU) /**< \brief (PWM0) PWM External Trigger Register (trg_num = 1) */ + #define REG_PWM0_LEBR1 (*(__IO uint32_t*)0x40020430U) /**< \brief (PWM0) PWM Leading-Edge Blanking Register (trg_num = 1) */ + #define REG_PWM0_CMUPD2 (*(__O uint32_t*)0x40020440U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 2) */ + #define REG_PWM0_ETRG2 (*(__IO uint32_t*)0x4002044CU) /**< \brief (PWM0) PWM External Trigger Register (trg_num = 2) */ + #define REG_PWM0_LEBR2 (*(__IO uint32_t*)0x40020450U) /**< \brief (PWM0) PWM Leading-Edge Blanking Register (trg_num = 2) */ + #define REG_PWM0_CMUPD3 (*(__O uint32_t*)0x40020460U) /**< \brief (PWM0) PWM Channel Mode Update Register (ch_num = 3) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PWM0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h new file mode 100644 index 00000000..0e308d78 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h @@ -0,0 +1,259 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_PWM1_INSTANCE_ +#define _SAME70_PWM1_INSTANCE_ + +/* ========== Register definition for PWM1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_PWM1_CLK (0x4005C000U) /**< \brief (PWM1) PWM Clock Register */ + #define REG_PWM1_ENA (0x4005C004U) /**< \brief (PWM1) PWM Enable Register */ + #define REG_PWM1_DIS (0x4005C008U) /**< \brief (PWM1) PWM Disable Register */ + #define REG_PWM1_SR (0x4005C00CU) /**< \brief (PWM1) PWM Status Register */ + #define REG_PWM1_IER1 (0x4005C010U) /**< \brief (PWM1) PWM Interrupt Enable Register 1 */ + #define REG_PWM1_IDR1 (0x4005C014U) /**< \brief (PWM1) PWM Interrupt Disable Register 1 */ + #define REG_PWM1_IMR1 (0x4005C018U) /**< \brief (PWM1) PWM Interrupt Mask Register 1 */ + #define REG_PWM1_ISR1 (0x4005C01CU) /**< \brief (PWM1) PWM Interrupt Status Register 1 */ + #define REG_PWM1_SCM (0x4005C020U) /**< \brief (PWM1) PWM Sync Channels Mode Register */ + #define REG_PWM1_DMAR (0x4005C024U) /**< \brief (PWM1) PWM DMA Register */ + #define REG_PWM1_SCUC (0x4005C028U) /**< \brief (PWM1) PWM Sync Channels Update Control Register */ + #define REG_PWM1_SCUP (0x4005C02CU) /**< \brief (PWM1) PWM Sync Channels Update Period Register */ + #define REG_PWM1_SCUPUPD (0x4005C030U) /**< \brief (PWM1) PWM Sync Channels Update Period Update Register */ + #define REG_PWM1_IER2 (0x4005C034U) /**< \brief (PWM1) PWM Interrupt Enable Register 2 */ + #define REG_PWM1_IDR2 (0x4005C038U) /**< \brief (PWM1) PWM Interrupt Disable Register 2 */ + #define REG_PWM1_IMR2 (0x4005C03CU) /**< \brief (PWM1) PWM Interrupt Mask Register 2 */ + #define REG_PWM1_ISR2 (0x4005C040U) /**< \brief (PWM1) PWM Interrupt Status Register 2 */ + #define REG_PWM1_OOV (0x4005C044U) /**< \brief (PWM1) PWM Output Override Value Register */ + #define REG_PWM1_OS (0x4005C048U) /**< \brief (PWM1) PWM Output Selection Register */ + #define REG_PWM1_OSS (0x4005C04CU) /**< \brief (PWM1) PWM Output Selection Set Register */ + #define REG_PWM1_OSC (0x4005C050U) /**< \brief (PWM1) PWM Output Selection Clear Register */ + #define REG_PWM1_OSSUPD (0x4005C054U) /**< \brief (PWM1) PWM Output Selection Set Update Register */ + #define REG_PWM1_OSCUPD (0x4005C058U) /**< \brief (PWM1) PWM Output Selection Clear Update Register */ + #define REG_PWM1_FMR (0x4005C05CU) /**< \brief (PWM1) PWM Fault Mode Register */ + #define REG_PWM1_FSR (0x4005C060U) /**< \brief (PWM1) PWM Fault Status Register */ + #define REG_PWM1_FCR (0x4005C064U) /**< \brief (PWM1) PWM Fault Clear Register */ + #define REG_PWM1_FPV1 (0x4005C068U) /**< \brief (PWM1) PWM Fault Protection Value Register 1 */ + #define REG_PWM1_FPE (0x4005C06CU) /**< \brief (PWM1) PWM Fault Protection Enable Register */ + #define REG_PWM1_ELMR (0x4005C07CU) /**< \brief (PWM1) PWM Event Line 0 Mode Register */ + #define REG_PWM1_SSPR (0x4005C0A0U) /**< \brief (PWM1) PWM Spread Spectrum Register */ + #define REG_PWM1_SSPUP (0x4005C0A4U) /**< \brief (PWM1) PWM Spread Spectrum Update Register */ + #define REG_PWM1_SMMR (0x4005C0B0U) /**< \brief (PWM1) PWM Stepper Motor Mode Register */ + #define REG_PWM1_FPV2 (0x4005C0C0U) /**< \brief (PWM1) PWM Fault Protection Value 2 Register */ + #define REG_PWM1_WPCR (0x4005C0E4U) /**< \brief (PWM1) PWM Write Protection Control Register */ + #define REG_PWM1_WPSR (0x4005C0E8U) /**< \brief (PWM1) PWM Write Protection Status Register */ + #define REG_PWM1_VERSION (0x4005C0FCU) /**< \brief (PWM1) Version Register */ + #define REG_PWM1_CMPV0 (0x4005C130U) /**< \brief (PWM1) PWM Comparison 0 Value Register */ + #define REG_PWM1_CMPVUPD0 (0x4005C134U) /**< \brief (PWM1) PWM Comparison 0 Value Update Register */ + #define REG_PWM1_CMPM0 (0x4005C138U) /**< \brief (PWM1) PWM Comparison 0 Mode Register */ + #define REG_PWM1_CMPMUPD0 (0x4005C13CU) /**< \brief (PWM1) PWM Comparison 0 Mode Update Register */ + #define REG_PWM1_CMPV1 (0x4005C140U) /**< \brief (PWM1) PWM Comparison 1 Value Register */ + #define REG_PWM1_CMPVUPD1 (0x4005C144U) /**< \brief (PWM1) PWM Comparison 1 Value Update Register */ + #define REG_PWM1_CMPM1 (0x4005C148U) /**< \brief (PWM1) PWM Comparison 1 Mode Register */ + #define REG_PWM1_CMPMUPD1 (0x4005C14CU) /**< \brief (PWM1) PWM Comparison 1 Mode Update Register */ + #define REG_PWM1_CMPV2 (0x4005C150U) /**< \brief (PWM1) PWM Comparison 2 Value Register */ + #define REG_PWM1_CMPVUPD2 (0x4005C154U) /**< \brief (PWM1) PWM Comparison 2 Value Update Register */ + #define REG_PWM1_CMPM2 (0x4005C158U) /**< \brief (PWM1) PWM Comparison 2 Mode Register */ + #define REG_PWM1_CMPMUPD2 (0x4005C15CU) /**< \brief (PWM1) PWM Comparison 2 Mode Update Register */ + #define REG_PWM1_CMPV3 (0x4005C160U) /**< \brief (PWM1) PWM Comparison 3 Value Register */ + #define REG_PWM1_CMPVUPD3 (0x4005C164U) /**< \brief (PWM1) PWM Comparison 3 Value Update Register */ + #define REG_PWM1_CMPM3 (0x4005C168U) /**< \brief (PWM1) PWM Comparison 3 Mode Register */ + #define REG_PWM1_CMPMUPD3 (0x4005C16CU) /**< \brief (PWM1) PWM Comparison 3 Mode Update Register */ + #define REG_PWM1_CMPV4 (0x4005C170U) /**< \brief (PWM1) PWM Comparison 4 Value Register */ + #define REG_PWM1_CMPVUPD4 (0x4005C174U) /**< \brief (PWM1) PWM Comparison 4 Value Update Register */ + #define REG_PWM1_CMPM4 (0x4005C178U) /**< \brief (PWM1) PWM Comparison 4 Mode Register */ + #define REG_PWM1_CMPMUPD4 (0x4005C17CU) /**< \brief (PWM1) PWM Comparison 4 Mode Update Register */ + #define REG_PWM1_CMPV5 (0x4005C180U) /**< \brief (PWM1) PWM Comparison 5 Value Register */ + #define REG_PWM1_CMPVUPD5 (0x4005C184U) /**< \brief (PWM1) PWM Comparison 5 Value Update Register */ + #define REG_PWM1_CMPM5 (0x4005C188U) /**< \brief (PWM1) PWM Comparison 5 Mode Register */ + #define REG_PWM1_CMPMUPD5 (0x4005C18CU) /**< \brief (PWM1) PWM Comparison 5 Mode Update Register */ + #define REG_PWM1_CMPV6 (0x4005C190U) /**< \brief (PWM1) PWM Comparison 6 Value Register */ + #define REG_PWM1_CMPVUPD6 (0x4005C194U) /**< \brief (PWM1) PWM Comparison 6 Value Update Register */ + #define REG_PWM1_CMPM6 (0x4005C198U) /**< \brief (PWM1) PWM Comparison 6 Mode Register */ + #define REG_PWM1_CMPMUPD6 (0x4005C19CU) /**< \brief (PWM1) PWM Comparison 6 Mode Update Register */ + #define REG_PWM1_CMPV7 (0x4005C1A0U) /**< \brief (PWM1) PWM Comparison 7 Value Register */ + #define REG_PWM1_CMPVUPD7 (0x4005C1A4U) /**< \brief (PWM1) PWM Comparison 7 Value Update Register */ + #define REG_PWM1_CMPM7 (0x4005C1A8U) /**< \brief (PWM1) PWM Comparison 7 Mode Register */ + #define REG_PWM1_CMPMUPD7 (0x4005C1ACU) /**< \brief (PWM1) PWM Comparison 7 Mode Update Register */ + #define REG_PWM1_CMR0 (0x4005C200U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 0) */ + #define REG_PWM1_CDTY0 (0x4005C204U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 0) */ + #define REG_PWM1_CDTYUPD0 (0x4005C208U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 0) */ + #define REG_PWM1_CPRD0 (0x4005C20CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 0) */ + #define REG_PWM1_CPRDUPD0 (0x4005C210U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 0) */ + #define REG_PWM1_CCNT0 (0x4005C214U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 0) */ + #define REG_PWM1_DT0 (0x4005C218U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 0) */ + #define REG_PWM1_DTUPD0 (0x4005C21CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 0) */ + #define REG_PWM1_CMR1 (0x4005C220U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 1) */ + #define REG_PWM1_CDTY1 (0x4005C224U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 1) */ + #define REG_PWM1_CDTYUPD1 (0x4005C228U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 1) */ + #define REG_PWM1_CPRD1 (0x4005C22CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 1) */ + #define REG_PWM1_CPRDUPD1 (0x4005C230U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 1) */ + #define REG_PWM1_CCNT1 (0x4005C234U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 1) */ + #define REG_PWM1_DT1 (0x4005C238U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 1) */ + #define REG_PWM1_DTUPD1 (0x4005C23CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 1) */ + #define REG_PWM1_CMR2 (0x4005C240U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 2) */ + #define REG_PWM1_CDTY2 (0x4005C244U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 2) */ + #define REG_PWM1_CDTYUPD2 (0x4005C248U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 2) */ + #define REG_PWM1_CPRD2 (0x4005C24CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 2) */ + #define REG_PWM1_CPRDUPD2 (0x4005C250U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 2) */ + #define REG_PWM1_CCNT2 (0x4005C254U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 2) */ + #define REG_PWM1_DT2 (0x4005C258U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 2) */ + #define REG_PWM1_DTUPD2 (0x4005C25CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 2) */ + #define REG_PWM1_CMR3 (0x4005C260U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 3) */ + #define REG_PWM1_CDTY3 (0x4005C264U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 3) */ + #define REG_PWM1_CDTYUPD3 (0x4005C268U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 3) */ + #define REG_PWM1_CPRD3 (0x4005C26CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 3) */ + #define REG_PWM1_CPRDUPD3 (0x4005C270U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 3) */ + #define REG_PWM1_CCNT3 (0x4005C274U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 3) */ + #define REG_PWM1_DT3 (0x4005C278U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 3) */ + #define REG_PWM1_DTUPD3 (0x4005C27CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 3) */ + #define REG_PWM1_CMUPD0 (0x4005C400U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 0) */ + #define REG_PWM1_CMUPD1 (0x4005C420U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 1) */ + #define REG_PWM1_ETRG1 (0x4005C42CU) /**< \brief (PWM1) PWM External Trigger Register (trg_num = 1) */ + #define REG_PWM1_LEBR1 (0x4005C430U) /**< \brief (PWM1) PWM Leading-Edge Blanking Register (trg_num = 1) */ + #define REG_PWM1_CMUPD2 (0x4005C440U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 2) */ + #define REG_PWM1_ETRG2 (0x4005C44CU) /**< \brief (PWM1) PWM External Trigger Register (trg_num = 2) */ + #define REG_PWM1_LEBR2 (0x4005C450U) /**< \brief (PWM1) PWM Leading-Edge Blanking Register (trg_num = 2) */ + #define REG_PWM1_CMUPD3 (0x4005C460U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 3) */ +#else + #define REG_PWM1_CLK (*(__IO uint32_t*)0x4005C000U) /**< \brief (PWM1) PWM Clock Register */ + #define REG_PWM1_ENA (*(__O uint32_t*)0x4005C004U) /**< \brief (PWM1) PWM Enable Register */ + #define REG_PWM1_DIS (*(__O uint32_t*)0x4005C008U) /**< \brief (PWM1) PWM Disable Register */ + #define REG_PWM1_SR (*(__I uint32_t*)0x4005C00CU) /**< \brief (PWM1) PWM Status Register */ + #define REG_PWM1_IER1 (*(__O uint32_t*)0x4005C010U) /**< \brief (PWM1) PWM Interrupt Enable Register 1 */ + #define REG_PWM1_IDR1 (*(__O uint32_t*)0x4005C014U) /**< \brief (PWM1) PWM Interrupt Disable Register 1 */ + #define REG_PWM1_IMR1 (*(__I uint32_t*)0x4005C018U) /**< \brief (PWM1) PWM Interrupt Mask Register 1 */ + #define REG_PWM1_ISR1 (*(__I uint32_t*)0x4005C01CU) /**< \brief (PWM1) PWM Interrupt Status Register 1 */ + #define REG_PWM1_SCM (*(__IO uint32_t*)0x4005C020U) /**< \brief (PWM1) PWM Sync Channels Mode Register */ + #define REG_PWM1_DMAR (*(__O uint32_t*)0x4005C024U) /**< \brief (PWM1) PWM DMA Register */ + #define REG_PWM1_SCUC (*(__IO uint32_t*)0x4005C028U) /**< \brief (PWM1) PWM Sync Channels Update Control Register */ + #define REG_PWM1_SCUP (*(__IO uint32_t*)0x4005C02CU) /**< \brief (PWM1) PWM Sync Channels Update Period Register */ + #define REG_PWM1_SCUPUPD (*(__O uint32_t*)0x4005C030U) /**< \brief (PWM1) PWM Sync Channels Update Period Update Register */ + #define REG_PWM1_IER2 (*(__O uint32_t*)0x4005C034U) /**< \brief (PWM1) PWM Interrupt Enable Register 2 */ + #define REG_PWM1_IDR2 (*(__O uint32_t*)0x4005C038U) /**< \brief (PWM1) PWM Interrupt Disable Register 2 */ + #define REG_PWM1_IMR2 (*(__I uint32_t*)0x4005C03CU) /**< \brief (PWM1) PWM Interrupt Mask Register 2 */ + #define REG_PWM1_ISR2 (*(__I uint32_t*)0x4005C040U) /**< \brief (PWM1) PWM Interrupt Status Register 2 */ + #define REG_PWM1_OOV (*(__IO uint32_t*)0x4005C044U) /**< \brief (PWM1) PWM Output Override Value Register */ + #define REG_PWM1_OS (*(__IO uint32_t*)0x4005C048U) /**< \brief (PWM1) PWM Output Selection Register */ + #define REG_PWM1_OSS (*(__O uint32_t*)0x4005C04CU) /**< \brief (PWM1) PWM Output Selection Set Register */ + #define REG_PWM1_OSC (*(__O uint32_t*)0x4005C050U) /**< \brief (PWM1) PWM Output Selection Clear Register */ + #define REG_PWM1_OSSUPD (*(__O uint32_t*)0x4005C054U) /**< \brief (PWM1) PWM Output Selection Set Update Register */ + #define REG_PWM1_OSCUPD (*(__O uint32_t*)0x4005C058U) /**< \brief (PWM1) PWM Output Selection Clear Update Register */ + #define REG_PWM1_FMR (*(__IO uint32_t*)0x4005C05CU) /**< \brief (PWM1) PWM Fault Mode Register */ + #define REG_PWM1_FSR (*(__I uint32_t*)0x4005C060U) /**< \brief (PWM1) PWM Fault Status Register */ + #define REG_PWM1_FCR (*(__O uint32_t*)0x4005C064U) /**< \brief (PWM1) PWM Fault Clear Register */ + #define REG_PWM1_FPV1 (*(__IO uint32_t*)0x4005C068U) /**< \brief (PWM1) PWM Fault Protection Value Register 1 */ + #define REG_PWM1_FPE (*(__IO uint32_t*)0x4005C06CU) /**< \brief (PWM1) PWM Fault Protection Enable Register */ + #define REG_PWM1_ELMR (*(__IO uint32_t*)0x4005C07CU) /**< \brief (PWM1) PWM Event Line 0 Mode Register */ + #define REG_PWM1_SSPR (*(__IO uint32_t*)0x4005C0A0U) /**< \brief (PWM1) PWM Spread Spectrum Register */ + #define REG_PWM1_SSPUP (*(__O uint32_t*)0x4005C0A4U) /**< \brief (PWM1) PWM Spread Spectrum Update Register */ + #define REG_PWM1_SMMR (*(__IO uint32_t*)0x4005C0B0U) /**< \brief (PWM1) PWM Stepper Motor Mode Register */ + #define REG_PWM1_FPV2 (*(__IO uint32_t*)0x4005C0C0U) /**< \brief (PWM1) PWM Fault Protection Value 2 Register */ + #define REG_PWM1_WPCR (*(__O uint32_t*)0x4005C0E4U) /**< \brief (PWM1) PWM Write Protection Control Register */ + #define REG_PWM1_WPSR (*(__I uint32_t*)0x4005C0E8U) /**< \brief (PWM1) PWM Write Protection Status Register */ + #define REG_PWM1_VERSION (*(__I uint32_t*)0x4005C0FCU) /**< \brief (PWM1) Version Register */ + #define REG_PWM1_CMPV0 (*(__IO uint32_t*)0x4005C130U) /**< \brief (PWM1) PWM Comparison 0 Value Register */ + #define REG_PWM1_CMPVUPD0 (*(__O uint32_t*)0x4005C134U) /**< \brief (PWM1) PWM Comparison 0 Value Update Register */ + #define REG_PWM1_CMPM0 (*(__IO uint32_t*)0x4005C138U) /**< \brief (PWM1) PWM Comparison 0 Mode Register */ + #define REG_PWM1_CMPMUPD0 (*(__O uint32_t*)0x4005C13CU) /**< \brief (PWM1) PWM Comparison 0 Mode Update Register */ + #define REG_PWM1_CMPV1 (*(__IO uint32_t*)0x4005C140U) /**< \brief (PWM1) PWM Comparison 1 Value Register */ + #define REG_PWM1_CMPVUPD1 (*(__O uint32_t*)0x4005C144U) /**< \brief (PWM1) PWM Comparison 1 Value Update Register */ + #define REG_PWM1_CMPM1 (*(__IO uint32_t*)0x4005C148U) /**< \brief (PWM1) PWM Comparison 1 Mode Register */ + #define REG_PWM1_CMPMUPD1 (*(__O uint32_t*)0x4005C14CU) /**< \brief (PWM1) PWM Comparison 1 Mode Update Register */ + #define REG_PWM1_CMPV2 (*(__IO uint32_t*)0x4005C150U) /**< \brief (PWM1) PWM Comparison 2 Value Register */ + #define REG_PWM1_CMPVUPD2 (*(__O uint32_t*)0x4005C154U) /**< \brief (PWM1) PWM Comparison 2 Value Update Register */ + #define REG_PWM1_CMPM2 (*(__IO uint32_t*)0x4005C158U) /**< \brief (PWM1) PWM Comparison 2 Mode Register */ + #define REG_PWM1_CMPMUPD2 (*(__O uint32_t*)0x4005C15CU) /**< \brief (PWM1) PWM Comparison 2 Mode Update Register */ + #define REG_PWM1_CMPV3 (*(__IO uint32_t*)0x4005C160U) /**< \brief (PWM1) PWM Comparison 3 Value Register */ + #define REG_PWM1_CMPVUPD3 (*(__O uint32_t*)0x4005C164U) /**< \brief (PWM1) PWM Comparison 3 Value Update Register */ + #define REG_PWM1_CMPM3 (*(__IO uint32_t*)0x4005C168U) /**< \brief (PWM1) PWM Comparison 3 Mode Register */ + #define REG_PWM1_CMPMUPD3 (*(__O uint32_t*)0x4005C16CU) /**< \brief (PWM1) PWM Comparison 3 Mode Update Register */ + #define REG_PWM1_CMPV4 (*(__IO uint32_t*)0x4005C170U) /**< \brief (PWM1) PWM Comparison 4 Value Register */ + #define REG_PWM1_CMPVUPD4 (*(__O uint32_t*)0x4005C174U) /**< \brief (PWM1) PWM Comparison 4 Value Update Register */ + #define REG_PWM1_CMPM4 (*(__IO uint32_t*)0x4005C178U) /**< \brief (PWM1) PWM Comparison 4 Mode Register */ + #define REG_PWM1_CMPMUPD4 (*(__O uint32_t*)0x4005C17CU) /**< \brief (PWM1) PWM Comparison 4 Mode Update Register */ + #define REG_PWM1_CMPV5 (*(__IO uint32_t*)0x4005C180U) /**< \brief (PWM1) PWM Comparison 5 Value Register */ + #define REG_PWM1_CMPVUPD5 (*(__O uint32_t*)0x4005C184U) /**< \brief (PWM1) PWM Comparison 5 Value Update Register */ + #define REG_PWM1_CMPM5 (*(__IO uint32_t*)0x4005C188U) /**< \brief (PWM1) PWM Comparison 5 Mode Register */ + #define REG_PWM1_CMPMUPD5 (*(__O uint32_t*)0x4005C18CU) /**< \brief (PWM1) PWM Comparison 5 Mode Update Register */ + #define REG_PWM1_CMPV6 (*(__IO uint32_t*)0x4005C190U) /**< \brief (PWM1) PWM Comparison 6 Value Register */ + #define REG_PWM1_CMPVUPD6 (*(__O uint32_t*)0x4005C194U) /**< \brief (PWM1) PWM Comparison 6 Value Update Register */ + #define REG_PWM1_CMPM6 (*(__IO uint32_t*)0x4005C198U) /**< \brief (PWM1) PWM Comparison 6 Mode Register */ + #define REG_PWM1_CMPMUPD6 (*(__O uint32_t*)0x4005C19CU) /**< \brief (PWM1) PWM Comparison 6 Mode Update Register */ + #define REG_PWM1_CMPV7 (*(__IO uint32_t*)0x4005C1A0U) /**< \brief (PWM1) PWM Comparison 7 Value Register */ + #define REG_PWM1_CMPVUPD7 (*(__O uint32_t*)0x4005C1A4U) /**< \brief (PWM1) PWM Comparison 7 Value Update Register */ + #define REG_PWM1_CMPM7 (*(__IO uint32_t*)0x4005C1A8U) /**< \brief (PWM1) PWM Comparison 7 Mode Register */ + #define REG_PWM1_CMPMUPD7 (*(__O uint32_t*)0x4005C1ACU) /**< \brief (PWM1) PWM Comparison 7 Mode Update Register */ + #define REG_PWM1_CMR0 (*(__IO uint32_t*)0x4005C200U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 0) */ + #define REG_PWM1_CDTY0 (*(__IO uint32_t*)0x4005C204U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 0) */ + #define REG_PWM1_CDTYUPD0 (*(__O uint32_t*)0x4005C208U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 0) */ + #define REG_PWM1_CPRD0 (*(__IO uint32_t*)0x4005C20CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 0) */ + #define REG_PWM1_CPRDUPD0 (*(__O uint32_t*)0x4005C210U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 0) */ + #define REG_PWM1_CCNT0 (*(__I uint32_t*)0x4005C214U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 0) */ + #define REG_PWM1_DT0 (*(__IO uint32_t*)0x4005C218U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 0) */ + #define REG_PWM1_DTUPD0 (*(__O uint32_t*)0x4005C21CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 0) */ + #define REG_PWM1_CMR1 (*(__IO uint32_t*)0x4005C220U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 1) */ + #define REG_PWM1_CDTY1 (*(__IO uint32_t*)0x4005C224U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 1) */ + #define REG_PWM1_CDTYUPD1 (*(__O uint32_t*)0x4005C228U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 1) */ + #define REG_PWM1_CPRD1 (*(__IO uint32_t*)0x4005C22CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 1) */ + #define REG_PWM1_CPRDUPD1 (*(__O uint32_t*)0x4005C230U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 1) */ + #define REG_PWM1_CCNT1 (*(__I uint32_t*)0x4005C234U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 1) */ + #define REG_PWM1_DT1 (*(__IO uint32_t*)0x4005C238U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 1) */ + #define REG_PWM1_DTUPD1 (*(__O uint32_t*)0x4005C23CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 1) */ + #define REG_PWM1_CMR2 (*(__IO uint32_t*)0x4005C240U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 2) */ + #define REG_PWM1_CDTY2 (*(__IO uint32_t*)0x4005C244U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 2) */ + #define REG_PWM1_CDTYUPD2 (*(__O uint32_t*)0x4005C248U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 2) */ + #define REG_PWM1_CPRD2 (*(__IO uint32_t*)0x4005C24CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 2) */ + #define REG_PWM1_CPRDUPD2 (*(__O uint32_t*)0x4005C250U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 2) */ + #define REG_PWM1_CCNT2 (*(__I uint32_t*)0x4005C254U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 2) */ + #define REG_PWM1_DT2 (*(__IO uint32_t*)0x4005C258U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 2) */ + #define REG_PWM1_DTUPD2 (*(__O uint32_t*)0x4005C25CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 2) */ + #define REG_PWM1_CMR3 (*(__IO uint32_t*)0x4005C260U) /**< \brief (PWM1) PWM Channel Mode Register (ch_num = 3) */ + #define REG_PWM1_CDTY3 (*(__IO uint32_t*)0x4005C264U) /**< \brief (PWM1) PWM Channel Duty Cycle Register (ch_num = 3) */ + #define REG_PWM1_CDTYUPD3 (*(__O uint32_t*)0x4005C268U) /**< \brief (PWM1) PWM Channel Duty Cycle Update Register (ch_num = 3) */ + #define REG_PWM1_CPRD3 (*(__IO uint32_t*)0x4005C26CU) /**< \brief (PWM1) PWM Channel Period Register (ch_num = 3) */ + #define REG_PWM1_CPRDUPD3 (*(__O uint32_t*)0x4005C270U) /**< \brief (PWM1) PWM Channel Period Update Register (ch_num = 3) */ + #define REG_PWM1_CCNT3 (*(__I uint32_t*)0x4005C274U) /**< \brief (PWM1) PWM Channel Counter Register (ch_num = 3) */ + #define REG_PWM1_DT3 (*(__IO uint32_t*)0x4005C278U) /**< \brief (PWM1) PWM Channel Dead Time Register (ch_num = 3) */ + #define REG_PWM1_DTUPD3 (*(__O uint32_t*)0x4005C27CU) /**< \brief (PWM1) PWM Channel Dead Time Update Register (ch_num = 3) */ + #define REG_PWM1_CMUPD0 (*(__O uint32_t*)0x4005C400U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 0) */ + #define REG_PWM1_CMUPD1 (*(__O uint32_t*)0x4005C420U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 1) */ + #define REG_PWM1_ETRG1 (*(__IO uint32_t*)0x4005C42CU) /**< \brief (PWM1) PWM External Trigger Register (trg_num = 1) */ + #define REG_PWM1_LEBR1 (*(__IO uint32_t*)0x4005C430U) /**< \brief (PWM1) PWM Leading-Edge Blanking Register (trg_num = 1) */ + #define REG_PWM1_CMUPD2 (*(__O uint32_t*)0x4005C440U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 2) */ + #define REG_PWM1_ETRG2 (*(__IO uint32_t*)0x4005C44CU) /**< \brief (PWM1) PWM External Trigger Register (trg_num = 2) */ + #define REG_PWM1_LEBR2 (*(__IO uint32_t*)0x4005C450U) /**< \brief (PWM1) PWM Leading-Edge Blanking Register (trg_num = 2) */ + #define REG_PWM1_CMUPD3 (*(__O uint32_t*)0x4005C460U) /**< \brief (PWM1) PWM Channel Mode Update Register (ch_num = 3) */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_PWM1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h new file mode 100644 index 00000000..0705e815 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h @@ -0,0 +1,77 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_QSPI_INSTANCE_ +#define _SAME70_QSPI_INSTANCE_ + +/* ========== Register definition for QSPI peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_QSPI_CR (0x4007C000U) /**< \brief (QSPI) Control Register */ + #define REG_QSPI_MR (0x4007C004U) /**< \brief (QSPI) Mode Register */ + #define REG_QSPI_RDR (0x4007C008U) /**< \brief (QSPI) Receive Data Register */ + #define REG_QSPI_TDR (0x4007C00CU) /**< \brief (QSPI) Transmit Data Register */ + #define REG_QSPI_SR (0x4007C010U) /**< \brief (QSPI) Status Register */ + #define REG_QSPI_IER (0x4007C014U) /**< \brief (QSPI) Interrupt Enable Register */ + #define REG_QSPI_IDR (0x4007C018U) /**< \brief (QSPI) Interrupt Disable Register */ + #define REG_QSPI_IMR (0x4007C01CU) /**< \brief (QSPI) Interrupt Mask Register */ + #define REG_QSPI_SCR (0x4007C020U) /**< \brief (QSPI) Serial Clock Register */ + #define REG_QSPI_IAR (0x4007C030U) /**< \brief (QSPI) Instruction Address Register */ + #define REG_QSPI_ICR (0x4007C034U) /**< \brief (QSPI) Instruction Code Register */ + #define REG_QSPI_IFR (0x4007C038U) /**< \brief (QSPI) Instruction Frame Register */ + #define REG_QSPI_SMR (0x4007C040U) /**< \brief (QSPI) Scrambling Mode Register */ + #define REG_QSPI_SKR (0x4007C044U) /**< \brief (QSPI) Scrambling Key Register */ + #define REG_QSPI_WPMR (0x4007C0E4U) /**< \brief (QSPI) Write Protection Mode Register */ + #define REG_QSPI_WPSR (0x4007C0E8U) /**< \brief (QSPI) Write Protection Status Register */ + #define REG_QSPI_VERSION (0x4007C0FCU) /**< \brief (QSPI) Version Register */ +#else + #define REG_QSPI_CR (*(__O uint32_t*)0x4007C000U) /**< \brief (QSPI) Control Register */ + #define REG_QSPI_MR (*(__IO uint32_t*)0x4007C004U) /**< \brief (QSPI) Mode Register */ + #define REG_QSPI_RDR (*(__I uint32_t*)0x4007C008U) /**< \brief (QSPI) Receive Data Register */ + #define REG_QSPI_TDR (*(__O uint32_t*)0x4007C00CU) /**< \brief (QSPI) Transmit Data Register */ + #define REG_QSPI_SR (*(__I uint32_t*)0x4007C010U) /**< \brief (QSPI) Status Register */ + #define REG_QSPI_IER (*(__O uint32_t*)0x4007C014U) /**< \brief (QSPI) Interrupt Enable Register */ + #define REG_QSPI_IDR (*(__O uint32_t*)0x4007C018U) /**< \brief (QSPI) Interrupt Disable Register */ + #define REG_QSPI_IMR (*(__I uint32_t*)0x4007C01CU) /**< \brief (QSPI) Interrupt Mask Register */ + #define REG_QSPI_SCR (*(__IO uint32_t*)0x4007C020U) /**< \brief (QSPI) Serial Clock Register */ + #define REG_QSPI_IAR (*(__IO uint32_t*)0x4007C030U) /**< \brief (QSPI) Instruction Address Register */ + #define REG_QSPI_ICR (*(__IO uint32_t*)0x4007C034U) /**< \brief (QSPI) Instruction Code Register */ + #define REG_QSPI_IFR (*(__IO uint32_t*)0x4007C038U) /**< \brief (QSPI) Instruction Frame Register */ + #define REG_QSPI_SMR (*(__IO uint32_t*)0x4007C040U) /**< \brief (QSPI) Scrambling Mode Register */ + #define REG_QSPI_SKR (*(__O uint32_t*)0x4007C044U) /**< \brief (QSPI) Scrambling Key Register */ + #define REG_QSPI_WPMR (*(__IO uint32_t*)0x4007C0E4U) /**< \brief (QSPI) Write Protection Mode Register */ + #define REG_QSPI_WPSR (*(__I uint32_t*)0x4007C0E8U) /**< \brief (QSPI) Write Protection Status Register */ + #define REG_QSPI_VERSION (*(__I uint32_t*)0x4007C0FCU) /**< \brief (QSPI) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_QSPI_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h new file mode 100644 index 00000000..d9a2e52b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h @@ -0,0 +1,49 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RSTC_INSTANCE_ +#define _SAME70_RSTC_INSTANCE_ + +/* ========== Register definition for RSTC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_RSTC_CR (0x400E1800U) /**< \brief (RSTC) Control Register */ + #define REG_RSTC_SR (0x400E1804U) /**< \brief (RSTC) Status Register */ + #define REG_RSTC_MR (0x400E1808U) /**< \brief (RSTC) Mode Register */ +#else + #define REG_RSTC_CR (*(__O uint32_t*)0x400E1800U) /**< \brief (RSTC) Control Register */ + #define REG_RSTC_SR (*(__I uint32_t*)0x400E1804U) /**< \brief (RSTC) Status Register */ + #define REG_RSTC_MR (*(__IO uint32_t*)0x400E1808U) /**< \brief (RSTC) Mode Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_RSTC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h new file mode 100644 index 00000000..572d024d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h @@ -0,0 +1,48 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70_RSWDT_INSTANCE_ +#define _SAME70_RSWDT_INSTANCE_ + +/* ========== Register definition for RSWDT peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_RSWDT_CR (0x400E1900U) /**< \brief (RSWDT) Control Register */ + #define REG_RSWDT_MR (0x400E1904U) /**< \brief (RSWDT) Mode Register */ + #define REG_RSWDT_SR (0x400E1908U) /**< \brief (RSWDT) Status Register */ +#else + #define REG_RSWDT_CR (*(__O uint32_t*)0x400E1900U) /**< \brief (RSWDT) Control Register */ + #define REG_RSWDT_MR (*(__IO uint32_t*)0x400E1904U) /**< \brief (RSWDT) Mode Register */ + #define REG_RSWDT_SR (*(__I uint32_t*)0x400E1908U) /**< \brief (RSWDT) Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_RSWDT_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h new file mode 100644 index 00000000..cdbd2bee --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h @@ -0,0 +1,71 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RTC_INSTANCE_ +#define _SAME70_RTC_INSTANCE_ + +/* ========== Register definition for RTC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_RTC_CR (0x400E1860U) /**< \brief (RTC) Control Register */ + #define REG_RTC_MR (0x400E1864U) /**< \brief (RTC) Mode Register */ + #define REG_RTC_TIMR (0x400E1868U) /**< \brief (RTC) Time Register */ + #define REG_RTC_CALR (0x400E186CU) /**< \brief (RTC) Calendar Register */ + #define REG_RTC_TIMALR (0x400E1870U) /**< \brief (RTC) Time Alarm Register */ + #define REG_RTC_CALALR (0x400E1874U) /**< \brief (RTC) Calendar Alarm Register */ + #define REG_RTC_SR (0x400E1878U) /**< \brief (RTC) Status Register */ + #define REG_RTC_SCCR (0x400E187CU) /**< \brief (RTC) Status Clear Command Register */ + #define REG_RTC_IER (0x400E1880U) /**< \brief (RTC) Interrupt Enable Register */ + #define REG_RTC_IDR (0x400E1884U) /**< \brief (RTC) Interrupt Disable Register */ + #define REG_RTC_IMR (0x400E1888U) /**< \brief (RTC) Interrupt Mask Register */ + #define REG_RTC_VER (0x400E188CU) /**< \brief (RTC) Valid Entry Register */ + #define REG_RTC_WPMR (0x400E1944U) /**< \brief (RTC) Write Protection Mode Register */ + #define REG_RTC_VERSION (0x400E195CU) /**< \brief (RTC) Version Register */ +#else + #define REG_RTC_CR (*(__IO uint32_t*)0x400E1860U) /**< \brief (RTC) Control Register */ + #define REG_RTC_MR (*(__IO uint32_t*)0x400E1864U) /**< \brief (RTC) Mode Register */ + #define REG_RTC_TIMR (*(__IO uint32_t*)0x400E1868U) /**< \brief (RTC) Time Register */ + #define REG_RTC_CALR (*(__IO uint32_t*)0x400E186CU) /**< \brief (RTC) Calendar Register */ + #define REG_RTC_TIMALR (*(__IO uint32_t*)0x400E1870U) /**< \brief (RTC) Time Alarm Register */ + #define REG_RTC_CALALR (*(__IO uint32_t*)0x400E1874U) /**< \brief (RTC) Calendar Alarm Register */ + #define REG_RTC_SR (*(__I uint32_t*)0x400E1878U) /**< \brief (RTC) Status Register */ + #define REG_RTC_SCCR (*(__O uint32_t*)0x400E187CU) /**< \brief (RTC) Status Clear Command Register */ + #define REG_RTC_IER (*(__O uint32_t*)0x400E1880U) /**< \brief (RTC) Interrupt Enable Register */ + #define REG_RTC_IDR (*(__O uint32_t*)0x400E1884U) /**< \brief (RTC) Interrupt Disable Register */ + #define REG_RTC_IMR (*(__I uint32_t*)0x400E1888U) /**< \brief (RTC) Interrupt Mask Register */ + #define REG_RTC_VER (*(__I uint32_t*)0x400E188CU) /**< \brief (RTC) Valid Entry Register */ + #define REG_RTC_WPMR (*(__IO uint32_t*)0x400E1944U) /**< \brief (RTC) Write Protection Mode Register */ + #define REG_RTC_VERSION (*(__I uint32_t*)0x400E195CU) /**< \brief (RTC) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_RTC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h new file mode 100644 index 00000000..d156c84f --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h @@ -0,0 +1,51 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_RTT_INSTANCE_ +#define _SAME70_RTT_INSTANCE_ + +/* ========== Register definition for RTT peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_RTT_MR (0x400E1830U) /**< \brief (RTT) Mode Register */ + #define REG_RTT_AR (0x400E1834U) /**< \brief (RTT) Alarm Register */ + #define REG_RTT_VR (0x400E1838U) /**< \brief (RTT) Value Register */ + #define REG_RTT_SR (0x400E183CU) /**< \brief (RTT) Status Register */ +#else + #define REG_RTT_MR (*(__IO uint32_t*)0x400E1830U) /**< \brief (RTT) Mode Register */ + #define REG_RTT_AR (*(__IO uint32_t*)0x400E1834U) /**< \brief (RTT) Alarm Register */ + #define REG_RTT_VR (*(__I uint32_t*)0x400E1838U) /**< \brief (RTT) Value Register */ + #define REG_RTT_SR (*(__I uint32_t*)0x400E183CU) /**< \brief (RTT) Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_RTT_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h new file mode 100644 index 00000000..ee229408 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h @@ -0,0 +1,71 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SDRAMC_INSTANCE_ +#define _SAME70_SDRAMC_INSTANCE_ + +/* ========== Register definition for SDRAMC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_SDRAMC_MR (0x40084000U) /**< \brief (SDRAMC) SDRAMC Mode Register */ + #define REG_SDRAMC_TR (0x40084004U) /**< \brief (SDRAMC) SDRAMC Refresh Timer Register */ + #define REG_SDRAMC_CR (0x40084008U) /**< \brief (SDRAMC) SDRAMC Configuration Register */ + #define REG_SDRAMC_LPR (0x40084010U) /**< \brief (SDRAMC) SDRAMC Low Power Register */ + #define REG_SDRAMC_IER (0x40084014U) /**< \brief (SDRAMC) SDRAMC Interrupt Enable Register */ + #define REG_SDRAMC_IDR (0x40084018U) /**< \brief (SDRAMC) SDRAMC Interrupt Disable Register */ + #define REG_SDRAMC_IMR (0x4008401CU) /**< \brief (SDRAMC) SDRAMC Interrupt Mask Register */ + #define REG_SDRAMC_ISR (0x40084020U) /**< \brief (SDRAMC) SDRAMC Interrupt Status Register */ + #define REG_SDRAMC_MDR (0x40084024U) /**< \brief (SDRAMC) SDRAMC Memory Device Register */ + #define REG_SDRAMC_CFR1 (0x40084028U) /**< \brief (SDRAMC) SDRAMC Configuration Register 1 */ + #define REG_SDRAMC_OCMS (0x4008402CU) /**< \brief (SDRAMC) SDRAMC OCMS Register */ + #define REG_SDRAMC_OCMS_KEY1 (0x40084030U) /**< \brief (SDRAMC) SDRAMC OCMS KEY1 Register */ + #define REG_SDRAMC_OCMS_KEY2 (0x40084034U) /**< \brief (SDRAMC) SDRAMC OCMS KEY2 Register */ + #define REG_SDRAMC_VERSION (0x400840FCU) /**< \brief (SDRAMC) SDRAMC Version Register */ +#else + #define REG_SDRAMC_MR (*(__IO uint32_t*)0x40084000U) /**< \brief (SDRAMC) SDRAMC Mode Register */ + #define REG_SDRAMC_TR (*(__IO uint32_t*)0x40084004U) /**< \brief (SDRAMC) SDRAMC Refresh Timer Register */ + #define REG_SDRAMC_CR (*(__IO uint32_t*)0x40084008U) /**< \brief (SDRAMC) SDRAMC Configuration Register */ + #define REG_SDRAMC_LPR (*(__IO uint32_t*)0x40084010U) /**< \brief (SDRAMC) SDRAMC Low Power Register */ + #define REG_SDRAMC_IER (*(__O uint32_t*)0x40084014U) /**< \brief (SDRAMC) SDRAMC Interrupt Enable Register */ + #define REG_SDRAMC_IDR (*(__O uint32_t*)0x40084018U) /**< \brief (SDRAMC) SDRAMC Interrupt Disable Register */ + #define REG_SDRAMC_IMR (*(__I uint32_t*)0x4008401CU) /**< \brief (SDRAMC) SDRAMC Interrupt Mask Register */ + #define REG_SDRAMC_ISR (*(__I uint32_t*)0x40084020U) /**< \brief (SDRAMC) SDRAMC Interrupt Status Register */ + #define REG_SDRAMC_MDR (*(__IO uint32_t*)0x40084024U) /**< \brief (SDRAMC) SDRAMC Memory Device Register */ + #define REG_SDRAMC_CFR1 (*(__IO uint32_t*)0x40084028U) /**< \brief (SDRAMC) SDRAMC Configuration Register 1 */ + #define REG_SDRAMC_OCMS (*(__IO uint32_t*)0x4008402CU) /**< \brief (SDRAMC) SDRAMC OCMS Register */ + #define REG_SDRAMC_OCMS_KEY1 (*(__O uint32_t*)0x40084030U) /**< \brief (SDRAMC) SDRAMC OCMS KEY1 Register */ + #define REG_SDRAMC_OCMS_KEY2 (*(__O uint32_t*)0x40084034U) /**< \brief (SDRAMC) SDRAMC OCMS KEY2 Register */ + #define REG_SDRAMC_VERSION (*(__I uint32_t*)0x400840FCU) /**< \brief (SDRAMC) SDRAMC Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_SDRAMC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h new file mode 100644 index 00000000..9a5c8776 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h @@ -0,0 +1,87 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SMC_INSTANCE_ +#define _SAME70_SMC_INSTANCE_ + +/* ========== Register definition for SMC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_SMC_SETUP0 (0x40080000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ + #define REG_SMC_PULSE0 (0x40080004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ + #define REG_SMC_CYCLE0 (0x40080008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ + #define REG_SMC_MODE0 (0x4008000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ + #define REG_SMC_SETUP1 (0x40080010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ + #define REG_SMC_PULSE1 (0x40080014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ + #define REG_SMC_CYCLE1 (0x40080018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ + #define REG_SMC_MODE1 (0x4008001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ + #define REG_SMC_SETUP2 (0x40080020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ + #define REG_SMC_PULSE2 (0x40080024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ + #define REG_SMC_CYCLE2 (0x40080028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ + #define REG_SMC_MODE2 (0x4008002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ + #define REG_SMC_SETUP3 (0x40080030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ + #define REG_SMC_PULSE3 (0x40080034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ + #define REG_SMC_CYCLE3 (0x40080038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ + #define REG_SMC_MODE3 (0x4008003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ + #define REG_SMC_OCMS (0x40080080U) /**< \brief (SMC) SMC Off-Chip Memory Scrambling Register */ + #define REG_SMC_KEY1 (0x40080084U) /**< \brief (SMC) SMC Off-Chip Memory Scrambling KEY1 Register */ + #define REG_SMC_KEY2 (0x40080088U) /**< \brief (SMC) SMC Off-Chip Memory Scrambling KEY2 Register */ + #define REG_SMC_WPMR (0x400800E4U) /**< \brief (SMC) SMC Write Protection Mode Register */ + #define REG_SMC_WPSR (0x400800E8U) /**< \brief (SMC) SMC Write Protection Status Register */ + #define REG_SMC_VERSION (0x400800FCU) /**< \brief (SMC) SMC Version Register */ +#else + #define REG_SMC_SETUP0 (*(__IO uint32_t*)0x40080000U) /**< \brief (SMC) SMC Setup Register (CS_number = 0) */ + #define REG_SMC_PULSE0 (*(__IO uint32_t*)0x40080004U) /**< \brief (SMC) SMC Pulse Register (CS_number = 0) */ + #define REG_SMC_CYCLE0 (*(__IO uint32_t*)0x40080008U) /**< \brief (SMC) SMC Cycle Register (CS_number = 0) */ + #define REG_SMC_MODE0 (*(__IO uint32_t*)0x4008000CU) /**< \brief (SMC) SMC Mode Register (CS_number = 0) */ + #define REG_SMC_SETUP1 (*(__IO uint32_t*)0x40080010U) /**< \brief (SMC) SMC Setup Register (CS_number = 1) */ + #define REG_SMC_PULSE1 (*(__IO uint32_t*)0x40080014U) /**< \brief (SMC) SMC Pulse Register (CS_number = 1) */ + #define REG_SMC_CYCLE1 (*(__IO uint32_t*)0x40080018U) /**< \brief (SMC) SMC Cycle Register (CS_number = 1) */ + #define REG_SMC_MODE1 (*(__IO uint32_t*)0x4008001CU) /**< \brief (SMC) SMC Mode Register (CS_number = 1) */ + #define REG_SMC_SETUP2 (*(__IO uint32_t*)0x40080020U) /**< \brief (SMC) SMC Setup Register (CS_number = 2) */ + #define REG_SMC_PULSE2 (*(__IO uint32_t*)0x40080024U) /**< \brief (SMC) SMC Pulse Register (CS_number = 2) */ + #define REG_SMC_CYCLE2 (*(__IO uint32_t*)0x40080028U) /**< \brief (SMC) SMC Cycle Register (CS_number = 2) */ + #define REG_SMC_MODE2 (*(__IO uint32_t*)0x4008002CU) /**< \brief (SMC) SMC Mode Register (CS_number = 2) */ + #define REG_SMC_SETUP3 (*(__IO uint32_t*)0x40080030U) /**< \brief (SMC) SMC Setup Register (CS_number = 3) */ + #define REG_SMC_PULSE3 (*(__IO uint32_t*)0x40080034U) /**< \brief (SMC) SMC Pulse Register (CS_number = 3) */ + #define REG_SMC_CYCLE3 (*(__IO uint32_t*)0x40080038U) /**< \brief (SMC) SMC Cycle Register (CS_number = 3) */ + #define REG_SMC_MODE3 (*(__IO uint32_t*)0x4008003CU) /**< \brief (SMC) SMC Mode Register (CS_number = 3) */ + #define REG_SMC_OCMS (*(__IO uint32_t*)0x40080080U) /**< \brief (SMC) SMC Off-Chip Memory Scrambling Register */ + #define REG_SMC_KEY1 (*(__O uint32_t*)0x40080084U) /**< \brief (SMC) SMC Off-Chip Memory Scrambling KEY1 Register */ + #define REG_SMC_KEY2 (*(__O uint32_t*)0x40080088U) /**< \brief (SMC) SMC Off-Chip Memory Scrambling KEY2 Register */ + #define REG_SMC_WPMR (*(__IO uint32_t*)0x400800E4U) /**< \brief (SMC) SMC Write Protection Mode Register */ + #define REG_SMC_WPSR (*(__I uint32_t*)0x400800E8U) /**< \brief (SMC) SMC Write Protection Status Register */ + #define REG_SMC_VERSION (*(__I uint32_t*)0x400800FCU) /**< \brief (SMC) SMC Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_SMC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h new file mode 100644 index 00000000..52c70284 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h @@ -0,0 +1,67 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SPI0_INSTANCE_ +#define _SAME70_SPI0_INSTANCE_ + +/* ========== Register definition for SPI0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_SPI0_CR (0x40008000U) /**< \brief (SPI0) Control Register */ + #define REG_SPI0_MR (0x40008004U) /**< \brief (SPI0) Mode Register */ + #define REG_SPI0_RDR (0x40008008U) /**< \brief (SPI0) Receive Data Register */ + #define REG_SPI0_TDR (0x4000800CU) /**< \brief (SPI0) Transmit Data Register */ + #define REG_SPI0_SR (0x40008010U) /**< \brief (SPI0) Status Register */ + #define REG_SPI0_IER (0x40008014U) /**< \brief (SPI0) Interrupt Enable Register */ + #define REG_SPI0_IDR (0x40008018U) /**< \brief (SPI0) Interrupt Disable Register */ + #define REG_SPI0_IMR (0x4000801CU) /**< \brief (SPI0) Interrupt Mask Register */ + #define REG_SPI0_CSR (0x40008030U) /**< \brief (SPI0) Chip Select Register (CS_number = 0) */ + #define REG_SPI0_WPMR (0x400080E4U) /**< \brief (SPI0) Write Protection Mode Register */ + #define REG_SPI0_WPSR (0x400080E8U) /**< \brief (SPI0) Write Protection Status Register */ + #define REG_SPI0_VERSION (0x400080FCU) /**< \brief (SPI0) Version Register */ +#else + #define REG_SPI0_CR (*(__O uint32_t*)0x40008000U) /**< \brief (SPI0) Control Register */ + #define REG_SPI0_MR (*(__IO uint32_t*)0x40008004U) /**< \brief (SPI0) Mode Register */ + #define REG_SPI0_RDR (*(__I uint32_t*)0x40008008U) /**< \brief (SPI0) Receive Data Register */ + #define REG_SPI0_TDR (*(__O uint32_t*)0x4000800CU) /**< \brief (SPI0) Transmit Data Register */ + #define REG_SPI0_SR (*(__I uint32_t*)0x40008010U) /**< \brief (SPI0) Status Register */ + #define REG_SPI0_IER (*(__O uint32_t*)0x40008014U) /**< \brief (SPI0) Interrupt Enable Register */ + #define REG_SPI0_IDR (*(__O uint32_t*)0x40008018U) /**< \brief (SPI0) Interrupt Disable Register */ + #define REG_SPI0_IMR (*(__I uint32_t*)0x4000801CU) /**< \brief (SPI0) Interrupt Mask Register */ + #define REG_SPI0_CSR (*(__IO uint32_t*)0x40008030U) /**< \brief (SPI0) Chip Select Register (CS_number = 0) */ + #define REG_SPI0_WPMR (*(__IO uint32_t*)0x400080E4U) /**< \brief (SPI0) Write Protection Mode Register */ + #define REG_SPI0_WPSR (*(__I uint32_t*)0x400080E8U) /**< \brief (SPI0) Write Protection Status Register */ + #define REG_SPI0_VERSION (*(__I uint32_t*)0x400080FCU) /**< \brief (SPI0) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_SPI0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h new file mode 100644 index 00000000..d7db3d07 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h @@ -0,0 +1,67 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SPI1_INSTANCE_ +#define _SAME70_SPI1_INSTANCE_ + +/* ========== Register definition for SPI1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_SPI1_CR (0x40058000U) /**< \brief (SPI1) Control Register */ + #define REG_SPI1_MR (0x40058004U) /**< \brief (SPI1) Mode Register */ + #define REG_SPI1_RDR (0x40058008U) /**< \brief (SPI1) Receive Data Register */ + #define REG_SPI1_TDR (0x4005800CU) /**< \brief (SPI1) Transmit Data Register */ + #define REG_SPI1_SR (0x40058010U) /**< \brief (SPI1) Status Register */ + #define REG_SPI1_IER (0x40058014U) /**< \brief (SPI1) Interrupt Enable Register */ + #define REG_SPI1_IDR (0x40058018U) /**< \brief (SPI1) Interrupt Disable Register */ + #define REG_SPI1_IMR (0x4005801CU) /**< \brief (SPI1) Interrupt Mask Register */ + #define REG_SPI1_CSR (0x40058030U) /**< \brief (SPI1) Chip Select Register (CS_number = 0) */ + #define REG_SPI1_WPMR (0x400580E4U) /**< \brief (SPI1) Write Protection Mode Register */ + #define REG_SPI1_WPSR (0x400580E8U) /**< \brief (SPI1) Write Protection Status Register */ + #define REG_SPI1_VERSION (0x400580FCU) /**< \brief (SPI1) Version Register */ +#else + #define REG_SPI1_CR (*(__O uint32_t*)0x40058000U) /**< \brief (SPI1) Control Register */ + #define REG_SPI1_MR (*(__IO uint32_t*)0x40058004U) /**< \brief (SPI1) Mode Register */ + #define REG_SPI1_RDR (*(__I uint32_t*)0x40058008U) /**< \brief (SPI1) Receive Data Register */ + #define REG_SPI1_TDR (*(__O uint32_t*)0x4005800CU) /**< \brief (SPI1) Transmit Data Register */ + #define REG_SPI1_SR (*(__I uint32_t*)0x40058010U) /**< \brief (SPI1) Status Register */ + #define REG_SPI1_IER (*(__O uint32_t*)0x40058014U) /**< \brief (SPI1) Interrupt Enable Register */ + #define REG_SPI1_IDR (*(__O uint32_t*)0x40058018U) /**< \brief (SPI1) Interrupt Disable Register */ + #define REG_SPI1_IMR (*(__I uint32_t*)0x4005801CU) /**< \brief (SPI1) Interrupt Mask Register */ + #define REG_SPI1_CSR (*(__IO uint32_t*)0x40058030U) /**< \brief (SPI1) Chip Select Register (CS_number = 0) */ + #define REG_SPI1_WPMR (*(__IO uint32_t*)0x400580E4U) /**< \brief (SPI1) Write Protection Mode Register */ + #define REG_SPI1_WPSR (*(__I uint32_t*)0x400580E8U) /**< \brief (SPI1) Write Protection Status Register */ + #define REG_SPI1_VERSION (*(__I uint32_t*)0x400580FCU) /**< \brief (SPI1) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_SPI1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h new file mode 100644 index 00000000..706f13dd --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h @@ -0,0 +1,81 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SSC_INSTANCE_ +#define _SAME70_SSC_INSTANCE_ + +/* ========== Register definition for SSC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_SSC_CR (0x40004000U) /**< \brief (SSC) Control Register */ + #define REG_SSC_CMR (0x40004004U) /**< \brief (SSC) Clock Mode Register */ + #define REG_SSC_RCMR (0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ + #define REG_SSC_RFMR (0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ + #define REG_SSC_TCMR (0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ + #define REG_SSC_TFMR (0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ + #define REG_SSC_RHR (0x40004020U) /**< \brief (SSC) Receive Holding Register */ + #define REG_SSC_THR (0x40004024U) /**< \brief (SSC) Transmit Holding Register */ + #define REG_SSC_RSHR (0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ + #define REG_SSC_TSHR (0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ + #define REG_SSC_RC0R (0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ + #define REG_SSC_RC1R (0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ + #define REG_SSC_SR (0x40004040U) /**< \brief (SSC) Status Register */ + #define REG_SSC_IER (0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ + #define REG_SSC_IDR (0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ + #define REG_SSC_IMR (0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ + #define REG_SSC_WPMR (0x400040E4U) /**< \brief (SSC) Write Protection Mode Register */ + #define REG_SSC_WPSR (0x400040E8U) /**< \brief (SSC) Write Protection Status Register */ + #define REG_SSC_VERSION (0x400040FCU) /**< \brief (SSC) Version Register */ +#else + #define REG_SSC_CR (*(__O uint32_t*)0x40004000U) /**< \brief (SSC) Control Register */ + #define REG_SSC_CMR (*(__IO uint32_t*)0x40004004U) /**< \brief (SSC) Clock Mode Register */ + #define REG_SSC_RCMR (*(__IO uint32_t*)0x40004010U) /**< \brief (SSC) Receive Clock Mode Register */ + #define REG_SSC_RFMR (*(__IO uint32_t*)0x40004014U) /**< \brief (SSC) Receive Frame Mode Register */ + #define REG_SSC_TCMR (*(__IO uint32_t*)0x40004018U) /**< \brief (SSC) Transmit Clock Mode Register */ + #define REG_SSC_TFMR (*(__IO uint32_t*)0x4000401CU) /**< \brief (SSC) Transmit Frame Mode Register */ + #define REG_SSC_RHR (*(__I uint32_t*)0x40004020U) /**< \brief (SSC) Receive Holding Register */ + #define REG_SSC_THR (*(__O uint32_t*)0x40004024U) /**< \brief (SSC) Transmit Holding Register */ + #define REG_SSC_RSHR (*(__I uint32_t*)0x40004030U) /**< \brief (SSC) Receive Sync. Holding Register */ + #define REG_SSC_TSHR (*(__IO uint32_t*)0x40004034U) /**< \brief (SSC) Transmit Sync. Holding Register */ + #define REG_SSC_RC0R (*(__IO uint32_t*)0x40004038U) /**< \brief (SSC) Receive Compare 0 Register */ + #define REG_SSC_RC1R (*(__IO uint32_t*)0x4000403CU) /**< \brief (SSC) Receive Compare 1 Register */ + #define REG_SSC_SR (*(__I uint32_t*)0x40004040U) /**< \brief (SSC) Status Register */ + #define REG_SSC_IER (*(__O uint32_t*)0x40004044U) /**< \brief (SSC) Interrupt Enable Register */ + #define REG_SSC_IDR (*(__O uint32_t*)0x40004048U) /**< \brief (SSC) Interrupt Disable Register */ + #define REG_SSC_IMR (*(__I uint32_t*)0x4000404CU) /**< \brief (SSC) Interrupt Mask Register */ + #define REG_SSC_WPMR (*(__IO uint32_t*)0x400040E4U) /**< \brief (SSC) Write Protection Mode Register */ + #define REG_SSC_WPSR (*(__I uint32_t*)0x400040E8U) /**< \brief (SSC) Write Protection Status Register */ + #define REG_SSC_VERSION (*(__I uint32_t*)0x400040FCU) /**< \brief (SSC) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_SSC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h new file mode 100644 index 00000000..dee9e81b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h @@ -0,0 +1,57 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_SUPC_INSTANCE_ +#define _SAME70_SUPC_INSTANCE_ + +/* ========== Register definition for SUPC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_SUPC_CR (0x400E1810U) /**< \brief (SUPC) Supply Controller Control Register */ + #define REG_SUPC_SMMR (0x400E1814U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ + #define REG_SUPC_MR (0x400E1818U) /**< \brief (SUPC) Supply Controller Mode Register */ + #define REG_SUPC_WUMR (0x400E181CU) /**< \brief (SUPC) Supply Controller Wake-up Mode Register */ + #define REG_SUPC_WUIR (0x400E1820U) /**< \brief (SUPC) Supply Controller Wake-up Inputs Register */ + #define REG_SUPC_SR (0x400E1824U) /**< \brief (SUPC) Supply Controller Status Register */ + #define REG_SYSC_VERSION (0x400E190CU) /**< \brief (SUPC) Version Register */ +#else + #define REG_SUPC_CR (*(__O uint32_t*)0x400E1810U) /**< \brief (SUPC) Supply Controller Control Register */ + #define REG_SUPC_SMMR (*(__IO uint32_t*)0x400E1814U) /**< \brief (SUPC) Supply Controller Supply Monitor Mode Register */ + #define REG_SUPC_MR (*(__IO uint32_t*)0x400E1818U) /**< \brief (SUPC) Supply Controller Mode Register */ + #define REG_SUPC_WUMR (*(__IO uint32_t*)0x400E181CU) /**< \brief (SUPC) Supply Controller Wake-up Mode Register */ + #define REG_SUPC_WUIR (*(__IO uint32_t*)0x400E1820U) /**< \brief (SUPC) Supply Controller Wake-up Inputs Register */ + #define REG_SUPC_SR (*(__I uint32_t*)0x400E1824U) /**< \brief (SUPC) Supply Controller Status Register */ + #define REG_SYSC_VERSION (*(__I uint32_t*)0x400E190CU) /**< \brief (SUPC) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_SUPC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h new file mode 100644 index 00000000..e2cc2461 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h @@ -0,0 +1,139 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TC0_INSTANCE_ +#define _SAME70_TC0_INSTANCE_ + +/* ========== Register definition for TC0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TC0_CCR0 (0x4000C000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ + #define REG_TC0_CMR0 (0x4000C004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ + #define REG_TC0_SMMR0 (0x4000C008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC0_RAB0 (0x4000C00CU) /**< \brief (TC0) Register AB (channel = 0) */ + #define REG_TC0_CV0 (0x4000C010U) /**< \brief (TC0) Counter Value (channel = 0) */ + #define REG_TC0_RA0 (0x4000C014U) /**< \brief (TC0) Register A (channel = 0) */ + #define REG_TC0_RB0 (0x4000C018U) /**< \brief (TC0) Register B (channel = 0) */ + #define REG_TC0_RC0 (0x4000C01CU) /**< \brief (TC0) Register C (channel = 0) */ + #define REG_TC0_SR0 (0x4000C020U) /**< \brief (TC0) Status Register (channel = 0) */ + #define REG_TC0_IER0 (0x4000C024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ + #define REG_TC0_IDR0 (0x4000C028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ + #define REG_TC0_IMR0 (0x4000C02CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ + #define REG_TC0_EMR0 (0x4000C030U) /**< \brief (TC0) Extended Mode Register (channel = 0) */ + #define REG_TC0_CCR1 (0x4000C040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ + #define REG_TC0_CMR1 (0x4000C044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ + #define REG_TC0_SMMR1 (0x4000C048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC0_RAB1 (0x4000C04CU) /**< \brief (TC0) Register AB (channel = 1) */ + #define REG_TC0_CV1 (0x4000C050U) /**< \brief (TC0) Counter Value (channel = 1) */ + #define REG_TC0_RA1 (0x4000C054U) /**< \brief (TC0) Register A (channel = 1) */ + #define REG_TC0_RB1 (0x4000C058U) /**< \brief (TC0) Register B (channel = 1) */ + #define REG_TC0_RC1 (0x4000C05CU) /**< \brief (TC0) Register C (channel = 1) */ + #define REG_TC0_SR1 (0x4000C060U) /**< \brief (TC0) Status Register (channel = 1) */ + #define REG_TC0_IER1 (0x4000C064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ + #define REG_TC0_IDR1 (0x4000C068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ + #define REG_TC0_IMR1 (0x4000C06CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ + #define REG_TC0_EMR1 (0x4000C070U) /**< \brief (TC0) Extended Mode Register (channel = 1) */ + #define REG_TC0_CCR2 (0x4000C080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ + #define REG_TC0_CMR2 (0x4000C084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ + #define REG_TC0_SMMR2 (0x4000C088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC0_RAB2 (0x4000C08CU) /**< \brief (TC0) Register AB (channel = 2) */ + #define REG_TC0_CV2 (0x4000C090U) /**< \brief (TC0) Counter Value (channel = 2) */ + #define REG_TC0_RA2 (0x4000C094U) /**< \brief (TC0) Register A (channel = 2) */ + #define REG_TC0_RB2 (0x4000C098U) /**< \brief (TC0) Register B (channel = 2) */ + #define REG_TC0_RC2 (0x4000C09CU) /**< \brief (TC0) Register C (channel = 2) */ + #define REG_TC0_SR2 (0x4000C0A0U) /**< \brief (TC0) Status Register (channel = 2) */ + #define REG_TC0_IER2 (0x4000C0A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ + #define REG_TC0_IDR2 (0x4000C0A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ + #define REG_TC0_IMR2 (0x4000C0ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ + #define REG_TC0_EMR2 (0x4000C0B0U) /**< \brief (TC0) Extended Mode Register (channel = 2) */ + #define REG_TC0_BCR (0x4000C0C0U) /**< \brief (TC0) Block Control Register */ + #define REG_TC0_BMR (0x4000C0C4U) /**< \brief (TC0) Block Mode Register */ + #define REG_TC0_QIER (0x4000C0C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ + #define REG_TC0_QIDR (0x4000C0CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ + #define REG_TC0_QIMR (0x4000C0D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ + #define REG_TC0_QISR (0x4000C0D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ + #define REG_TC0_FMR (0x4000C0D8U) /**< \brief (TC0) Fault Mode Register */ + #define REG_TC0_WPMR (0x4000C0E4U) /**< \brief (TC0) Write Protection Mode Register */ + #define REG_TC0_VER (0x4000C0FCU) /**< \brief (TC0) Version Register */ +#else + #define REG_TC0_CCR0 (*(__O uint32_t*)0x4000C000U) /**< \brief (TC0) Channel Control Register (channel = 0) */ + #define REG_TC0_CMR0 (*(__IO uint32_t*)0x4000C004U) /**< \brief (TC0) Channel Mode Register (channel = 0) */ + #define REG_TC0_SMMR0 (*(__IO uint32_t*)0x4000C008U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC0_RAB0 (*(__I uint32_t*)0x4000C00CU) /**< \brief (TC0) Register AB (channel = 0) */ + #define REG_TC0_CV0 (*(__I uint32_t*)0x4000C010U) /**< \brief (TC0) Counter Value (channel = 0) */ + #define REG_TC0_RA0 (*(__IO uint32_t*)0x4000C014U) /**< \brief (TC0) Register A (channel = 0) */ + #define REG_TC0_RB0 (*(__IO uint32_t*)0x4000C018U) /**< \brief (TC0) Register B (channel = 0) */ + #define REG_TC0_RC0 (*(__IO uint32_t*)0x4000C01CU) /**< \brief (TC0) Register C (channel = 0) */ + #define REG_TC0_SR0 (*(__I uint32_t*)0x4000C020U) /**< \brief (TC0) Status Register (channel = 0) */ + #define REG_TC0_IER0 (*(__O uint32_t*)0x4000C024U) /**< \brief (TC0) Interrupt Enable Register (channel = 0) */ + #define REG_TC0_IDR0 (*(__O uint32_t*)0x4000C028U) /**< \brief (TC0) Interrupt Disable Register (channel = 0) */ + #define REG_TC0_IMR0 (*(__I uint32_t*)0x4000C02CU) /**< \brief (TC0) Interrupt Mask Register (channel = 0) */ + #define REG_TC0_EMR0 (*(__IO uint32_t*)0x4000C030U) /**< \brief (TC0) Extended Mode Register (channel = 0) */ + #define REG_TC0_CCR1 (*(__O uint32_t*)0x4000C040U) /**< \brief (TC0) Channel Control Register (channel = 1) */ + #define REG_TC0_CMR1 (*(__IO uint32_t*)0x4000C044U) /**< \brief (TC0) Channel Mode Register (channel = 1) */ + #define REG_TC0_SMMR1 (*(__IO uint32_t*)0x4000C048U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC0_RAB1 (*(__I uint32_t*)0x4000C04CU) /**< \brief (TC0) Register AB (channel = 1) */ + #define REG_TC0_CV1 (*(__I uint32_t*)0x4000C050U) /**< \brief (TC0) Counter Value (channel = 1) */ + #define REG_TC0_RA1 (*(__IO uint32_t*)0x4000C054U) /**< \brief (TC0) Register A (channel = 1) */ + #define REG_TC0_RB1 (*(__IO uint32_t*)0x4000C058U) /**< \brief (TC0) Register B (channel = 1) */ + #define REG_TC0_RC1 (*(__IO uint32_t*)0x4000C05CU) /**< \brief (TC0) Register C (channel = 1) */ + #define REG_TC0_SR1 (*(__I uint32_t*)0x4000C060U) /**< \brief (TC0) Status Register (channel = 1) */ + #define REG_TC0_IER1 (*(__O uint32_t*)0x4000C064U) /**< \brief (TC0) Interrupt Enable Register (channel = 1) */ + #define REG_TC0_IDR1 (*(__O uint32_t*)0x4000C068U) /**< \brief (TC0) Interrupt Disable Register (channel = 1) */ + #define REG_TC0_IMR1 (*(__I uint32_t*)0x4000C06CU) /**< \brief (TC0) Interrupt Mask Register (channel = 1) */ + #define REG_TC0_EMR1 (*(__IO uint32_t*)0x4000C070U) /**< \brief (TC0) Extended Mode Register (channel = 1) */ + #define REG_TC0_CCR2 (*(__O uint32_t*)0x4000C080U) /**< \brief (TC0) Channel Control Register (channel = 2) */ + #define REG_TC0_CMR2 (*(__IO uint32_t*)0x4000C084U) /**< \brief (TC0) Channel Mode Register (channel = 2) */ + #define REG_TC0_SMMR2 (*(__IO uint32_t*)0x4000C088U) /**< \brief (TC0) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC0_RAB2 (*(__I uint32_t*)0x4000C08CU) /**< \brief (TC0) Register AB (channel = 2) */ + #define REG_TC0_CV2 (*(__I uint32_t*)0x4000C090U) /**< \brief (TC0) Counter Value (channel = 2) */ + #define REG_TC0_RA2 (*(__IO uint32_t*)0x4000C094U) /**< \brief (TC0) Register A (channel = 2) */ + #define REG_TC0_RB2 (*(__IO uint32_t*)0x4000C098U) /**< \brief (TC0) Register B (channel = 2) */ + #define REG_TC0_RC2 (*(__IO uint32_t*)0x4000C09CU) /**< \brief (TC0) Register C (channel = 2) */ + #define REG_TC0_SR2 (*(__I uint32_t*)0x4000C0A0U) /**< \brief (TC0) Status Register (channel = 2) */ + #define REG_TC0_IER2 (*(__O uint32_t*)0x4000C0A4U) /**< \brief (TC0) Interrupt Enable Register (channel = 2) */ + #define REG_TC0_IDR2 (*(__O uint32_t*)0x4000C0A8U) /**< \brief (TC0) Interrupt Disable Register (channel = 2) */ + #define REG_TC0_IMR2 (*(__I uint32_t*)0x4000C0ACU) /**< \brief (TC0) Interrupt Mask Register (channel = 2) */ + #define REG_TC0_EMR2 (*(__IO uint32_t*)0x4000C0B0U) /**< \brief (TC0) Extended Mode Register (channel = 2) */ + #define REG_TC0_BCR (*(__O uint32_t*)0x4000C0C0U) /**< \brief (TC0) Block Control Register */ + #define REG_TC0_BMR (*(__IO uint32_t*)0x4000C0C4U) /**< \brief (TC0) Block Mode Register */ + #define REG_TC0_QIER (*(__O uint32_t*)0x4000C0C8U) /**< \brief (TC0) QDEC Interrupt Enable Register */ + #define REG_TC0_QIDR (*(__O uint32_t*)0x4000C0CCU) /**< \brief (TC0) QDEC Interrupt Disable Register */ + #define REG_TC0_QIMR (*(__I uint32_t*)0x4000C0D0U) /**< \brief (TC0) QDEC Interrupt Mask Register */ + #define REG_TC0_QISR (*(__I uint32_t*)0x4000C0D4U) /**< \brief (TC0) QDEC Interrupt Status Register */ + #define REG_TC0_FMR (*(__IO uint32_t*)0x4000C0D8U) /**< \brief (TC0) Fault Mode Register */ + #define REG_TC0_WPMR (*(__IO uint32_t*)0x4000C0E4U) /**< \brief (TC0) Write Protection Mode Register */ + #define REG_TC0_VER (*(__I uint32_t*)0x4000C0FCU) /**< \brief (TC0) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TC0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h new file mode 100644 index 00000000..d8f78fcd --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h @@ -0,0 +1,139 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TC1_INSTANCE_ +#define _SAME70_TC1_INSTANCE_ + +/* ========== Register definition for TC1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TC1_CCR0 (0x40010000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ + #define REG_TC1_CMR0 (0x40010004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ + #define REG_TC1_SMMR0 (0x40010008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC1_RAB0 (0x4001000CU) /**< \brief (TC1) Register AB (channel = 0) */ + #define REG_TC1_CV0 (0x40010010U) /**< \brief (TC1) Counter Value (channel = 0) */ + #define REG_TC1_RA0 (0x40010014U) /**< \brief (TC1) Register A (channel = 0) */ + #define REG_TC1_RB0 (0x40010018U) /**< \brief (TC1) Register B (channel = 0) */ + #define REG_TC1_RC0 (0x4001001CU) /**< \brief (TC1) Register C (channel = 0) */ + #define REG_TC1_SR0 (0x40010020U) /**< \brief (TC1) Status Register (channel = 0) */ + #define REG_TC1_IER0 (0x40010024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ + #define REG_TC1_IDR0 (0x40010028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ + #define REG_TC1_IMR0 (0x4001002CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ + #define REG_TC1_EMR0 (0x40010030U) /**< \brief (TC1) Extended Mode Register (channel = 0) */ + #define REG_TC1_CCR1 (0x40010040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ + #define REG_TC1_CMR1 (0x40010044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ + #define REG_TC1_SMMR1 (0x40010048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC1_RAB1 (0x4001004CU) /**< \brief (TC1) Register AB (channel = 1) */ + #define REG_TC1_CV1 (0x40010050U) /**< \brief (TC1) Counter Value (channel = 1) */ + #define REG_TC1_RA1 (0x40010054U) /**< \brief (TC1) Register A (channel = 1) */ + #define REG_TC1_RB1 (0x40010058U) /**< \brief (TC1) Register B (channel = 1) */ + #define REG_TC1_RC1 (0x4001005CU) /**< \brief (TC1) Register C (channel = 1) */ + #define REG_TC1_SR1 (0x40010060U) /**< \brief (TC1) Status Register (channel = 1) */ + #define REG_TC1_IER1 (0x40010064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ + #define REG_TC1_IDR1 (0x40010068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ + #define REG_TC1_IMR1 (0x4001006CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ + #define REG_TC1_EMR1 (0x40010070U) /**< \brief (TC1) Extended Mode Register (channel = 1) */ + #define REG_TC1_CCR2 (0x40010080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ + #define REG_TC1_CMR2 (0x40010084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ + #define REG_TC1_SMMR2 (0x40010088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC1_RAB2 (0x4001008CU) /**< \brief (TC1) Register AB (channel = 2) */ + #define REG_TC1_CV2 (0x40010090U) /**< \brief (TC1) Counter Value (channel = 2) */ + #define REG_TC1_RA2 (0x40010094U) /**< \brief (TC1) Register A (channel = 2) */ + #define REG_TC1_RB2 (0x40010098U) /**< \brief (TC1) Register B (channel = 2) */ + #define REG_TC1_RC2 (0x4001009CU) /**< \brief (TC1) Register C (channel = 2) */ + #define REG_TC1_SR2 (0x400100A0U) /**< \brief (TC1) Status Register (channel = 2) */ + #define REG_TC1_IER2 (0x400100A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ + #define REG_TC1_IDR2 (0x400100A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ + #define REG_TC1_IMR2 (0x400100ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ + #define REG_TC1_EMR2 (0x400100B0U) /**< \brief (TC1) Extended Mode Register (channel = 2) */ + #define REG_TC1_BCR (0x400100C0U) /**< \brief (TC1) Block Control Register */ + #define REG_TC1_BMR (0x400100C4U) /**< \brief (TC1) Block Mode Register */ + #define REG_TC1_QIER (0x400100C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ + #define REG_TC1_QIDR (0x400100CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ + #define REG_TC1_QIMR (0x400100D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ + #define REG_TC1_QISR (0x400100D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ + #define REG_TC1_FMR (0x400100D8U) /**< \brief (TC1) Fault Mode Register */ + #define REG_TC1_WPMR (0x400100E4U) /**< \brief (TC1) Write Protection Mode Register */ + #define REG_TC1_VER (0x400100FCU) /**< \brief (TC1) Version Register */ +#else + #define REG_TC1_CCR0 (*(__O uint32_t*)0x40010000U) /**< \brief (TC1) Channel Control Register (channel = 0) */ + #define REG_TC1_CMR0 (*(__IO uint32_t*)0x40010004U) /**< \brief (TC1) Channel Mode Register (channel = 0) */ + #define REG_TC1_SMMR0 (*(__IO uint32_t*)0x40010008U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC1_RAB0 (*(__I uint32_t*)0x4001000CU) /**< \brief (TC1) Register AB (channel = 0) */ + #define REG_TC1_CV0 (*(__I uint32_t*)0x40010010U) /**< \brief (TC1) Counter Value (channel = 0) */ + #define REG_TC1_RA0 (*(__IO uint32_t*)0x40010014U) /**< \brief (TC1) Register A (channel = 0) */ + #define REG_TC1_RB0 (*(__IO uint32_t*)0x40010018U) /**< \brief (TC1) Register B (channel = 0) */ + #define REG_TC1_RC0 (*(__IO uint32_t*)0x4001001CU) /**< \brief (TC1) Register C (channel = 0) */ + #define REG_TC1_SR0 (*(__I uint32_t*)0x40010020U) /**< \brief (TC1) Status Register (channel = 0) */ + #define REG_TC1_IER0 (*(__O uint32_t*)0x40010024U) /**< \brief (TC1) Interrupt Enable Register (channel = 0) */ + #define REG_TC1_IDR0 (*(__O uint32_t*)0x40010028U) /**< \brief (TC1) Interrupt Disable Register (channel = 0) */ + #define REG_TC1_IMR0 (*(__I uint32_t*)0x4001002CU) /**< \brief (TC1) Interrupt Mask Register (channel = 0) */ + #define REG_TC1_EMR0 (*(__IO uint32_t*)0x40010030U) /**< \brief (TC1) Extended Mode Register (channel = 0) */ + #define REG_TC1_CCR1 (*(__O uint32_t*)0x40010040U) /**< \brief (TC1) Channel Control Register (channel = 1) */ + #define REG_TC1_CMR1 (*(__IO uint32_t*)0x40010044U) /**< \brief (TC1) Channel Mode Register (channel = 1) */ + #define REG_TC1_SMMR1 (*(__IO uint32_t*)0x40010048U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC1_RAB1 (*(__I uint32_t*)0x4001004CU) /**< \brief (TC1) Register AB (channel = 1) */ + #define REG_TC1_CV1 (*(__I uint32_t*)0x40010050U) /**< \brief (TC1) Counter Value (channel = 1) */ + #define REG_TC1_RA1 (*(__IO uint32_t*)0x40010054U) /**< \brief (TC1) Register A (channel = 1) */ + #define REG_TC1_RB1 (*(__IO uint32_t*)0x40010058U) /**< \brief (TC1) Register B (channel = 1) */ + #define REG_TC1_RC1 (*(__IO uint32_t*)0x4001005CU) /**< \brief (TC1) Register C (channel = 1) */ + #define REG_TC1_SR1 (*(__I uint32_t*)0x40010060U) /**< \brief (TC1) Status Register (channel = 1) */ + #define REG_TC1_IER1 (*(__O uint32_t*)0x40010064U) /**< \brief (TC1) Interrupt Enable Register (channel = 1) */ + #define REG_TC1_IDR1 (*(__O uint32_t*)0x40010068U) /**< \brief (TC1) Interrupt Disable Register (channel = 1) */ + #define REG_TC1_IMR1 (*(__I uint32_t*)0x4001006CU) /**< \brief (TC1) Interrupt Mask Register (channel = 1) */ + #define REG_TC1_EMR1 (*(__IO uint32_t*)0x40010070U) /**< \brief (TC1) Extended Mode Register (channel = 1) */ + #define REG_TC1_CCR2 (*(__O uint32_t*)0x40010080U) /**< \brief (TC1) Channel Control Register (channel = 2) */ + #define REG_TC1_CMR2 (*(__IO uint32_t*)0x40010084U) /**< \brief (TC1) Channel Mode Register (channel = 2) */ + #define REG_TC1_SMMR2 (*(__IO uint32_t*)0x40010088U) /**< \brief (TC1) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC1_RAB2 (*(__I uint32_t*)0x4001008CU) /**< \brief (TC1) Register AB (channel = 2) */ + #define REG_TC1_CV2 (*(__I uint32_t*)0x40010090U) /**< \brief (TC1) Counter Value (channel = 2) */ + #define REG_TC1_RA2 (*(__IO uint32_t*)0x40010094U) /**< \brief (TC1) Register A (channel = 2) */ + #define REG_TC1_RB2 (*(__IO uint32_t*)0x40010098U) /**< \brief (TC1) Register B (channel = 2) */ + #define REG_TC1_RC2 (*(__IO uint32_t*)0x4001009CU) /**< \brief (TC1) Register C (channel = 2) */ + #define REG_TC1_SR2 (*(__I uint32_t*)0x400100A0U) /**< \brief (TC1) Status Register (channel = 2) */ + #define REG_TC1_IER2 (*(__O uint32_t*)0x400100A4U) /**< \brief (TC1) Interrupt Enable Register (channel = 2) */ + #define REG_TC1_IDR2 (*(__O uint32_t*)0x400100A8U) /**< \brief (TC1) Interrupt Disable Register (channel = 2) */ + #define REG_TC1_IMR2 (*(__I uint32_t*)0x400100ACU) /**< \brief (TC1) Interrupt Mask Register (channel = 2) */ + #define REG_TC1_EMR2 (*(__IO uint32_t*)0x400100B0U) /**< \brief (TC1) Extended Mode Register (channel = 2) */ + #define REG_TC1_BCR (*(__O uint32_t*)0x400100C0U) /**< \brief (TC1) Block Control Register */ + #define REG_TC1_BMR (*(__IO uint32_t*)0x400100C4U) /**< \brief (TC1) Block Mode Register */ + #define REG_TC1_QIER (*(__O uint32_t*)0x400100C8U) /**< \brief (TC1) QDEC Interrupt Enable Register */ + #define REG_TC1_QIDR (*(__O uint32_t*)0x400100CCU) /**< \brief (TC1) QDEC Interrupt Disable Register */ + #define REG_TC1_QIMR (*(__I uint32_t*)0x400100D0U) /**< \brief (TC1) QDEC Interrupt Mask Register */ + #define REG_TC1_QISR (*(__I uint32_t*)0x400100D4U) /**< \brief (TC1) QDEC Interrupt Status Register */ + #define REG_TC1_FMR (*(__IO uint32_t*)0x400100D8U) /**< \brief (TC1) Fault Mode Register */ + #define REG_TC1_WPMR (*(__IO uint32_t*)0x400100E4U) /**< \brief (TC1) Write Protection Mode Register */ + #define REG_TC1_VER (*(__I uint32_t*)0x400100FCU) /**< \brief (TC1) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TC1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h new file mode 100644 index 00000000..8d4a950c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h @@ -0,0 +1,139 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TC2_INSTANCE_ +#define _SAME70_TC2_INSTANCE_ + +/* ========== Register definition for TC2 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TC2_CCR0 (0x40014000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ + #define REG_TC2_CMR0 (0x40014004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ + #define REG_TC2_SMMR0 (0x40014008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC2_RAB0 (0x4001400CU) /**< \brief (TC2) Register AB (channel = 0) */ + #define REG_TC2_CV0 (0x40014010U) /**< \brief (TC2) Counter Value (channel = 0) */ + #define REG_TC2_RA0 (0x40014014U) /**< \brief (TC2) Register A (channel = 0) */ + #define REG_TC2_RB0 (0x40014018U) /**< \brief (TC2) Register B (channel = 0) */ + #define REG_TC2_RC0 (0x4001401CU) /**< \brief (TC2) Register C (channel = 0) */ + #define REG_TC2_SR0 (0x40014020U) /**< \brief (TC2) Status Register (channel = 0) */ + #define REG_TC2_IER0 (0x40014024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ + #define REG_TC2_IDR0 (0x40014028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ + #define REG_TC2_IMR0 (0x4001402CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ + #define REG_TC2_EMR0 (0x40014030U) /**< \brief (TC2) Extended Mode Register (channel = 0) */ + #define REG_TC2_CCR1 (0x40014040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ + #define REG_TC2_CMR1 (0x40014044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ + #define REG_TC2_SMMR1 (0x40014048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC2_RAB1 (0x4001404CU) /**< \brief (TC2) Register AB (channel = 1) */ + #define REG_TC2_CV1 (0x40014050U) /**< \brief (TC2) Counter Value (channel = 1) */ + #define REG_TC2_RA1 (0x40014054U) /**< \brief (TC2) Register A (channel = 1) */ + #define REG_TC2_RB1 (0x40014058U) /**< \brief (TC2) Register B (channel = 1) */ + #define REG_TC2_RC1 (0x4001405CU) /**< \brief (TC2) Register C (channel = 1) */ + #define REG_TC2_SR1 (0x40014060U) /**< \brief (TC2) Status Register (channel = 1) */ + #define REG_TC2_IER1 (0x40014064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ + #define REG_TC2_IDR1 (0x40014068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ + #define REG_TC2_IMR1 (0x4001406CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ + #define REG_TC2_EMR1 (0x40014070U) /**< \brief (TC2) Extended Mode Register (channel = 1) */ + #define REG_TC2_CCR2 (0x40014080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ + #define REG_TC2_CMR2 (0x40014084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ + #define REG_TC2_SMMR2 (0x40014088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC2_RAB2 (0x4001408CU) /**< \brief (TC2) Register AB (channel = 2) */ + #define REG_TC2_CV2 (0x40014090U) /**< \brief (TC2) Counter Value (channel = 2) */ + #define REG_TC2_RA2 (0x40014094U) /**< \brief (TC2) Register A (channel = 2) */ + #define REG_TC2_RB2 (0x40014098U) /**< \brief (TC2) Register B (channel = 2) */ + #define REG_TC2_RC2 (0x4001409CU) /**< \brief (TC2) Register C (channel = 2) */ + #define REG_TC2_SR2 (0x400140A0U) /**< \brief (TC2) Status Register (channel = 2) */ + #define REG_TC2_IER2 (0x400140A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ + #define REG_TC2_IDR2 (0x400140A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ + #define REG_TC2_IMR2 (0x400140ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ + #define REG_TC2_EMR2 (0x400140B0U) /**< \brief (TC2) Extended Mode Register (channel = 2) */ + #define REG_TC2_BCR (0x400140C0U) /**< \brief (TC2) Block Control Register */ + #define REG_TC2_BMR (0x400140C4U) /**< \brief (TC2) Block Mode Register */ + #define REG_TC2_QIER (0x400140C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ + #define REG_TC2_QIDR (0x400140CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ + #define REG_TC2_QIMR (0x400140D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ + #define REG_TC2_QISR (0x400140D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ + #define REG_TC2_FMR (0x400140D8U) /**< \brief (TC2) Fault Mode Register */ + #define REG_TC2_WPMR (0x400140E4U) /**< \brief (TC2) Write Protection Mode Register */ + #define REG_TC2_VER (0x400140FCU) /**< \brief (TC2) Version Register */ +#else + #define REG_TC2_CCR0 (*(__O uint32_t*)0x40014000U) /**< \brief (TC2) Channel Control Register (channel = 0) */ + #define REG_TC2_CMR0 (*(__IO uint32_t*)0x40014004U) /**< \brief (TC2) Channel Mode Register (channel = 0) */ + #define REG_TC2_SMMR0 (*(__IO uint32_t*)0x40014008U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC2_RAB0 (*(__I uint32_t*)0x4001400CU) /**< \brief (TC2) Register AB (channel = 0) */ + #define REG_TC2_CV0 (*(__I uint32_t*)0x40014010U) /**< \brief (TC2) Counter Value (channel = 0) */ + #define REG_TC2_RA0 (*(__IO uint32_t*)0x40014014U) /**< \brief (TC2) Register A (channel = 0) */ + #define REG_TC2_RB0 (*(__IO uint32_t*)0x40014018U) /**< \brief (TC2) Register B (channel = 0) */ + #define REG_TC2_RC0 (*(__IO uint32_t*)0x4001401CU) /**< \brief (TC2) Register C (channel = 0) */ + #define REG_TC2_SR0 (*(__I uint32_t*)0x40014020U) /**< \brief (TC2) Status Register (channel = 0) */ + #define REG_TC2_IER0 (*(__O uint32_t*)0x40014024U) /**< \brief (TC2) Interrupt Enable Register (channel = 0) */ + #define REG_TC2_IDR0 (*(__O uint32_t*)0x40014028U) /**< \brief (TC2) Interrupt Disable Register (channel = 0) */ + #define REG_TC2_IMR0 (*(__I uint32_t*)0x4001402CU) /**< \brief (TC2) Interrupt Mask Register (channel = 0) */ + #define REG_TC2_EMR0 (*(__IO uint32_t*)0x40014030U) /**< \brief (TC2) Extended Mode Register (channel = 0) */ + #define REG_TC2_CCR1 (*(__O uint32_t*)0x40014040U) /**< \brief (TC2) Channel Control Register (channel = 1) */ + #define REG_TC2_CMR1 (*(__IO uint32_t*)0x40014044U) /**< \brief (TC2) Channel Mode Register (channel = 1) */ + #define REG_TC2_SMMR1 (*(__IO uint32_t*)0x40014048U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC2_RAB1 (*(__I uint32_t*)0x4001404CU) /**< \brief (TC2) Register AB (channel = 1) */ + #define REG_TC2_CV1 (*(__I uint32_t*)0x40014050U) /**< \brief (TC2) Counter Value (channel = 1) */ + #define REG_TC2_RA1 (*(__IO uint32_t*)0x40014054U) /**< \brief (TC2) Register A (channel = 1) */ + #define REG_TC2_RB1 (*(__IO uint32_t*)0x40014058U) /**< \brief (TC2) Register B (channel = 1) */ + #define REG_TC2_RC1 (*(__IO uint32_t*)0x4001405CU) /**< \brief (TC2) Register C (channel = 1) */ + #define REG_TC2_SR1 (*(__I uint32_t*)0x40014060U) /**< \brief (TC2) Status Register (channel = 1) */ + #define REG_TC2_IER1 (*(__O uint32_t*)0x40014064U) /**< \brief (TC2) Interrupt Enable Register (channel = 1) */ + #define REG_TC2_IDR1 (*(__O uint32_t*)0x40014068U) /**< \brief (TC2) Interrupt Disable Register (channel = 1) */ + #define REG_TC2_IMR1 (*(__I uint32_t*)0x4001406CU) /**< \brief (TC2) Interrupt Mask Register (channel = 1) */ + #define REG_TC2_EMR1 (*(__IO uint32_t*)0x40014070U) /**< \brief (TC2) Extended Mode Register (channel = 1) */ + #define REG_TC2_CCR2 (*(__O uint32_t*)0x40014080U) /**< \brief (TC2) Channel Control Register (channel = 2) */ + #define REG_TC2_CMR2 (*(__IO uint32_t*)0x40014084U) /**< \brief (TC2) Channel Mode Register (channel = 2) */ + #define REG_TC2_SMMR2 (*(__IO uint32_t*)0x40014088U) /**< \brief (TC2) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC2_RAB2 (*(__I uint32_t*)0x4001408CU) /**< \brief (TC2) Register AB (channel = 2) */ + #define REG_TC2_CV2 (*(__I uint32_t*)0x40014090U) /**< \brief (TC2) Counter Value (channel = 2) */ + #define REG_TC2_RA2 (*(__IO uint32_t*)0x40014094U) /**< \brief (TC2) Register A (channel = 2) */ + #define REG_TC2_RB2 (*(__IO uint32_t*)0x40014098U) /**< \brief (TC2) Register B (channel = 2) */ + #define REG_TC2_RC2 (*(__IO uint32_t*)0x4001409CU) /**< \brief (TC2) Register C (channel = 2) */ + #define REG_TC2_SR2 (*(__I uint32_t*)0x400140A0U) /**< \brief (TC2) Status Register (channel = 2) */ + #define REG_TC2_IER2 (*(__O uint32_t*)0x400140A4U) /**< \brief (TC2) Interrupt Enable Register (channel = 2) */ + #define REG_TC2_IDR2 (*(__O uint32_t*)0x400140A8U) /**< \brief (TC2) Interrupt Disable Register (channel = 2) */ + #define REG_TC2_IMR2 (*(__I uint32_t*)0x400140ACU) /**< \brief (TC2) Interrupt Mask Register (channel = 2) */ + #define REG_TC2_EMR2 (*(__IO uint32_t*)0x400140B0U) /**< \brief (TC2) Extended Mode Register (channel = 2) */ + #define REG_TC2_BCR (*(__O uint32_t*)0x400140C0U) /**< \brief (TC2) Block Control Register */ + #define REG_TC2_BMR (*(__IO uint32_t*)0x400140C4U) /**< \brief (TC2) Block Mode Register */ + #define REG_TC2_QIER (*(__O uint32_t*)0x400140C8U) /**< \brief (TC2) QDEC Interrupt Enable Register */ + #define REG_TC2_QIDR (*(__O uint32_t*)0x400140CCU) /**< \brief (TC2) QDEC Interrupt Disable Register */ + #define REG_TC2_QIMR (*(__I uint32_t*)0x400140D0U) /**< \brief (TC2) QDEC Interrupt Mask Register */ + #define REG_TC2_QISR (*(__I uint32_t*)0x400140D4U) /**< \brief (TC2) QDEC Interrupt Status Register */ + #define REG_TC2_FMR (*(__IO uint32_t*)0x400140D8U) /**< \brief (TC2) Fault Mode Register */ + #define REG_TC2_WPMR (*(__IO uint32_t*)0x400140E4U) /**< \brief (TC2) Write Protection Mode Register */ + #define REG_TC2_VER (*(__I uint32_t*)0x400140FCU) /**< \brief (TC2) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TC2_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h new file mode 100644 index 00000000..29351ce4 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h @@ -0,0 +1,139 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TC3_INSTANCE_ +#define _SAME70_TC3_INSTANCE_ + +/* ========== Register definition for TC3 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TC3_CCR0 (0x40054000U) /**< \brief (TC3) Channel Control Register (channel = 0) */ + #define REG_TC3_CMR0 (0x40054004U) /**< \brief (TC3) Channel Mode Register (channel = 0) */ + #define REG_TC3_SMMR0 (0x40054008U) /**< \brief (TC3) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC3_RAB0 (0x4005400CU) /**< \brief (TC3) Register AB (channel = 0) */ + #define REG_TC3_CV0 (0x40054010U) /**< \brief (TC3) Counter Value (channel = 0) */ + #define REG_TC3_RA0 (0x40054014U) /**< \brief (TC3) Register A (channel = 0) */ + #define REG_TC3_RB0 (0x40054018U) /**< \brief (TC3) Register B (channel = 0) */ + #define REG_TC3_RC0 (0x4005401CU) /**< \brief (TC3) Register C (channel = 0) */ + #define REG_TC3_SR0 (0x40054020U) /**< \brief (TC3) Status Register (channel = 0) */ + #define REG_TC3_IER0 (0x40054024U) /**< \brief (TC3) Interrupt Enable Register (channel = 0) */ + #define REG_TC3_IDR0 (0x40054028U) /**< \brief (TC3) Interrupt Disable Register (channel = 0) */ + #define REG_TC3_IMR0 (0x4005402CU) /**< \brief (TC3) Interrupt Mask Register (channel = 0) */ + #define REG_TC3_EMR0 (0x40054030U) /**< \brief (TC3) Extended Mode Register (channel = 0) */ + #define REG_TC3_CCR1 (0x40054040U) /**< \brief (TC3) Channel Control Register (channel = 1) */ + #define REG_TC3_CMR1 (0x40054044U) /**< \brief (TC3) Channel Mode Register (channel = 1) */ + #define REG_TC3_SMMR1 (0x40054048U) /**< \brief (TC3) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC3_RAB1 (0x4005404CU) /**< \brief (TC3) Register AB (channel = 1) */ + #define REG_TC3_CV1 (0x40054050U) /**< \brief (TC3) Counter Value (channel = 1) */ + #define REG_TC3_RA1 (0x40054054U) /**< \brief (TC3) Register A (channel = 1) */ + #define REG_TC3_RB1 (0x40054058U) /**< \brief (TC3) Register B (channel = 1) */ + #define REG_TC3_RC1 (0x4005405CU) /**< \brief (TC3) Register C (channel = 1) */ + #define REG_TC3_SR1 (0x40054060U) /**< \brief (TC3) Status Register (channel = 1) */ + #define REG_TC3_IER1 (0x40054064U) /**< \brief (TC3) Interrupt Enable Register (channel = 1) */ + #define REG_TC3_IDR1 (0x40054068U) /**< \brief (TC3) Interrupt Disable Register (channel = 1) */ + #define REG_TC3_IMR1 (0x4005406CU) /**< \brief (TC3) Interrupt Mask Register (channel = 1) */ + #define REG_TC3_EMR1 (0x40054070U) /**< \brief (TC3) Extended Mode Register (channel = 1) */ + #define REG_TC3_CCR2 (0x40054080U) /**< \brief (TC3) Channel Control Register (channel = 2) */ + #define REG_TC3_CMR2 (0x40054084U) /**< \brief (TC3) Channel Mode Register (channel = 2) */ + #define REG_TC3_SMMR2 (0x40054088U) /**< \brief (TC3) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC3_RAB2 (0x4005408CU) /**< \brief (TC3) Register AB (channel = 2) */ + #define REG_TC3_CV2 (0x40054090U) /**< \brief (TC3) Counter Value (channel = 2) */ + #define REG_TC3_RA2 (0x40054094U) /**< \brief (TC3) Register A (channel = 2) */ + #define REG_TC3_RB2 (0x40054098U) /**< \brief (TC3) Register B (channel = 2) */ + #define REG_TC3_RC2 (0x4005409CU) /**< \brief (TC3) Register C (channel = 2) */ + #define REG_TC3_SR2 (0x400540A0U) /**< \brief (TC3) Status Register (channel = 2) */ + #define REG_TC3_IER2 (0x400540A4U) /**< \brief (TC3) Interrupt Enable Register (channel = 2) */ + #define REG_TC3_IDR2 (0x400540A8U) /**< \brief (TC3) Interrupt Disable Register (channel = 2) */ + #define REG_TC3_IMR2 (0x400540ACU) /**< \brief (TC3) Interrupt Mask Register (channel = 2) */ + #define REG_TC3_EMR2 (0x400540B0U) /**< \brief (TC3) Extended Mode Register (channel = 2) */ + #define REG_TC3_BCR (0x400540C0U) /**< \brief (TC3) Block Control Register */ + #define REG_TC3_BMR (0x400540C4U) /**< \brief (TC3) Block Mode Register */ + #define REG_TC3_QIER (0x400540C8U) /**< \brief (TC3) QDEC Interrupt Enable Register */ + #define REG_TC3_QIDR (0x400540CCU) /**< \brief (TC3) QDEC Interrupt Disable Register */ + #define REG_TC3_QIMR (0x400540D0U) /**< \brief (TC3) QDEC Interrupt Mask Register */ + #define REG_TC3_QISR (0x400540D4U) /**< \brief (TC3) QDEC Interrupt Status Register */ + #define REG_TC3_FMR (0x400540D8U) /**< \brief (TC3) Fault Mode Register */ + #define REG_TC3_WPMR (0x400540E4U) /**< \brief (TC3) Write Protection Mode Register */ + #define REG_TC3_VER (0x400540FCU) /**< \brief (TC3) Version Register */ +#else + #define REG_TC3_CCR0 (*(__O uint32_t*)0x40054000U) /**< \brief (TC3) Channel Control Register (channel = 0) */ + #define REG_TC3_CMR0 (*(__IO uint32_t*)0x40054004U) /**< \brief (TC3) Channel Mode Register (channel = 0) */ + #define REG_TC3_SMMR0 (*(__IO uint32_t*)0x40054008U) /**< \brief (TC3) Stepper Motor Mode Register (channel = 0) */ + #define REG_TC3_RAB0 (*(__I uint32_t*)0x4005400CU) /**< \brief (TC3) Register AB (channel = 0) */ + #define REG_TC3_CV0 (*(__I uint32_t*)0x40054010U) /**< \brief (TC3) Counter Value (channel = 0) */ + #define REG_TC3_RA0 (*(__IO uint32_t*)0x40054014U) /**< \brief (TC3) Register A (channel = 0) */ + #define REG_TC3_RB0 (*(__IO uint32_t*)0x40054018U) /**< \brief (TC3) Register B (channel = 0) */ + #define REG_TC3_RC0 (*(__IO uint32_t*)0x4005401CU) /**< \brief (TC3) Register C (channel = 0) */ + #define REG_TC3_SR0 (*(__I uint32_t*)0x40054020U) /**< \brief (TC3) Status Register (channel = 0) */ + #define REG_TC3_IER0 (*(__O uint32_t*)0x40054024U) /**< \brief (TC3) Interrupt Enable Register (channel = 0) */ + #define REG_TC3_IDR0 (*(__O uint32_t*)0x40054028U) /**< \brief (TC3) Interrupt Disable Register (channel = 0) */ + #define REG_TC3_IMR0 (*(__I uint32_t*)0x4005402CU) /**< \brief (TC3) Interrupt Mask Register (channel = 0) */ + #define REG_TC3_EMR0 (*(__IO uint32_t*)0x40054030U) /**< \brief (TC3) Extended Mode Register (channel = 0) */ + #define REG_TC3_CCR1 (*(__O uint32_t*)0x40054040U) /**< \brief (TC3) Channel Control Register (channel = 1) */ + #define REG_TC3_CMR1 (*(__IO uint32_t*)0x40054044U) /**< \brief (TC3) Channel Mode Register (channel = 1) */ + #define REG_TC3_SMMR1 (*(__IO uint32_t*)0x40054048U) /**< \brief (TC3) Stepper Motor Mode Register (channel = 1) */ + #define REG_TC3_RAB1 (*(__I uint32_t*)0x4005404CU) /**< \brief (TC3) Register AB (channel = 1) */ + #define REG_TC3_CV1 (*(__I uint32_t*)0x40054050U) /**< \brief (TC3) Counter Value (channel = 1) */ + #define REG_TC3_RA1 (*(__IO uint32_t*)0x40054054U) /**< \brief (TC3) Register A (channel = 1) */ + #define REG_TC3_RB1 (*(__IO uint32_t*)0x40054058U) /**< \brief (TC3) Register B (channel = 1) */ + #define REG_TC3_RC1 (*(__IO uint32_t*)0x4005405CU) /**< \brief (TC3) Register C (channel = 1) */ + #define REG_TC3_SR1 (*(__I uint32_t*)0x40054060U) /**< \brief (TC3) Status Register (channel = 1) */ + #define REG_TC3_IER1 (*(__O uint32_t*)0x40054064U) /**< \brief (TC3) Interrupt Enable Register (channel = 1) */ + #define REG_TC3_IDR1 (*(__O uint32_t*)0x40054068U) /**< \brief (TC3) Interrupt Disable Register (channel = 1) */ + #define REG_TC3_IMR1 (*(__I uint32_t*)0x4005406CU) /**< \brief (TC3) Interrupt Mask Register (channel = 1) */ + #define REG_TC3_EMR1 (*(__IO uint32_t*)0x40054070U) /**< \brief (TC3) Extended Mode Register (channel = 1) */ + #define REG_TC3_CCR2 (*(__O uint32_t*)0x40054080U) /**< \brief (TC3) Channel Control Register (channel = 2) */ + #define REG_TC3_CMR2 (*(__IO uint32_t*)0x40054084U) /**< \brief (TC3) Channel Mode Register (channel = 2) */ + #define REG_TC3_SMMR2 (*(__IO uint32_t*)0x40054088U) /**< \brief (TC3) Stepper Motor Mode Register (channel = 2) */ + #define REG_TC3_RAB2 (*(__I uint32_t*)0x4005408CU) /**< \brief (TC3) Register AB (channel = 2) */ + #define REG_TC3_CV2 (*(__I uint32_t*)0x40054090U) /**< \brief (TC3) Counter Value (channel = 2) */ + #define REG_TC3_RA2 (*(__IO uint32_t*)0x40054094U) /**< \brief (TC3) Register A (channel = 2) */ + #define REG_TC3_RB2 (*(__IO uint32_t*)0x40054098U) /**< \brief (TC3) Register B (channel = 2) */ + #define REG_TC3_RC2 (*(__IO uint32_t*)0x4005409CU) /**< \brief (TC3) Register C (channel = 2) */ + #define REG_TC3_SR2 (*(__I uint32_t*)0x400540A0U) /**< \brief (TC3) Status Register (channel = 2) */ + #define REG_TC3_IER2 (*(__O uint32_t*)0x400540A4U) /**< \brief (TC3) Interrupt Enable Register (channel = 2) */ + #define REG_TC3_IDR2 (*(__O uint32_t*)0x400540A8U) /**< \brief (TC3) Interrupt Disable Register (channel = 2) */ + #define REG_TC3_IMR2 (*(__I uint32_t*)0x400540ACU) /**< \brief (TC3) Interrupt Mask Register (channel = 2) */ + #define REG_TC3_EMR2 (*(__IO uint32_t*)0x400540B0U) /**< \brief (TC3) Extended Mode Register (channel = 2) */ + #define REG_TC3_BCR (*(__O uint32_t*)0x400540C0U) /**< \brief (TC3) Block Control Register */ + #define REG_TC3_BMR (*(__IO uint32_t*)0x400540C4U) /**< \brief (TC3) Block Mode Register */ + #define REG_TC3_QIER (*(__O uint32_t*)0x400540C8U) /**< \brief (TC3) QDEC Interrupt Enable Register */ + #define REG_TC3_QIDR (*(__O uint32_t*)0x400540CCU) /**< \brief (TC3) QDEC Interrupt Disable Register */ + #define REG_TC3_QIMR (*(__I uint32_t*)0x400540D0U) /**< \brief (TC3) QDEC Interrupt Mask Register */ + #define REG_TC3_QISR (*(__I uint32_t*)0x400540D4U) /**< \brief (TC3) QDEC Interrupt Status Register */ + #define REG_TC3_FMR (*(__IO uint32_t*)0x400540D8U) /**< \brief (TC3) Fault Mode Register */ + #define REG_TC3_WPMR (*(__IO uint32_t*)0x400540E4U) /**< \brief (TC3) Write Protection Mode Register */ + #define REG_TC3_VER (*(__I uint32_t*)0x400540FCU) /**< \brief (TC3) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TC3_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h new file mode 100644 index 00000000..e0f1b062 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h @@ -0,0 +1,57 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TRNG_INSTANCE_ +#define _SAME70_TRNG_INSTANCE_ + +/* ========== Register definition for TRNG peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TRNG_CR (0x40070000U) /**< \brief (TRNG) Control Register */ + #define REG_TRNG_IER (0x40070010U) /**< \brief (TRNG) Interrupt Enable Register */ + #define REG_TRNG_IDR (0x40070014U) /**< \brief (TRNG) Interrupt Disable Register */ + #define REG_TRNG_IMR (0x40070018U) /**< \brief (TRNG) Interrupt Mask Register */ + #define REG_TRNG_ISR (0x4007001CU) /**< \brief (TRNG) Interrupt Status Register */ + #define REG_TRNG_ODATA (0x40070050U) /**< \brief (TRNG) Output Data Register */ + #define REG_TRNG_VERSION (0x400700FCU) /**< \brief (TRNG) Version Register */ +#else + #define REG_TRNG_CR (*(__O uint32_t*)0x40070000U) /**< \brief (TRNG) Control Register */ + #define REG_TRNG_IER (*(__O uint32_t*)0x40070010U) /**< \brief (TRNG) Interrupt Enable Register */ + #define REG_TRNG_IDR (*(__O uint32_t*)0x40070014U) /**< \brief (TRNG) Interrupt Disable Register */ + #define REG_TRNG_IMR (*(__I uint32_t*)0x40070018U) /**< \brief (TRNG) Interrupt Mask Register */ + #define REG_TRNG_ISR (*(__I uint32_t*)0x4007001CU) /**< \brief (TRNG) Interrupt Status Register */ + #define REG_TRNG_ODATA (*(__I uint32_t*)0x40070050U) /**< \brief (TRNG) Output Data Register */ + #define REG_TRNG_VERSION (*(__I uint32_t*)0x400700FCU) /**< \brief (TRNG) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TRNG_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h new file mode 100644 index 00000000..35504a31 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h @@ -0,0 +1,79 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TWIHS0_INSTANCE_ +#define _SAME70_TWIHS0_INSTANCE_ + +/* ========== Register definition for TWIHS0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TWIHS0_CR (0x40018000U) /**< \brief (TWIHS0) Control Register */ + #define REG_TWIHS0_MMR (0x40018004U) /**< \brief (TWIHS0) Master Mode Register */ + #define REG_TWIHS0_SMR (0x40018008U) /**< \brief (TWIHS0) Slave Mode Register */ + #define REG_TWIHS0_IADR (0x4001800CU) /**< \brief (TWIHS0) Internal Address Register */ + #define REG_TWIHS0_CWGR (0x40018010U) /**< \brief (TWIHS0) Clock Waveform Generator Register */ + #define REG_TWIHS0_SR (0x40018020U) /**< \brief (TWIHS0) Status Register */ + #define REG_TWIHS0_IER (0x40018024U) /**< \brief (TWIHS0) Interrupt Enable Register */ + #define REG_TWIHS0_IDR (0x40018028U) /**< \brief (TWIHS0) Interrupt Disable Register */ + #define REG_TWIHS0_IMR (0x4001802CU) /**< \brief (TWIHS0) Interrupt Mask Register */ + #define REG_TWIHS0_RHR (0x40018030U) /**< \brief (TWIHS0) Receive Holding Register */ + #define REG_TWIHS0_THR (0x40018034U) /**< \brief (TWIHS0) Transmit Holding Register */ + #define REG_TWIHS0_SMBTR (0x40018038U) /**< \brief (TWIHS0) SMBus Timing Register */ + #define REG_TWIHS0_FILTR (0x40018044U) /**< \brief (TWIHS0) Filter Register */ + #define REG_TWIHS0_SWMR (0x4001804CU) /**< \brief (TWIHS0) SleepWalking Matching Register */ + #define REG_TWIHS0_DR (0x400180D0U) /**< \brief (TWIHS0) Debug Register */ + #define REG_TWIHS0_WPMR (0x400180E4U) /**< \brief (TWIHS0) Write Protection Mode Register */ + #define REG_TWIHS0_WPSR (0x400180E8U) /**< \brief (TWIHS0) Write Protection Status Register */ + #define REG_TWIHS0_VER (0x400180FCU) /**< \brief (TWIHS0) Version Register */ +#else + #define REG_TWIHS0_CR (*(__O uint32_t*)0x40018000U) /**< \brief (TWIHS0) Control Register */ + #define REG_TWIHS0_MMR (*(__IO uint32_t*)0x40018004U) /**< \brief (TWIHS0) Master Mode Register */ + #define REG_TWIHS0_SMR (*(__IO uint32_t*)0x40018008U) /**< \brief (TWIHS0) Slave Mode Register */ + #define REG_TWIHS0_IADR (*(__IO uint32_t*)0x4001800CU) /**< \brief (TWIHS0) Internal Address Register */ + #define REG_TWIHS0_CWGR (*(__IO uint32_t*)0x40018010U) /**< \brief (TWIHS0) Clock Waveform Generator Register */ + #define REG_TWIHS0_SR (*(__I uint32_t*)0x40018020U) /**< \brief (TWIHS0) Status Register */ + #define REG_TWIHS0_IER (*(__O uint32_t*)0x40018024U) /**< \brief (TWIHS0) Interrupt Enable Register */ + #define REG_TWIHS0_IDR (*(__O uint32_t*)0x40018028U) /**< \brief (TWIHS0) Interrupt Disable Register */ + #define REG_TWIHS0_IMR (*(__I uint32_t*)0x4001802CU) /**< \brief (TWIHS0) Interrupt Mask Register */ + #define REG_TWIHS0_RHR (*(__I uint32_t*)0x40018030U) /**< \brief (TWIHS0) Receive Holding Register */ + #define REG_TWIHS0_THR (*(__O uint32_t*)0x40018034U) /**< \brief (TWIHS0) Transmit Holding Register */ + #define REG_TWIHS0_SMBTR (*(__IO uint32_t*)0x40018038U) /**< \brief (TWIHS0) SMBus Timing Register */ + #define REG_TWIHS0_FILTR (*(__IO uint32_t*)0x40018044U) /**< \brief (TWIHS0) Filter Register */ + #define REG_TWIHS0_SWMR (*(__IO uint32_t*)0x4001804CU) /**< \brief (TWIHS0) SleepWalking Matching Register */ + #define REG_TWIHS0_DR (*(__I uint32_t*)0x400180D0U) /**< \brief (TWIHS0) Debug Register */ + #define REG_TWIHS0_WPMR (*(__IO uint32_t*)0x400180E4U) /**< \brief (TWIHS0) Write Protection Mode Register */ + #define REG_TWIHS0_WPSR (*(__I uint32_t*)0x400180E8U) /**< \brief (TWIHS0) Write Protection Status Register */ + #define REG_TWIHS0_VER (*(__I uint32_t*)0x400180FCU) /**< \brief (TWIHS0) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TWIHS0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h new file mode 100644 index 00000000..f76e761a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h @@ -0,0 +1,79 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TWIHS1_INSTANCE_ +#define _SAME70_TWIHS1_INSTANCE_ + +/* ========== Register definition for TWIHS1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TWIHS1_CR (0x4001C000U) /**< \brief (TWIHS1) Control Register */ + #define REG_TWIHS1_MMR (0x4001C004U) /**< \brief (TWIHS1) Master Mode Register */ + #define REG_TWIHS1_SMR (0x4001C008U) /**< \brief (TWIHS1) Slave Mode Register */ + #define REG_TWIHS1_IADR (0x4001C00CU) /**< \brief (TWIHS1) Internal Address Register */ + #define REG_TWIHS1_CWGR (0x4001C010U) /**< \brief (TWIHS1) Clock Waveform Generator Register */ + #define REG_TWIHS1_SR (0x4001C020U) /**< \brief (TWIHS1) Status Register */ + #define REG_TWIHS1_IER (0x4001C024U) /**< \brief (TWIHS1) Interrupt Enable Register */ + #define REG_TWIHS1_IDR (0x4001C028U) /**< \brief (TWIHS1) Interrupt Disable Register */ + #define REG_TWIHS1_IMR (0x4001C02CU) /**< \brief (TWIHS1) Interrupt Mask Register */ + #define REG_TWIHS1_RHR (0x4001C030U) /**< \brief (TWIHS1) Receive Holding Register */ + #define REG_TWIHS1_THR (0x4001C034U) /**< \brief (TWIHS1) Transmit Holding Register */ + #define REG_TWIHS1_SMBTR (0x4001C038U) /**< \brief (TWIHS1) SMBus Timing Register */ + #define REG_TWIHS1_FILTR (0x4001C044U) /**< \brief (TWIHS1) Filter Register */ + #define REG_TWIHS1_SWMR (0x4001C04CU) /**< \brief (TWIHS1) SleepWalking Matching Register */ + #define REG_TWIHS1_DR (0x4001C0D0U) /**< \brief (TWIHS1) Debug Register */ + #define REG_TWIHS1_WPMR (0x4001C0E4U) /**< \brief (TWIHS1) Write Protection Mode Register */ + #define REG_TWIHS1_WPSR (0x4001C0E8U) /**< \brief (TWIHS1) Write Protection Status Register */ + #define REG_TWIHS1_VER (0x4001C0FCU) /**< \brief (TWIHS1) Version Register */ +#else + #define REG_TWIHS1_CR (*(__O uint32_t*)0x4001C000U) /**< \brief (TWIHS1) Control Register */ + #define REG_TWIHS1_MMR (*(__IO uint32_t*)0x4001C004U) /**< \brief (TWIHS1) Master Mode Register */ + #define REG_TWIHS1_SMR (*(__IO uint32_t*)0x4001C008U) /**< \brief (TWIHS1) Slave Mode Register */ + #define REG_TWIHS1_IADR (*(__IO uint32_t*)0x4001C00CU) /**< \brief (TWIHS1) Internal Address Register */ + #define REG_TWIHS1_CWGR (*(__IO uint32_t*)0x4001C010U) /**< \brief (TWIHS1) Clock Waveform Generator Register */ + #define REG_TWIHS1_SR (*(__I uint32_t*)0x4001C020U) /**< \brief (TWIHS1) Status Register */ + #define REG_TWIHS1_IER (*(__O uint32_t*)0x4001C024U) /**< \brief (TWIHS1) Interrupt Enable Register */ + #define REG_TWIHS1_IDR (*(__O uint32_t*)0x4001C028U) /**< \brief (TWIHS1) Interrupt Disable Register */ + #define REG_TWIHS1_IMR (*(__I uint32_t*)0x4001C02CU) /**< \brief (TWIHS1) Interrupt Mask Register */ + #define REG_TWIHS1_RHR (*(__I uint32_t*)0x4001C030U) /**< \brief (TWIHS1) Receive Holding Register */ + #define REG_TWIHS1_THR (*(__O uint32_t*)0x4001C034U) /**< \brief (TWIHS1) Transmit Holding Register */ + #define REG_TWIHS1_SMBTR (*(__IO uint32_t*)0x4001C038U) /**< \brief (TWIHS1) SMBus Timing Register */ + #define REG_TWIHS1_FILTR (*(__IO uint32_t*)0x4001C044U) /**< \brief (TWIHS1) Filter Register */ + #define REG_TWIHS1_SWMR (*(__IO uint32_t*)0x4001C04CU) /**< \brief (TWIHS1) SleepWalking Matching Register */ + #define REG_TWIHS1_DR (*(__I uint32_t*)0x4001C0D0U) /**< \brief (TWIHS1) Debug Register */ + #define REG_TWIHS1_WPMR (*(__IO uint32_t*)0x4001C0E4U) /**< \brief (TWIHS1) Write Protection Mode Register */ + #define REG_TWIHS1_WPSR (*(__I uint32_t*)0x4001C0E8U) /**< \brief (TWIHS1) Write Protection Status Register */ + #define REG_TWIHS1_VER (*(__I uint32_t*)0x4001C0FCU) /**< \brief (TWIHS1) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TWIHS1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h new file mode 100644 index 00000000..bedb4b91 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h @@ -0,0 +1,79 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_TWIHS2_INSTANCE_ +#define _SAME70_TWIHS2_INSTANCE_ + +/* ========== Register definition for TWIHS2 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_TWIHS2_CR (0x40060000U) /**< \brief (TWIHS2) Control Register */ + #define REG_TWIHS2_MMR (0x40060004U) /**< \brief (TWIHS2) Master Mode Register */ + #define REG_TWIHS2_SMR (0x40060008U) /**< \brief (TWIHS2) Slave Mode Register */ + #define REG_TWIHS2_IADR (0x4006000CU) /**< \brief (TWIHS2) Internal Address Register */ + #define REG_TWIHS2_CWGR (0x40060010U) /**< \brief (TWIHS2) Clock Waveform Generator Register */ + #define REG_TWIHS2_SR (0x40060020U) /**< \brief (TWIHS2) Status Register */ + #define REG_TWIHS2_IER (0x40060024U) /**< \brief (TWIHS2) Interrupt Enable Register */ + #define REG_TWIHS2_IDR (0x40060028U) /**< \brief (TWIHS2) Interrupt Disable Register */ + #define REG_TWIHS2_IMR (0x4006002CU) /**< \brief (TWIHS2) Interrupt Mask Register */ + #define REG_TWIHS2_RHR (0x40060030U) /**< \brief (TWIHS2) Receive Holding Register */ + #define REG_TWIHS2_THR (0x40060034U) /**< \brief (TWIHS2) Transmit Holding Register */ + #define REG_TWIHS2_SMBTR (0x40060038U) /**< \brief (TWIHS2) SMBus Timing Register */ + #define REG_TWIHS2_FILTR (0x40060044U) /**< \brief (TWIHS2) Filter Register */ + #define REG_TWIHS2_SWMR (0x4006004CU) /**< \brief (TWIHS2) SleepWalking Matching Register */ + #define REG_TWIHS2_DR (0x400600D0U) /**< \brief (TWIHS2) Debug Register */ + #define REG_TWIHS2_WPMR (0x400600E4U) /**< \brief (TWIHS2) Write Protection Mode Register */ + #define REG_TWIHS2_WPSR (0x400600E8U) /**< \brief (TWIHS2) Write Protection Status Register */ + #define REG_TWIHS2_VER (0x400600FCU) /**< \brief (TWIHS2) Version Register */ +#else + #define REG_TWIHS2_CR (*(__O uint32_t*)0x40060000U) /**< \brief (TWIHS2) Control Register */ + #define REG_TWIHS2_MMR (*(__IO uint32_t*)0x40060004U) /**< \brief (TWIHS2) Master Mode Register */ + #define REG_TWIHS2_SMR (*(__IO uint32_t*)0x40060008U) /**< \brief (TWIHS2) Slave Mode Register */ + #define REG_TWIHS2_IADR (*(__IO uint32_t*)0x4006000CU) /**< \brief (TWIHS2) Internal Address Register */ + #define REG_TWIHS2_CWGR (*(__IO uint32_t*)0x40060010U) /**< \brief (TWIHS2) Clock Waveform Generator Register */ + #define REG_TWIHS2_SR (*(__I uint32_t*)0x40060020U) /**< \brief (TWIHS2) Status Register */ + #define REG_TWIHS2_IER (*(__O uint32_t*)0x40060024U) /**< \brief (TWIHS2) Interrupt Enable Register */ + #define REG_TWIHS2_IDR (*(__O uint32_t*)0x40060028U) /**< \brief (TWIHS2) Interrupt Disable Register */ + #define REG_TWIHS2_IMR (*(__I uint32_t*)0x4006002CU) /**< \brief (TWIHS2) Interrupt Mask Register */ + #define REG_TWIHS2_RHR (*(__I uint32_t*)0x40060030U) /**< \brief (TWIHS2) Receive Holding Register */ + #define REG_TWIHS2_THR (*(__O uint32_t*)0x40060034U) /**< \brief (TWIHS2) Transmit Holding Register */ + #define REG_TWIHS2_SMBTR (*(__IO uint32_t*)0x40060038U) /**< \brief (TWIHS2) SMBus Timing Register */ + #define REG_TWIHS2_FILTR (*(__IO uint32_t*)0x40060044U) /**< \brief (TWIHS2) Filter Register */ + #define REG_TWIHS2_SWMR (*(__IO uint32_t*)0x4006004CU) /**< \brief (TWIHS2) SleepWalking Matching Register */ + #define REG_TWIHS2_DR (*(__I uint32_t*)0x400600D0U) /**< \brief (TWIHS2) Debug Register */ + #define REG_TWIHS2_WPMR (*(__IO uint32_t*)0x400600E4U) /**< \brief (TWIHS2) Write Protection Mode Register */ + #define REG_TWIHS2_WPSR (*(__I uint32_t*)0x400600E8U) /**< \brief (TWIHS2) Write Protection Status Register */ + #define REG_TWIHS2_VER (*(__I uint32_t*)0x400600FCU) /**< \brief (TWIHS2) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_TWIHS2_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h new file mode 100644 index 00000000..e3f2d2ad --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h @@ -0,0 +1,67 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UART0_INSTANCE_ +#define _SAME70_UART0_INSTANCE_ + +/* ========== Register definition for UART0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_UART0_CR (0x400E0800U) /**< \brief (UART0) Control Register */ + #define REG_UART0_MR (0x400E0804U) /**< \brief (UART0) Mode Register */ + #define REG_UART0_IER (0x400E0808U) /**< \brief (UART0) Interrupt Enable Register */ + #define REG_UART0_IDR (0x400E080CU) /**< \brief (UART0) Interrupt Disable Register */ + #define REG_UART0_IMR (0x400E0810U) /**< \brief (UART0) Interrupt Mask Register */ + #define REG_UART0_SR (0x400E0814U) /**< \brief (UART0) Status Register */ + #define REG_UART0_RHR (0x400E0818U) /**< \brief (UART0) Receive Holding Register */ + #define REG_UART0_THR (0x400E081CU) /**< \brief (UART0) Transmit Holding Register */ + #define REG_UART0_BRGR (0x400E0820U) /**< \brief (UART0) Baud Rate Generator Register */ + #define REG_UART0_CMPR (0x400E0824U) /**< \brief (UART0) Comparison Register */ + #define REG_UART0_WPMR (0x400E08E4U) /**< \brief (UART0) Write Protection Mode Register */ + #define REG_UART0_VERSION (0x400E08FCU) /**< \brief (UART0) Version Register */ +#else + #define REG_UART0_CR (*(__O uint32_t*)0x400E0800U) /**< \brief (UART0) Control Register */ + #define REG_UART0_MR (*(__IO uint32_t*)0x400E0804U) /**< \brief (UART0) Mode Register */ + #define REG_UART0_IER (*(__O uint32_t*)0x400E0808U) /**< \brief (UART0) Interrupt Enable Register */ + #define REG_UART0_IDR (*(__O uint32_t*)0x400E080CU) /**< \brief (UART0) Interrupt Disable Register */ + #define REG_UART0_IMR (*(__I uint32_t*)0x400E0810U) /**< \brief (UART0) Interrupt Mask Register */ + #define REG_UART0_SR (*(__I uint32_t*)0x400E0814U) /**< \brief (UART0) Status Register */ + #define REG_UART0_RHR (*(__I uint32_t*)0x400E0818U) /**< \brief (UART0) Receive Holding Register */ + #define REG_UART0_THR (*(__O uint32_t*)0x400E081CU) /**< \brief (UART0) Transmit Holding Register */ + #define REG_UART0_BRGR (*(__IO uint32_t*)0x400E0820U) /**< \brief (UART0) Baud Rate Generator Register */ + #define REG_UART0_CMPR (*(__IO uint32_t*)0x400E0824U) /**< \brief (UART0) Comparison Register */ + #define REG_UART0_WPMR (*(__IO uint32_t*)0x400E08E4U) /**< \brief (UART0) Write Protection Mode Register */ + #define REG_UART0_VERSION (*(__I uint32_t*)0x400E08FCU) /**< \brief (UART0) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_UART0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h new file mode 100644 index 00000000..b1c2be7c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h @@ -0,0 +1,67 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UART1_INSTANCE_ +#define _SAME70_UART1_INSTANCE_ + +/* ========== Register definition for UART1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_UART1_CR (0x400E0A00U) /**< \brief (UART1) Control Register */ + #define REG_UART1_MR (0x400E0A04U) /**< \brief (UART1) Mode Register */ + #define REG_UART1_IER (0x400E0A08U) /**< \brief (UART1) Interrupt Enable Register */ + #define REG_UART1_IDR (0x400E0A0CU) /**< \brief (UART1) Interrupt Disable Register */ + #define REG_UART1_IMR (0x400E0A10U) /**< \brief (UART1) Interrupt Mask Register */ + #define REG_UART1_SR (0x400E0A14U) /**< \brief (UART1) Status Register */ + #define REG_UART1_RHR (0x400E0A18U) /**< \brief (UART1) Receive Holding Register */ + #define REG_UART1_THR (0x400E0A1CU) /**< \brief (UART1) Transmit Holding Register */ + #define REG_UART1_BRGR (0x400E0A20U) /**< \brief (UART1) Baud Rate Generator Register */ + #define REG_UART1_CMPR (0x400E0A24U) /**< \brief (UART1) Comparison Register */ + #define REG_UART1_WPMR (0x400E0AE4U) /**< \brief (UART1) Write Protection Mode Register */ + #define REG_UART1_VERSION (0x400E0AFCU) /**< \brief (UART1) Version Register */ +#else + #define REG_UART1_CR (*(__O uint32_t*)0x400E0A00U) /**< \brief (UART1) Control Register */ + #define REG_UART1_MR (*(__IO uint32_t*)0x400E0A04U) /**< \brief (UART1) Mode Register */ + #define REG_UART1_IER (*(__O uint32_t*)0x400E0A08U) /**< \brief (UART1) Interrupt Enable Register */ + #define REG_UART1_IDR (*(__O uint32_t*)0x400E0A0CU) /**< \brief (UART1) Interrupt Disable Register */ + #define REG_UART1_IMR (*(__I uint32_t*)0x400E0A10U) /**< \brief (UART1) Interrupt Mask Register */ + #define REG_UART1_SR (*(__I uint32_t*)0x400E0A14U) /**< \brief (UART1) Status Register */ + #define REG_UART1_RHR (*(__I uint32_t*)0x400E0A18U) /**< \brief (UART1) Receive Holding Register */ + #define REG_UART1_THR (*(__O uint32_t*)0x400E0A1CU) /**< \brief (UART1) Transmit Holding Register */ + #define REG_UART1_BRGR (*(__IO uint32_t*)0x400E0A20U) /**< \brief (UART1) Baud Rate Generator Register */ + #define REG_UART1_CMPR (*(__IO uint32_t*)0x400E0A24U) /**< \brief (UART1) Comparison Register */ + #define REG_UART1_WPMR (*(__IO uint32_t*)0x400E0AE4U) /**< \brief (UART1) Write Protection Mode Register */ + #define REG_UART1_VERSION (*(__I uint32_t*)0x400E0AFCU) /**< \brief (UART1) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_UART1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h new file mode 100644 index 00000000..70fefd05 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h @@ -0,0 +1,67 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UART2_INSTANCE_ +#define _SAME70_UART2_INSTANCE_ + +/* ========== Register definition for UART2 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_UART2_CR (0x400E1A00U) /**< \brief (UART2) Control Register */ + #define REG_UART2_MR (0x400E1A04U) /**< \brief (UART2) Mode Register */ + #define REG_UART2_IER (0x400E1A08U) /**< \brief (UART2) Interrupt Enable Register */ + #define REG_UART2_IDR (0x400E1A0CU) /**< \brief (UART2) Interrupt Disable Register */ + #define REG_UART2_IMR (0x400E1A10U) /**< \brief (UART2) Interrupt Mask Register */ + #define REG_UART2_SR (0x400E1A14U) /**< \brief (UART2) Status Register */ + #define REG_UART2_RHR (0x400E1A18U) /**< \brief (UART2) Receive Holding Register */ + #define REG_UART2_THR (0x400E1A1CU) /**< \brief (UART2) Transmit Holding Register */ + #define REG_UART2_BRGR (0x400E1A20U) /**< \brief (UART2) Baud Rate Generator Register */ + #define REG_UART2_CMPR (0x400E1A24U) /**< \brief (UART2) Comparison Register */ + #define REG_UART2_WPMR (0x400E1AE4U) /**< \brief (UART2) Write Protection Mode Register */ + #define REG_UART2_VERSION (0x400E1AFCU) /**< \brief (UART2) Version Register */ +#else + #define REG_UART2_CR (*(__O uint32_t*)0x400E1A00U) /**< \brief (UART2) Control Register */ + #define REG_UART2_MR (*(__IO uint32_t*)0x400E1A04U) /**< \brief (UART2) Mode Register */ + #define REG_UART2_IER (*(__O uint32_t*)0x400E1A08U) /**< \brief (UART2) Interrupt Enable Register */ + #define REG_UART2_IDR (*(__O uint32_t*)0x400E1A0CU) /**< \brief (UART2) Interrupt Disable Register */ + #define REG_UART2_IMR (*(__I uint32_t*)0x400E1A10U) /**< \brief (UART2) Interrupt Mask Register */ + #define REG_UART2_SR (*(__I uint32_t*)0x400E1A14U) /**< \brief (UART2) Status Register */ + #define REG_UART2_RHR (*(__I uint32_t*)0x400E1A18U) /**< \brief (UART2) Receive Holding Register */ + #define REG_UART2_THR (*(__O uint32_t*)0x400E1A1CU) /**< \brief (UART2) Transmit Holding Register */ + #define REG_UART2_BRGR (*(__IO uint32_t*)0x400E1A20U) /**< \brief (UART2) Baud Rate Generator Register */ + #define REG_UART2_CMPR (*(__IO uint32_t*)0x400E1A24U) /**< \brief (UART2) Comparison Register */ + #define REG_UART2_WPMR (*(__IO uint32_t*)0x400E1AE4U) /**< \brief (UART2) Write Protection Mode Register */ + #define REG_UART2_VERSION (*(__I uint32_t*)0x400E1AFCU) /**< \brief (UART2) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_UART2_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h new file mode 100644 index 00000000..1f932b14 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h @@ -0,0 +1,66 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70_UART3_INSTANCE_ +#define _SAME70_UART3_INSTANCE_ + +/* ========== Register definition for UART3 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_UART3_CR (0x400E1C00U) /**< \brief (UART3) Control Register */ + #define REG_UART3_MR (0x400E1C04U) /**< \brief (UART3) Mode Register */ + #define REG_UART3_IER (0x400E1C08U) /**< \brief (UART3) Interrupt Enable Register */ + #define REG_UART3_IDR (0x400E1C0CU) /**< \brief (UART3) Interrupt Disable Register */ + #define REG_UART3_IMR (0x400E1C10U) /**< \brief (UART3) Interrupt Mask Register */ + #define REG_UART3_SR (0x400E1C14U) /**< \brief (UART3) Status Register */ + #define REG_UART3_RHR (0x400E1C18U) /**< \brief (UART3) Receive Holding Register */ + #define REG_UART3_THR (0x400E1C1CU) /**< \brief (UART3) Transmit Holding Register */ + #define REG_UART3_BRGR (0x400E1C20U) /**< \brief (UART3) Baud Rate Generator Register */ + #define REG_UART3_CMPR (0x400E1C24U) /**< \brief (UART3) Comparison Register */ + #define REG_UART3_WPMR (0x400E1CE4U) /**< \brief (UART3) Write Protection Mode Register */ + #define REG_UART3_VERSION (0x400E1CFCU) /**< \brief (UART3) Version Register */ +#else + #define REG_UART3_CR (*(__O uint32_t*)0x400E1C00U) /**< \brief (UART3) Control Register */ + #define REG_UART3_MR (*(__IO uint32_t*)0x400E1C04U) /**< \brief (UART3) Mode Register */ + #define REG_UART3_IER (*(__O uint32_t*)0x400E1C08U) /**< \brief (UART3) Interrupt Enable Register */ + #define REG_UART3_IDR (*(__O uint32_t*)0x400E1C0CU) /**< \brief (UART3) Interrupt Disable Register */ + #define REG_UART3_IMR (*(__I uint32_t*)0x400E1C10U) /**< \brief (UART3) Interrupt Mask Register */ + #define REG_UART3_SR (*(__I uint32_t*)0x400E1C14U) /**< \brief (UART3) Status Register */ + #define REG_UART3_RHR (*(__I uint32_t*)0x400E1C18U) /**< \brief (UART3) Receive Holding Register */ + #define REG_UART3_THR (*(__O uint32_t*)0x400E1C1CU) /**< \brief (UART3) Transmit Holding Register */ + #define REG_UART3_BRGR (*(__IO uint32_t*)0x400E1C20U) /**< \brief (UART3) Baud Rate Generator Register */ + #define REG_UART3_CMPR (*(__IO uint32_t*)0x400E1C24U) /**< \brief (UART3) Comparison Register */ + #define REG_UART3_WPMR (*(__IO uint32_t*)0x400E1CE4U) /**< \brief (UART3) Write Protection Mode Register */ + #define REG_UART3_VERSION (*(__I uint32_t*)0x400E1CFCU) /**< \brief (UART3) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_UART3_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h new file mode 100644 index 00000000..ba51c947 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h @@ -0,0 +1,67 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UART4_INSTANCE_ +#define _SAME70_UART4_INSTANCE_ + +/* ========== Register definition for UART4 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_UART4_CR (0x400E1E00U) /**< \brief (UART4) Control Register */ + #define REG_UART4_MR (0x400E1E04U) /**< \brief (UART4) Mode Register */ + #define REG_UART4_IER (0x400E1E08U) /**< \brief (UART4) Interrupt Enable Register */ + #define REG_UART4_IDR (0x400E1E0CU) /**< \brief (UART4) Interrupt Disable Register */ + #define REG_UART4_IMR (0x400E1E10U) /**< \brief (UART4) Interrupt Mask Register */ + #define REG_UART4_SR (0x400E1E14U) /**< \brief (UART4) Status Register */ + #define REG_UART4_RHR (0x400E1E18U) /**< \brief (UART4) Receive Holding Register */ + #define REG_UART4_THR (0x400E1E1CU) /**< \brief (UART4) Transmit Holding Register */ + #define REG_UART4_BRGR (0x400E1E20U) /**< \brief (UART4) Baud Rate Generator Register */ + #define REG_UART4_CMPR (0x400E1E24U) /**< \brief (UART4) Comparison Register */ + #define REG_UART4_WPMR (0x400E1EE4U) /**< \brief (UART4) Write Protection Mode Register */ + #define REG_UART4_VERSION (0x400E1EFCU) /**< \brief (UART4) Version Register */ +#else + #define REG_UART4_CR (*(__O uint32_t*)0x400E1E00U) /**< \brief (UART4) Control Register */ + #define REG_UART4_MR (*(__IO uint32_t*)0x400E1E04U) /**< \brief (UART4) Mode Register */ + #define REG_UART4_IER (*(__O uint32_t*)0x400E1E08U) /**< \brief (UART4) Interrupt Enable Register */ + #define REG_UART4_IDR (*(__O uint32_t*)0x400E1E0CU) /**< \brief (UART4) Interrupt Disable Register */ + #define REG_UART4_IMR (*(__I uint32_t*)0x400E1E10U) /**< \brief (UART4) Interrupt Mask Register */ + #define REG_UART4_SR (*(__I uint32_t*)0x400E1E14U) /**< \brief (UART4) Status Register */ + #define REG_UART4_RHR (*(__I uint32_t*)0x400E1E18U) /**< \brief (UART4) Receive Holding Register */ + #define REG_UART4_THR (*(__O uint32_t*)0x400E1E1CU) /**< \brief (UART4) Transmit Holding Register */ + #define REG_UART4_BRGR (*(__IO uint32_t*)0x400E1E20U) /**< \brief (UART4) Baud Rate Generator Register */ + #define REG_UART4_CMPR (*(__IO uint32_t*)0x400E1E24U) /**< \brief (UART4) Comparison Register */ + #define REG_UART4_WPMR (*(__IO uint32_t*)0x400E1EE4U) /**< \brief (UART4) Write Protection Mode Register */ + #define REG_UART4_VERSION (*(__I uint32_t*)0x400E1EFCU) /**< \brief (UART4) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_UART4_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h new file mode 100644 index 00000000..3f523ae0 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h @@ -0,0 +1,107 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_USART0_INSTANCE_ +#define _SAME70_USART0_INSTANCE_ + +/* ========== Register definition for USART0 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_USART0_CR (0x40024000U) /**< \brief (USART0) Control Register */ + #define REG_USART0_MR (0x40024004U) /**< \brief (USART0) Mode Register */ + #define REG_USART0_IER (0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ + #define REG_USART0_IDR (0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ + #define REG_USART0_IMR (0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ + #define REG_USART0_CSR (0x40024014U) /**< \brief (USART0) Channel Status Register */ + #define REG_USART0_RHR (0x40024018U) /**< \brief (USART0) Receive Holding Register */ + #define REG_USART0_THR (0x4002401CU) /**< \brief (USART0) Transmit Holding Register */ + #define REG_USART0_BRGR (0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ + #define REG_USART0_RTOR (0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ + #define REG_USART0_TTGR (0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ + #define REG_USART0_FIDI (0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ + #define REG_USART0_NER (0x40024044U) /**< \brief (USART0) Number of Errors Register */ + #define REG_USART0_IF (0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ + #define REG_USART0_MAN (0x40024050U) /**< \brief (USART0) Manchester Configuration Register */ + #define REG_USART0_LINMR (0x40024054U) /**< \brief (USART0) LIN Mode Register */ + #define REG_USART0_LINIR (0x40024058U) /**< \brief (USART0) LIN Identifier Register */ + #define REG_USART0_LINBRR (0x4002405CU) /**< \brief (USART0) LIN Baud Rate Register */ + #define REG_USART0_LONMR (0x40024060U) /**< \brief (USART0) LON Mode Register */ + #define REG_USART0_LONPR (0x40024064U) /**< \brief (USART0) LON Preamble Register */ + #define REG_USART0_LONDL (0x40024068U) /**< \brief (USART0) LON Data Length Register */ + #define REG_USART0_LONL2HDR (0x4002406CU) /**< \brief (USART0) LON L2HDR Register */ + #define REG_USART0_LONBL (0x40024070U) /**< \brief (USART0) LON Backlog Register */ + #define REG_USART0_LONB1TX (0x40024074U) /**< \brief (USART0) LON Beta1 Tx Register */ + #define REG_USART0_LONB1RX (0x40024078U) /**< \brief (USART0) LON Beta1 Rx Register */ + #define REG_USART0_LONPRIO (0x4002407CU) /**< \brief (USART0) LON Priority Register */ + #define REG_USART0_IDTTX (0x40024080U) /**< \brief (USART0) LON IDT Tx Register */ + #define REG_USART0_IDTRX (0x40024084U) /**< \brief (USART0) LON IDT Rx Register */ + #define REG_USART0_ICDIFF (0x40024088U) /**< \brief (USART0) IC DIFF Register */ + #define REG_USART0_WPMR (0x400240E4U) /**< \brief (USART0) Write Protection Mode Register */ + #define REG_USART0_WPSR (0x400240E8U) /**< \brief (USART0) Write Protection Status Register */ + #define REG_USART0_VERSION (0x400240FCU) /**< \brief (USART0) Version Register */ +#else + #define REG_USART0_CR (*(__O uint32_t*)0x40024000U) /**< \brief (USART0) Control Register */ + #define REG_USART0_MR (*(__IO uint32_t*)0x40024004U) /**< \brief (USART0) Mode Register */ + #define REG_USART0_IER (*(__O uint32_t*)0x40024008U) /**< \brief (USART0) Interrupt Enable Register */ + #define REG_USART0_IDR (*(__O uint32_t*)0x4002400CU) /**< \brief (USART0) Interrupt Disable Register */ + #define REG_USART0_IMR (*(__I uint32_t*)0x40024010U) /**< \brief (USART0) Interrupt Mask Register */ + #define REG_USART0_CSR (*(__I uint32_t*)0x40024014U) /**< \brief (USART0) Channel Status Register */ + #define REG_USART0_RHR (*(__I uint32_t*)0x40024018U) /**< \brief (USART0) Receive Holding Register */ + #define REG_USART0_THR (*(__O uint32_t*)0x4002401CU) /**< \brief (USART0) Transmit Holding Register */ + #define REG_USART0_BRGR (*(__IO uint32_t*)0x40024020U) /**< \brief (USART0) Baud Rate Generator Register */ + #define REG_USART0_RTOR (*(__IO uint32_t*)0x40024024U) /**< \brief (USART0) Receiver Time-out Register */ + #define REG_USART0_TTGR (*(__IO uint32_t*)0x40024028U) /**< \brief (USART0) Transmitter Timeguard Register */ + #define REG_USART0_FIDI (*(__IO uint32_t*)0x40024040U) /**< \brief (USART0) FI DI Ratio Register */ + #define REG_USART0_NER (*(__I uint32_t*)0x40024044U) /**< \brief (USART0) Number of Errors Register */ + #define REG_USART0_IF (*(__IO uint32_t*)0x4002404CU) /**< \brief (USART0) IrDA Filter Register */ + #define REG_USART0_MAN (*(__IO uint32_t*)0x40024050U) /**< \brief (USART0) Manchester Configuration Register */ + #define REG_USART0_LINMR (*(__IO uint32_t*)0x40024054U) /**< \brief (USART0) LIN Mode Register */ + #define REG_USART0_LINIR (*(__IO uint32_t*)0x40024058U) /**< \brief (USART0) LIN Identifier Register */ + #define REG_USART0_LINBRR (*(__I uint32_t*)0x4002405CU) /**< \brief (USART0) LIN Baud Rate Register */ + #define REG_USART0_LONMR (*(__IO uint32_t*)0x40024060U) /**< \brief (USART0) LON Mode Register */ + #define REG_USART0_LONPR (*(__IO uint32_t*)0x40024064U) /**< \brief (USART0) LON Preamble Register */ + #define REG_USART0_LONDL (*(__IO uint32_t*)0x40024068U) /**< \brief (USART0) LON Data Length Register */ + #define REG_USART0_LONL2HDR (*(__IO uint32_t*)0x4002406CU) /**< \brief (USART0) LON L2HDR Register */ + #define REG_USART0_LONBL (*(__I uint32_t*)0x40024070U) /**< \brief (USART0) LON Backlog Register */ + #define REG_USART0_LONB1TX (*(__IO uint32_t*)0x40024074U) /**< \brief (USART0) LON Beta1 Tx Register */ + #define REG_USART0_LONB1RX (*(__IO uint32_t*)0x40024078U) /**< \brief (USART0) LON Beta1 Rx Register */ + #define REG_USART0_LONPRIO (*(__IO uint32_t*)0x4002407CU) /**< \brief (USART0) LON Priority Register */ + #define REG_USART0_IDTTX (*(__IO uint32_t*)0x40024080U) /**< \brief (USART0) LON IDT Tx Register */ + #define REG_USART0_IDTRX (*(__IO uint32_t*)0x40024084U) /**< \brief (USART0) LON IDT Rx Register */ + #define REG_USART0_ICDIFF (*(__IO uint32_t*)0x40024088U) /**< \brief (USART0) IC DIFF Register */ + #define REG_USART0_WPMR (*(__IO uint32_t*)0x400240E4U) /**< \brief (USART0) Write Protection Mode Register */ + #define REG_USART0_WPSR (*(__I uint32_t*)0x400240E8U) /**< \brief (USART0) Write Protection Status Register */ + #define REG_USART0_VERSION (*(__I uint32_t*)0x400240FCU) /**< \brief (USART0) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_USART0_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h new file mode 100644 index 00000000..5b0fe493 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h @@ -0,0 +1,107 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_USART1_INSTANCE_ +#define _SAME70_USART1_INSTANCE_ + +/* ========== Register definition for USART1 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_USART1_CR (0x40028000U) /**< \brief (USART1) Control Register */ + #define REG_USART1_MR (0x40028004U) /**< \brief (USART1) Mode Register */ + #define REG_USART1_IER (0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ + #define REG_USART1_IDR (0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ + #define REG_USART1_IMR (0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ + #define REG_USART1_CSR (0x40028014U) /**< \brief (USART1) Channel Status Register */ + #define REG_USART1_RHR (0x40028018U) /**< \brief (USART1) Receive Holding Register */ + #define REG_USART1_THR (0x4002801CU) /**< \brief (USART1) Transmit Holding Register */ + #define REG_USART1_BRGR (0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ + #define REG_USART1_RTOR (0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ + #define REG_USART1_TTGR (0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ + #define REG_USART1_FIDI (0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ + #define REG_USART1_NER (0x40028044U) /**< \brief (USART1) Number of Errors Register */ + #define REG_USART1_IF (0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ + #define REG_USART1_MAN (0x40028050U) /**< \brief (USART1) Manchester Configuration Register */ + #define REG_USART1_LINMR (0x40028054U) /**< \brief (USART1) LIN Mode Register */ + #define REG_USART1_LINIR (0x40028058U) /**< \brief (USART1) LIN Identifier Register */ + #define REG_USART1_LINBRR (0x4002805CU) /**< \brief (USART1) LIN Baud Rate Register */ + #define REG_USART1_LONMR (0x40028060U) /**< \brief (USART1) LON Mode Register */ + #define REG_USART1_LONPR (0x40028064U) /**< \brief (USART1) LON Preamble Register */ + #define REG_USART1_LONDL (0x40028068U) /**< \brief (USART1) LON Data Length Register */ + #define REG_USART1_LONL2HDR (0x4002806CU) /**< \brief (USART1) LON L2HDR Register */ + #define REG_USART1_LONBL (0x40028070U) /**< \brief (USART1) LON Backlog Register */ + #define REG_USART1_LONB1TX (0x40028074U) /**< \brief (USART1) LON Beta1 Tx Register */ + #define REG_USART1_LONB1RX (0x40028078U) /**< \brief (USART1) LON Beta1 Rx Register */ + #define REG_USART1_LONPRIO (0x4002807CU) /**< \brief (USART1) LON Priority Register */ + #define REG_USART1_IDTTX (0x40028080U) /**< \brief (USART1) LON IDT Tx Register */ + #define REG_USART1_IDTRX (0x40028084U) /**< \brief (USART1) LON IDT Rx Register */ + #define REG_USART1_ICDIFF (0x40028088U) /**< \brief (USART1) IC DIFF Register */ + #define REG_USART1_WPMR (0x400280E4U) /**< \brief (USART1) Write Protection Mode Register */ + #define REG_USART1_WPSR (0x400280E8U) /**< \brief (USART1) Write Protection Status Register */ + #define REG_USART1_VERSION (0x400280FCU) /**< \brief (USART1) Version Register */ +#else + #define REG_USART1_CR (*(__O uint32_t*)0x40028000U) /**< \brief (USART1) Control Register */ + #define REG_USART1_MR (*(__IO uint32_t*)0x40028004U) /**< \brief (USART1) Mode Register */ + #define REG_USART1_IER (*(__O uint32_t*)0x40028008U) /**< \brief (USART1) Interrupt Enable Register */ + #define REG_USART1_IDR (*(__O uint32_t*)0x4002800CU) /**< \brief (USART1) Interrupt Disable Register */ + #define REG_USART1_IMR (*(__I uint32_t*)0x40028010U) /**< \brief (USART1) Interrupt Mask Register */ + #define REG_USART1_CSR (*(__I uint32_t*)0x40028014U) /**< \brief (USART1) Channel Status Register */ + #define REG_USART1_RHR (*(__I uint32_t*)0x40028018U) /**< \brief (USART1) Receive Holding Register */ + #define REG_USART1_THR (*(__O uint32_t*)0x4002801CU) /**< \brief (USART1) Transmit Holding Register */ + #define REG_USART1_BRGR (*(__IO uint32_t*)0x40028020U) /**< \brief (USART1) Baud Rate Generator Register */ + #define REG_USART1_RTOR (*(__IO uint32_t*)0x40028024U) /**< \brief (USART1) Receiver Time-out Register */ + #define REG_USART1_TTGR (*(__IO uint32_t*)0x40028028U) /**< \brief (USART1) Transmitter Timeguard Register */ + #define REG_USART1_FIDI (*(__IO uint32_t*)0x40028040U) /**< \brief (USART1) FI DI Ratio Register */ + #define REG_USART1_NER (*(__I uint32_t*)0x40028044U) /**< \brief (USART1) Number of Errors Register */ + #define REG_USART1_IF (*(__IO uint32_t*)0x4002804CU) /**< \brief (USART1) IrDA Filter Register */ + #define REG_USART1_MAN (*(__IO uint32_t*)0x40028050U) /**< \brief (USART1) Manchester Configuration Register */ + #define REG_USART1_LINMR (*(__IO uint32_t*)0x40028054U) /**< \brief (USART1) LIN Mode Register */ + #define REG_USART1_LINIR (*(__IO uint32_t*)0x40028058U) /**< \brief (USART1) LIN Identifier Register */ + #define REG_USART1_LINBRR (*(__I uint32_t*)0x4002805CU) /**< \brief (USART1) LIN Baud Rate Register */ + #define REG_USART1_LONMR (*(__IO uint32_t*)0x40028060U) /**< \brief (USART1) LON Mode Register */ + #define REG_USART1_LONPR (*(__IO uint32_t*)0x40028064U) /**< \brief (USART1) LON Preamble Register */ + #define REG_USART1_LONDL (*(__IO uint32_t*)0x40028068U) /**< \brief (USART1) LON Data Length Register */ + #define REG_USART1_LONL2HDR (*(__IO uint32_t*)0x4002806CU) /**< \brief (USART1) LON L2HDR Register */ + #define REG_USART1_LONBL (*(__I uint32_t*)0x40028070U) /**< \brief (USART1) LON Backlog Register */ + #define REG_USART1_LONB1TX (*(__IO uint32_t*)0x40028074U) /**< \brief (USART1) LON Beta1 Tx Register */ + #define REG_USART1_LONB1RX (*(__IO uint32_t*)0x40028078U) /**< \brief (USART1) LON Beta1 Rx Register */ + #define REG_USART1_LONPRIO (*(__IO uint32_t*)0x4002807CU) /**< \brief (USART1) LON Priority Register */ + #define REG_USART1_IDTTX (*(__IO uint32_t*)0x40028080U) /**< \brief (USART1) LON IDT Tx Register */ + #define REG_USART1_IDTRX (*(__IO uint32_t*)0x40028084U) /**< \brief (USART1) LON IDT Rx Register */ + #define REG_USART1_ICDIFF (*(__IO uint32_t*)0x40028088U) /**< \brief (USART1) IC DIFF Register */ + #define REG_USART1_WPMR (*(__IO uint32_t*)0x400280E4U) /**< \brief (USART1) Write Protection Mode Register */ + #define REG_USART1_WPSR (*(__I uint32_t*)0x400280E8U) /**< \brief (USART1) Write Protection Status Register */ + #define REG_USART1_VERSION (*(__I uint32_t*)0x400280FCU) /**< \brief (USART1) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_USART1_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h new file mode 100644 index 00000000..575c10c8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h @@ -0,0 +1,107 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_USART2_INSTANCE_ +#define _SAME70_USART2_INSTANCE_ + +/* ========== Register definition for USART2 peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_USART2_CR (0x4002C000U) /**< \brief (USART2) Control Register */ + #define REG_USART2_MR (0x4002C004U) /**< \brief (USART2) Mode Register */ + #define REG_USART2_IER (0x4002C008U) /**< \brief (USART2) Interrupt Enable Register */ + #define REG_USART2_IDR (0x4002C00CU) /**< \brief (USART2) Interrupt Disable Register */ + #define REG_USART2_IMR (0x4002C010U) /**< \brief (USART2) Interrupt Mask Register */ + #define REG_USART2_CSR (0x4002C014U) /**< \brief (USART2) Channel Status Register */ + #define REG_USART2_RHR (0x4002C018U) /**< \brief (USART2) Receive Holding Register */ + #define REG_USART2_THR (0x4002C01CU) /**< \brief (USART2) Transmit Holding Register */ + #define REG_USART2_BRGR (0x4002C020U) /**< \brief (USART2) Baud Rate Generator Register */ + #define REG_USART2_RTOR (0x4002C024U) /**< \brief (USART2) Receiver Time-out Register */ + #define REG_USART2_TTGR (0x4002C028U) /**< \brief (USART2) Transmitter Timeguard Register */ + #define REG_USART2_FIDI (0x4002C040U) /**< \brief (USART2) FI DI Ratio Register */ + #define REG_USART2_NER (0x4002C044U) /**< \brief (USART2) Number of Errors Register */ + #define REG_USART2_IF (0x4002C04CU) /**< \brief (USART2) IrDA Filter Register */ + #define REG_USART2_MAN (0x4002C050U) /**< \brief (USART2) Manchester Configuration Register */ + #define REG_USART2_LINMR (0x4002C054U) /**< \brief (USART2) LIN Mode Register */ + #define REG_USART2_LINIR (0x4002C058U) /**< \brief (USART2) LIN Identifier Register */ + #define REG_USART2_LINBRR (0x4002C05CU) /**< \brief (USART2) LIN Baud Rate Register */ + #define REG_USART2_LONMR (0x4002C060U) /**< \brief (USART2) LON Mode Register */ + #define REG_USART2_LONPR (0x4002C064U) /**< \brief (USART2) LON Preamble Register */ + #define REG_USART2_LONDL (0x4002C068U) /**< \brief (USART2) LON Data Length Register */ + #define REG_USART2_LONL2HDR (0x4002C06CU) /**< \brief (USART2) LON L2HDR Register */ + #define REG_USART2_LONBL (0x4002C070U) /**< \brief (USART2) LON Backlog Register */ + #define REG_USART2_LONB1TX (0x4002C074U) /**< \brief (USART2) LON Beta1 Tx Register */ + #define REG_USART2_LONB1RX (0x4002C078U) /**< \brief (USART2) LON Beta1 Rx Register */ + #define REG_USART2_LONPRIO (0x4002C07CU) /**< \brief (USART2) LON Priority Register */ + #define REG_USART2_IDTTX (0x4002C080U) /**< \brief (USART2) LON IDT Tx Register */ + #define REG_USART2_IDTRX (0x4002C084U) /**< \brief (USART2) LON IDT Rx Register */ + #define REG_USART2_ICDIFF (0x4002C088U) /**< \brief (USART2) IC DIFF Register */ + #define REG_USART2_WPMR (0x4002C0E4U) /**< \brief (USART2) Write Protection Mode Register */ + #define REG_USART2_WPSR (0x4002C0E8U) /**< \brief (USART2) Write Protection Status Register */ + #define REG_USART2_VERSION (0x4002C0FCU) /**< \brief (USART2) Version Register */ +#else + #define REG_USART2_CR (*(__O uint32_t*)0x4002C000U) /**< \brief (USART2) Control Register */ + #define REG_USART2_MR (*(__IO uint32_t*)0x4002C004U) /**< \brief (USART2) Mode Register */ + #define REG_USART2_IER (*(__O uint32_t*)0x4002C008U) /**< \brief (USART2) Interrupt Enable Register */ + #define REG_USART2_IDR (*(__O uint32_t*)0x4002C00CU) /**< \brief (USART2) Interrupt Disable Register */ + #define REG_USART2_IMR (*(__I uint32_t*)0x4002C010U) /**< \brief (USART2) Interrupt Mask Register */ + #define REG_USART2_CSR (*(__I uint32_t*)0x4002C014U) /**< \brief (USART2) Channel Status Register */ + #define REG_USART2_RHR (*(__I uint32_t*)0x4002C018U) /**< \brief (USART2) Receive Holding Register */ + #define REG_USART2_THR (*(__O uint32_t*)0x4002C01CU) /**< \brief (USART2) Transmit Holding Register */ + #define REG_USART2_BRGR (*(__IO uint32_t*)0x4002C020U) /**< \brief (USART2) Baud Rate Generator Register */ + #define REG_USART2_RTOR (*(__IO uint32_t*)0x4002C024U) /**< \brief (USART2) Receiver Time-out Register */ + #define REG_USART2_TTGR (*(__IO uint32_t*)0x4002C028U) /**< \brief (USART2) Transmitter Timeguard Register */ + #define REG_USART2_FIDI (*(__IO uint32_t*)0x4002C040U) /**< \brief (USART2) FI DI Ratio Register */ + #define REG_USART2_NER (*(__I uint32_t*)0x4002C044U) /**< \brief (USART2) Number of Errors Register */ + #define REG_USART2_IF (*(__IO uint32_t*)0x4002C04CU) /**< \brief (USART2) IrDA Filter Register */ + #define REG_USART2_MAN (*(__IO uint32_t*)0x4002C050U) /**< \brief (USART2) Manchester Configuration Register */ + #define REG_USART2_LINMR (*(__IO uint32_t*)0x4002C054U) /**< \brief (USART2) LIN Mode Register */ + #define REG_USART2_LINIR (*(__IO uint32_t*)0x4002C058U) /**< \brief (USART2) LIN Identifier Register */ + #define REG_USART2_LINBRR (*(__I uint32_t*)0x4002C05CU) /**< \brief (USART2) LIN Baud Rate Register */ + #define REG_USART2_LONMR (*(__IO uint32_t*)0x4002C060U) /**< \brief (USART2) LON Mode Register */ + #define REG_USART2_LONPR (*(__IO uint32_t*)0x4002C064U) /**< \brief (USART2) LON Preamble Register */ + #define REG_USART2_LONDL (*(__IO uint32_t*)0x4002C068U) /**< \brief (USART2) LON Data Length Register */ + #define REG_USART2_LONL2HDR (*(__IO uint32_t*)0x4002C06CU) /**< \brief (USART2) LON L2HDR Register */ + #define REG_USART2_LONBL (*(__I uint32_t*)0x4002C070U) /**< \brief (USART2) LON Backlog Register */ + #define REG_USART2_LONB1TX (*(__IO uint32_t*)0x4002C074U) /**< \brief (USART2) LON Beta1 Tx Register */ + #define REG_USART2_LONB1RX (*(__IO uint32_t*)0x4002C078U) /**< \brief (USART2) LON Beta1 Rx Register */ + #define REG_USART2_LONPRIO (*(__IO uint32_t*)0x4002C07CU) /**< \brief (USART2) LON Priority Register */ + #define REG_USART2_IDTTX (*(__IO uint32_t*)0x4002C080U) /**< \brief (USART2) LON IDT Tx Register */ + #define REG_USART2_IDTRX (*(__IO uint32_t*)0x4002C084U) /**< \brief (USART2) LON IDT Rx Register */ + #define REG_USART2_ICDIFF (*(__IO uint32_t*)0x4002C088U) /**< \brief (USART2) IC DIFF Register */ + #define REG_USART2_WPMR (*(__IO uint32_t*)0x4002C0E4U) /**< \brief (USART2) Write Protection Mode Register */ + #define REG_USART2_WPSR (*(__I uint32_t*)0x4002C0E8U) /**< \brief (USART2) Write Protection Status Register */ + #define REG_USART2_VERSION (*(__I uint32_t*)0x4002C0FCU) /**< \brief (USART2) Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_USART2_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h new file mode 100644 index 00000000..3ae80f03 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h @@ -0,0 +1,245 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_USBHS_INSTANCE_ +#define _SAME70_USBHS_INSTANCE_ + +/* ========== Register definition for USBHS peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_USBHS_DEVCTRL (0x40038000U) /**< \brief (USBHS) Device General Control Register */ + #define REG_USBHS_DEVISR (0x40038004U) /**< \brief (USBHS) Device Global Interrupt Status Register */ + #define REG_USBHS_DEVICR (0x40038008U) /**< \brief (USBHS) Device Global Interrupt Clear Register */ + #define REG_USBHS_DEVIFR (0x4003800CU) /**< \brief (USBHS) Device Global Interrupt Set Register */ + #define REG_USBHS_DEVIMR (0x40038010U) /**< \brief (USBHS) Device Global Interrupt Mask Register */ + #define REG_USBHS_DEVIDR (0x40038014U) /**< \brief (USBHS) Device Global Interrupt Disable Register */ + #define REG_USBHS_DEVIER (0x40038018U) /**< \brief (USBHS) Device Global Interrupt Enable Register */ + #define REG_USBHS_DEVEPT (0x4003801CU) /**< \brief (USBHS) Device Endpoint Register */ + #define REG_USBHS_DEVFNUM (0x40038020U) /**< \brief (USBHS) Device Frame Number Register */ + #define REG_USBHS_DEVEPTCFG (0x40038100U) /**< \brief (USBHS) Device Endpoint Configuration Register (n = 0) */ + #define REG_USBHS_DEVEPTISR (0x40038130U) /**< \brief (USBHS) Device Endpoint Status Register (n = 0) */ + #define REG_USBHS_DEVEPTICR (0x40038160U) /**< \brief (USBHS) Device Endpoint Clear Register (n = 0) */ + #define REG_USBHS_DEVEPTIFR (0x40038190U) /**< \brief (USBHS) Device Endpoint Set Register (n = 0) */ + #define REG_USBHS_DEVEPTIMR (0x400381C0U) /**< \brief (USBHS) Device Endpoint Mask Register (n = 0) */ + #define REG_USBHS_DEVEPTIER (0x400381F0U) /**< \brief (USBHS) Device Endpoint Enable Register (n = 0) */ + #define REG_USBHS_DEVEPTIDR (0x40038220U) /**< \brief (USBHS) Device Endpoint Disable Register (n = 0) */ + #define REG_USBHS_DEVDMANXTDSC1 (0x40038310U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 1) */ + #define REG_USBHS_DEVDMAADDRESS1 (0x40038314U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 1) */ + #define REG_USBHS_DEVDMACONTROL1 (0x40038318U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 1) */ + #define REG_USBHS_DEVDMASTATUS1 (0x4003831CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 1) */ + #define REG_USBHS_DEVDMANXTDSC2 (0x40038320U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 2) */ + #define REG_USBHS_DEVDMAADDRESS2 (0x40038324U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 2) */ + #define REG_USBHS_DEVDMACONTROL2 (0x40038328U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 2) */ + #define REG_USBHS_DEVDMASTATUS2 (0x4003832CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 2) */ + #define REG_USBHS_DEVDMANXTDSC3 (0x40038330U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 3) */ + #define REG_USBHS_DEVDMAADDRESS3 (0x40038334U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 3) */ + #define REG_USBHS_DEVDMACONTROL3 (0x40038338U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 3) */ + #define REG_USBHS_DEVDMASTATUS3 (0x4003833CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 3) */ + #define REG_USBHS_DEVDMANXTDSC4 (0x40038340U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 4) */ + #define REG_USBHS_DEVDMAADDRESS4 (0x40038344U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 4) */ + #define REG_USBHS_DEVDMACONTROL4 (0x40038348U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 4) */ + #define REG_USBHS_DEVDMASTATUS4 (0x4003834CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 4) */ + #define REG_USBHS_DEVDMANXTDSC5 (0x40038350U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 5) */ + #define REG_USBHS_DEVDMAADDRESS5 (0x40038354U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 5) */ + #define REG_USBHS_DEVDMACONTROL5 (0x40038358U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 5) */ + #define REG_USBHS_DEVDMASTATUS5 (0x4003835CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 5) */ + #define REG_USBHS_DEVDMANXTDSC6 (0x40038360U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 6) */ + #define REG_USBHS_DEVDMAADDRESS6 (0x40038364U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 6) */ + #define REG_USBHS_DEVDMACONTROL6 (0x40038368U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 6) */ + #define REG_USBHS_DEVDMASTATUS6 (0x4003836CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 6) */ + #define REG_USBHS_DEVDMANXTDSC7 (0x40038370U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 7) */ + #define REG_USBHS_DEVDMAADDRESS7 (0x40038374U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 7) */ + #define REG_USBHS_DEVDMACONTROL7 (0x40038378U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 7) */ + #define REG_USBHS_DEVDMASTATUS7 (0x4003837CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 7) */ + #define REG_USBHS_HSTCTRL (0x40038400U) /**< \brief (USBHS) Host General Control Register */ + #define REG_USBHS_HSTISR (0x40038404U) /**< \brief (USBHS) Host Global Interrupt Status Register */ + #define REG_USBHS_HSTICR (0x40038408U) /**< \brief (USBHS) Host Global Interrupt Clear Register */ + #define REG_USBHS_HSTIFR (0x4003840CU) /**< \brief (USBHS) Host Global Interrupt Set Register */ + #define REG_USBHS_HSTIMR (0x40038410U) /**< \brief (USBHS) Host Global Interrupt Mask Register */ + #define REG_USBHS_HSTIDR (0x40038414U) /**< \brief (USBHS) Host Global Interrupt Disable Register */ + #define REG_USBHS_HSTIER (0x40038418U) /**< \brief (USBHS) Host Global Interrupt Enable Register */ + #define REG_USBHS_HSTPIP (0x4003841CU) /**< \brief (USBHS) Host Pipe Register */ + #define REG_USBHS_HSTFNUM (0x40038420U) /**< \brief (USBHS) Host Frame Number Register */ + #define REG_USBHS_HSTADDR1 (0x40038424U) /**< \brief (USBHS) Host Address 1 Register */ + #define REG_USBHS_HSTADDR2 (0x40038428U) /**< \brief (USBHS) Host Address 2 Register */ + #define REG_USBHS_HSTADDR3 (0x4003842CU) /**< \brief (USBHS) Host Address 3 Register */ + #define REG_USBHS_HSTPIPCFG (0x40038500U) /**< \brief (USBHS) Host Pipe Configuration Register (n = 0) */ + #define REG_USBHS_HSTPIPISR (0x40038530U) /**< \brief (USBHS) Host Pipe Status Register (n = 0) */ + #define REG_USBHS_HSTPIPICR (0x40038560U) /**< \brief (USBHS) Host Pipe Clear Register (n = 0) */ + #define REG_USBHS_HSTPIPIFR (0x40038590U) /**< \brief (USBHS) Host Pipe Set Register (n = 0) */ + #define REG_USBHS_HSTPIPIMR (0x400385C0U) /**< \brief (USBHS) Host Pipe Mask Register (n = 0) */ + #define REG_USBHS_HSTPIPIER (0x400385F0U) /**< \brief (USBHS) Host Pipe Enable Register (n = 0) */ + #define REG_USBHS_HSTPIPIDR (0x40038620U) /**< \brief (USBHS) Host Pipe Disable Register (n = 0) */ + #define REG_USBHS_HSTPIPINRQ (0x40038650U) /**< \brief (USBHS) Host Pipe IN Request Register (n = 0) */ + #define REG_USBHS_HSTPIPERR (0x40038680U) /**< \brief (USBHS) Host Pipe Error Register (n = 0) */ + #define REG_USBHS_HSTDMANXTDSC1 (0x40038710U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 1) */ + #define REG_USBHS_HSTDMAADDRESS1 (0x40038714U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 1) */ + #define REG_USBHS_HSTDMACONTROL1 (0x40038718U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 1) */ + #define REG_USBHS_HSTDMASTATUS1 (0x4003871CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 1) */ + #define REG_USBHS_HSTDMANXTDSC2 (0x40038720U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 2) */ + #define REG_USBHS_HSTDMAADDRESS2 (0x40038724U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 2) */ + #define REG_USBHS_HSTDMACONTROL2 (0x40038728U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 2) */ + #define REG_USBHS_HSTDMASTATUS2 (0x4003872CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 2) */ + #define REG_USBHS_HSTDMANXTDSC3 (0x40038730U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 3) */ + #define REG_USBHS_HSTDMAADDRESS3 (0x40038734U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 3) */ + #define REG_USBHS_HSTDMACONTROL3 (0x40038738U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 3) */ + #define REG_USBHS_HSTDMASTATUS3 (0x4003873CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 3) */ + #define REG_USBHS_HSTDMANXTDSC4 (0x40038740U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 4) */ + #define REG_USBHS_HSTDMAADDRESS4 (0x40038744U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 4) */ + #define REG_USBHS_HSTDMACONTROL4 (0x40038748U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 4) */ + #define REG_USBHS_HSTDMASTATUS4 (0x4003874CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 4) */ + #define REG_USBHS_HSTDMANXTDSC5 (0x40038750U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 5) */ + #define REG_USBHS_HSTDMAADDRESS5 (0x40038754U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 5) */ + #define REG_USBHS_HSTDMACONTROL5 (0x40038758U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 5) */ + #define REG_USBHS_HSTDMASTATUS5 (0x4003875CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 5) */ + #define REG_USBHS_HSTDMANXTDSC6 (0x40038760U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 6) */ + #define REG_USBHS_HSTDMAADDRESS6 (0x40038764U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 6) */ + #define REG_USBHS_HSTDMACONTROL6 (0x40038768U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 6) */ + #define REG_USBHS_HSTDMASTATUS6 (0x4003876CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 6) */ + #define REG_USBHS_HSTDMANXTDSC7 (0x40038770U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 7) */ + #define REG_USBHS_HSTDMAADDRESS7 (0x40038774U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 7) */ + #define REG_USBHS_HSTDMACONTROL7 (0x40038778U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 7) */ + #define REG_USBHS_HSTDMASTATUS7 (0x4003877CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 7) */ + #define REG_USBHS_CTRL (0x40038800U) /**< \brief (USBHS) General Control Register */ + #define REG_USBHS_SR (0x40038804U) /**< \brief (USBHS) General Status Register */ + #define REG_USBHS_SCR (0x40038808U) /**< \brief (USBHS) General Status Clear Register */ + #define REG_USBHS_SFR (0x4003880CU) /**< \brief (USBHS) General Status Set Register */ + #define REG_USBHS_TSTA1 (0x40038810U) /**< \brief (USBHS) General Test A1 Register */ + #define REG_USBHS_TSTA2 (0x40038814U) /**< \brief (USBHS) General Test A2 Register */ + #define REG_USBHS_VERSION (0x40038818U) /**< \brief (USBHS) General Version Register */ + #define REG_USBHS_FSM (0x4003882CU) /**< \brief (USBHS) General Finite State Machine Register */ +#else + #define REG_USBHS_DEVCTRL (*(__IO uint32_t*)0x40038000U) /**< \brief (USBHS) Device General Control Register */ + #define REG_USBHS_DEVISR (*(__I uint32_t*)0x40038004U) /**< \brief (USBHS) Device Global Interrupt Status Register */ + #define REG_USBHS_DEVICR (*(__O uint32_t*)0x40038008U) /**< \brief (USBHS) Device Global Interrupt Clear Register */ + #define REG_USBHS_DEVIFR (*(__O uint32_t*)0x4003800CU) /**< \brief (USBHS) Device Global Interrupt Set Register */ + #define REG_USBHS_DEVIMR (*(__I uint32_t*)0x40038010U) /**< \brief (USBHS) Device Global Interrupt Mask Register */ + #define REG_USBHS_DEVIDR (*(__O uint32_t*)0x40038014U) /**< \brief (USBHS) Device Global Interrupt Disable Register */ + #define REG_USBHS_DEVIER (*(__O uint32_t*)0x40038018U) /**< \brief (USBHS) Device Global Interrupt Enable Register */ + #define REG_USBHS_DEVEPT (*(__IO uint32_t*)0x4003801CU) /**< \brief (USBHS) Device Endpoint Register */ + #define REG_USBHS_DEVFNUM (*(__I uint32_t*)0x40038020U) /**< \brief (USBHS) Device Frame Number Register */ + #define REG_USBHS_DEVEPTCFG (*(__IO uint32_t*)0x40038100U) /**< \brief (USBHS) Device Endpoint Configuration Register (n = 0) */ + #define REG_USBHS_DEVEPTISR (*(__I uint32_t*)0x40038130U) /**< \brief (USBHS) Device Endpoint Status Register (n = 0) */ + #define REG_USBHS_DEVEPTICR (*(__O uint32_t*)0x40038160U) /**< \brief (USBHS) Device Endpoint Clear Register (n = 0) */ + #define REG_USBHS_DEVEPTIFR (*(__O uint32_t*)0x40038190U) /**< \brief (USBHS) Device Endpoint Set Register (n = 0) */ + #define REG_USBHS_DEVEPTIMR (*(__I uint32_t*)0x400381C0U) /**< \brief (USBHS) Device Endpoint Mask Register (n = 0) */ + #define REG_USBHS_DEVEPTIER (*(__O uint32_t*)0x400381F0U) /**< \brief (USBHS) Device Endpoint Enable Register (n = 0) */ + #define REG_USBHS_DEVEPTIDR (*(__O uint32_t*)0x40038220U) /**< \brief (USBHS) Device Endpoint Disable Register (n = 0) */ + #define REG_USBHS_DEVDMANXTDSC1 (*(__IO uint32_t*)0x40038310U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 1) */ + #define REG_USBHS_DEVDMAADDRESS1 (*(__IO uint32_t*)0x40038314U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 1) */ + #define REG_USBHS_DEVDMACONTROL1 (*(__IO uint32_t*)0x40038318U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 1) */ + #define REG_USBHS_DEVDMASTATUS1 (*(__IO uint32_t*)0x4003831CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 1) */ + #define REG_USBHS_DEVDMANXTDSC2 (*(__IO uint32_t*)0x40038320U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 2) */ + #define REG_USBHS_DEVDMAADDRESS2 (*(__IO uint32_t*)0x40038324U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 2) */ + #define REG_USBHS_DEVDMACONTROL2 (*(__IO uint32_t*)0x40038328U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 2) */ + #define REG_USBHS_DEVDMASTATUS2 (*(__IO uint32_t*)0x4003832CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 2) */ + #define REG_USBHS_DEVDMANXTDSC3 (*(__IO uint32_t*)0x40038330U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 3) */ + #define REG_USBHS_DEVDMAADDRESS3 (*(__IO uint32_t*)0x40038334U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 3) */ + #define REG_USBHS_DEVDMACONTROL3 (*(__IO uint32_t*)0x40038338U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 3) */ + #define REG_USBHS_DEVDMASTATUS3 (*(__IO uint32_t*)0x4003833CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 3) */ + #define REG_USBHS_DEVDMANXTDSC4 (*(__IO uint32_t*)0x40038340U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 4) */ + #define REG_USBHS_DEVDMAADDRESS4 (*(__IO uint32_t*)0x40038344U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 4) */ + #define REG_USBHS_DEVDMACONTROL4 (*(__IO uint32_t*)0x40038348U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 4) */ + #define REG_USBHS_DEVDMASTATUS4 (*(__IO uint32_t*)0x4003834CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 4) */ + #define REG_USBHS_DEVDMANXTDSC5 (*(__IO uint32_t*)0x40038350U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 5) */ + #define REG_USBHS_DEVDMAADDRESS5 (*(__IO uint32_t*)0x40038354U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 5) */ + #define REG_USBHS_DEVDMACONTROL5 (*(__IO uint32_t*)0x40038358U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 5) */ + #define REG_USBHS_DEVDMASTATUS5 (*(__IO uint32_t*)0x4003835CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 5) */ + #define REG_USBHS_DEVDMANXTDSC6 (*(__IO uint32_t*)0x40038360U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 6) */ + #define REG_USBHS_DEVDMAADDRESS6 (*(__IO uint32_t*)0x40038364U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 6) */ + #define REG_USBHS_DEVDMACONTROL6 (*(__IO uint32_t*)0x40038368U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 6) */ + #define REG_USBHS_DEVDMASTATUS6 (*(__IO uint32_t*)0x4003836CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 6) */ + #define REG_USBHS_DEVDMANXTDSC7 (*(__IO uint32_t*)0x40038370U) /**< \brief (USBHS) Device DMA Channel Next Descriptor Address Register (n = 7) */ + #define REG_USBHS_DEVDMAADDRESS7 (*(__IO uint32_t*)0x40038374U) /**< \brief (USBHS) Device DMA Channel Address Register (n = 7) */ + #define REG_USBHS_DEVDMACONTROL7 (*(__IO uint32_t*)0x40038378U) /**< \brief (USBHS) Device DMA Channel Control Register (n = 7) */ + #define REG_USBHS_DEVDMASTATUS7 (*(__IO uint32_t*)0x4003837CU) /**< \brief (USBHS) Device DMA Channel Status Register (n = 7) */ + #define REG_USBHS_HSTCTRL (*(__IO uint32_t*)0x40038400U) /**< \brief (USBHS) Host General Control Register */ + #define REG_USBHS_HSTISR (*(__I uint32_t*)0x40038404U) /**< \brief (USBHS) Host Global Interrupt Status Register */ + #define REG_USBHS_HSTICR (*(__O uint32_t*)0x40038408U) /**< \brief (USBHS) Host Global Interrupt Clear Register */ + #define REG_USBHS_HSTIFR (*(__O uint32_t*)0x4003840CU) /**< \brief (USBHS) Host Global Interrupt Set Register */ + #define REG_USBHS_HSTIMR (*(__I uint32_t*)0x40038410U) /**< \brief (USBHS) Host Global Interrupt Mask Register */ + #define REG_USBHS_HSTIDR (*(__O uint32_t*)0x40038414U) /**< \brief (USBHS) Host Global Interrupt Disable Register */ + #define REG_USBHS_HSTIER (*(__O uint32_t*)0x40038418U) /**< \brief (USBHS) Host Global Interrupt Enable Register */ + #define REG_USBHS_HSTPIP (*(__IO uint32_t*)0x4003841CU) /**< \brief (USBHS) Host Pipe Register */ + #define REG_USBHS_HSTFNUM (*(__IO uint32_t*)0x40038420U) /**< \brief (USBHS) Host Frame Number Register */ + #define REG_USBHS_HSTADDR1 (*(__IO uint32_t*)0x40038424U) /**< \brief (USBHS) Host Address 1 Register */ + #define REG_USBHS_HSTADDR2 (*(__IO uint32_t*)0x40038428U) /**< \brief (USBHS) Host Address 2 Register */ + #define REG_USBHS_HSTADDR3 (*(__IO uint32_t*)0x4003842CU) /**< \brief (USBHS) Host Address 3 Register */ + #define REG_USBHS_HSTPIPCFG (*(__IO uint32_t*)0x40038500U) /**< \brief (USBHS) Host Pipe Configuration Register (n = 0) */ + #define REG_USBHS_HSTPIPISR (*(__I uint32_t*)0x40038530U) /**< \brief (USBHS) Host Pipe Status Register (n = 0) */ + #define REG_USBHS_HSTPIPICR (*(__O uint32_t*)0x40038560U) /**< \brief (USBHS) Host Pipe Clear Register (n = 0) */ + #define REG_USBHS_HSTPIPIFR (*(__O uint32_t*)0x40038590U) /**< \brief (USBHS) Host Pipe Set Register (n = 0) */ + #define REG_USBHS_HSTPIPIMR (*(__I uint32_t*)0x400385C0U) /**< \brief (USBHS) Host Pipe Mask Register (n = 0) */ + #define REG_USBHS_HSTPIPIER (*(__O uint32_t*)0x400385F0U) /**< \brief (USBHS) Host Pipe Enable Register (n = 0) */ + #define REG_USBHS_HSTPIPIDR (*(__O uint32_t*)0x40038620U) /**< \brief (USBHS) Host Pipe Disable Register (n = 0) */ + #define REG_USBHS_HSTPIPINRQ (*(__IO uint32_t*)0x40038650U) /**< \brief (USBHS) Host Pipe IN Request Register (n = 0) */ + #define REG_USBHS_HSTPIPERR (*(__IO uint32_t*)0x40038680U) /**< \brief (USBHS) Host Pipe Error Register (n = 0) */ + #define REG_USBHS_HSTDMANXTDSC1 (*(__IO uint32_t*)0x40038710U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 1) */ + #define REG_USBHS_HSTDMAADDRESS1 (*(__IO uint32_t*)0x40038714U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 1) */ + #define REG_USBHS_HSTDMACONTROL1 (*(__IO uint32_t*)0x40038718U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 1) */ + #define REG_USBHS_HSTDMASTATUS1 (*(__IO uint32_t*)0x4003871CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 1) */ + #define REG_USBHS_HSTDMANXTDSC2 (*(__IO uint32_t*)0x40038720U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 2) */ + #define REG_USBHS_HSTDMAADDRESS2 (*(__IO uint32_t*)0x40038724U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 2) */ + #define REG_USBHS_HSTDMACONTROL2 (*(__IO uint32_t*)0x40038728U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 2) */ + #define REG_USBHS_HSTDMASTATUS2 (*(__IO uint32_t*)0x4003872CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 2) */ + #define REG_USBHS_HSTDMANXTDSC3 (*(__IO uint32_t*)0x40038730U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 3) */ + #define REG_USBHS_HSTDMAADDRESS3 (*(__IO uint32_t*)0x40038734U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 3) */ + #define REG_USBHS_HSTDMACONTROL3 (*(__IO uint32_t*)0x40038738U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 3) */ + #define REG_USBHS_HSTDMASTATUS3 (*(__IO uint32_t*)0x4003873CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 3) */ + #define REG_USBHS_HSTDMANXTDSC4 (*(__IO uint32_t*)0x40038740U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 4) */ + #define REG_USBHS_HSTDMAADDRESS4 (*(__IO uint32_t*)0x40038744U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 4) */ + #define REG_USBHS_HSTDMACONTROL4 (*(__IO uint32_t*)0x40038748U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 4) */ + #define REG_USBHS_HSTDMASTATUS4 (*(__IO uint32_t*)0x4003874CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 4) */ + #define REG_USBHS_HSTDMANXTDSC5 (*(__IO uint32_t*)0x40038750U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 5) */ + #define REG_USBHS_HSTDMAADDRESS5 (*(__IO uint32_t*)0x40038754U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 5) */ + #define REG_USBHS_HSTDMACONTROL5 (*(__IO uint32_t*)0x40038758U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 5) */ + #define REG_USBHS_HSTDMASTATUS5 (*(__IO uint32_t*)0x4003875CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 5) */ + #define REG_USBHS_HSTDMANXTDSC6 (*(__IO uint32_t*)0x40038760U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 6) */ + #define REG_USBHS_HSTDMAADDRESS6 (*(__IO uint32_t*)0x40038764U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 6) */ + #define REG_USBHS_HSTDMACONTROL6 (*(__IO uint32_t*)0x40038768U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 6) */ + #define REG_USBHS_HSTDMASTATUS6 (*(__IO uint32_t*)0x4003876CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 6) */ + #define REG_USBHS_HSTDMANXTDSC7 (*(__IO uint32_t*)0x40038770U) /**< \brief (USBHS) Host DMA Channel Next Descriptor Address Register (n = 7) */ + #define REG_USBHS_HSTDMAADDRESS7 (*(__IO uint32_t*)0x40038774U) /**< \brief (USBHS) Host DMA Channel Address Register (n = 7) */ + #define REG_USBHS_HSTDMACONTROL7 (*(__IO uint32_t*)0x40038778U) /**< \brief (USBHS) Host DMA Channel Control Register (n = 7) */ + #define REG_USBHS_HSTDMASTATUS7 (*(__IO uint32_t*)0x4003877CU) /**< \brief (USBHS) Host DMA Channel Status Register (n = 7) */ + #define REG_USBHS_CTRL (*(__IO uint32_t*)0x40038800U) /**< \brief (USBHS) General Control Register */ + #define REG_USBHS_SR (*(__I uint32_t*)0x40038804U) /**< \brief (USBHS) General Status Register */ + #define REG_USBHS_SCR (*(__O uint32_t*)0x40038808U) /**< \brief (USBHS) General Status Clear Register */ + #define REG_USBHS_SFR (*(__O uint32_t*)0x4003880CU) /**< \brief (USBHS) General Status Set Register */ + #define REG_USBHS_TSTA1 (*(__IO uint32_t*)0x40038810U) /**< \brief (USBHS) General Test A1 Register */ + #define REG_USBHS_TSTA2 (*(__IO uint32_t*)0x40038814U) /**< \brief (USBHS) General Test A2 Register */ + #define REG_USBHS_VERSION (*(__I uint32_t*)0x40038818U) /**< \brief (USBHS) General Version Register */ + #define REG_USBHS_FSM (*(__I uint32_t*)0x4003882CU) /**< \brief (USBHS) General Finite State Machine Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_USBHS_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h new file mode 100644 index 00000000..0b4a61ee --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h @@ -0,0 +1,47 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_UTMI_INSTANCE_ +#define _SAME70_UTMI_INSTANCE_ + +/* ========== Register definition for UTMI peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_UTMI_OHCIICR (0x400E0410U) /**< \brief (UTMI) OHCI Interrupt Configuration Register */ + #define REG_UTMI_CKTRIM (0x400E0430U) /**< \brief (UTMI) UTMI Clock Trimming Register */ +#else + #define REG_UTMI_OHCIICR (*(__IO uint32_t*)0x400E0410U) /**< \brief (UTMI) OHCI Interrupt Configuration Register */ + #define REG_UTMI_CKTRIM (*(__IO uint32_t*)0x400E0430U) /**< \brief (UTMI) UTMI Clock Trimming Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_UTMI_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h new file mode 100644 index 00000000..d92669ca --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h @@ -0,0 +1,49 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_WDT_INSTANCE_ +#define _SAME70_WDT_INSTANCE_ + +/* ========== Register definition for WDT peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_WDT_CR (0x400E1850U) /**< \brief (WDT) Control Register */ + #define REG_WDT_MR (0x400E1854U) /**< \brief (WDT) Mode Register */ + #define REG_WDT_SR (0x400E1858U) /**< \brief (WDT) Status Register */ +#else + #define REG_WDT_CR (*(__O uint32_t*)0x400E1850U) /**< \brief (WDT) Control Register */ + #define REG_WDT_MR (*(__IO uint32_t*)0x400E1854U) /**< \brief (WDT) Mode Register */ + #define REG_WDT_SR (*(__I uint32_t*)0x400E1858U) /**< \brief (WDT) Status Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_WDT_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h new file mode 100644 index 00000000..535e6bc3 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h @@ -0,0 +1,751 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70_XDMAC_INSTANCE_ +#define _SAME70_XDMAC_INSTANCE_ + +/* ========== Register definition for XDMAC peripheral ========== */ +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) + #define REG_XDMAC_GTYPE (0x40078000U) /**< \brief (XDMAC) Global Type Register */ + #define REG_XDMAC_GCFG (0x40078004U) /**< \brief (XDMAC) Global Configuration Register */ + #define REG_XDMAC_GWAC (0x40078008U) /**< \brief (XDMAC) Global Weighted Arbiter Configuration Register */ + #define REG_XDMAC_GIE (0x4007800CU) /**< \brief (XDMAC) Global Interrupt Enable Register */ + #define REG_XDMAC_GID (0x40078010U) /**< \brief (XDMAC) Global Interrupt Disable Register */ + #define REG_XDMAC_GIM (0x40078014U) /**< \brief (XDMAC) Global Interrupt Mask Register */ + #define REG_XDMAC_GIS (0x40078018U) /**< \brief (XDMAC) Global Interrupt Status Register */ + #define REG_XDMAC_GE (0x4007801CU) /**< \brief (XDMAC) Global Channel Enable Register */ + #define REG_XDMAC_GD (0x40078020U) /**< \brief (XDMAC) Global Channel Disable Register */ + #define REG_XDMAC_GS (0x40078024U) /**< \brief (XDMAC) Global Channel Status Register */ + #define REG_XDMAC_GRS (0x40078028U) /**< \brief (XDMAC) Global Channel Read Suspend Register */ + #define REG_XDMAC_GWS (0x4007802CU) /**< \brief (XDMAC) Global Channel Write Suspend Register */ + #define REG_XDMAC_GRWS (0x40078030U) /**< \brief (XDMAC) Global Channel Read Write Suspend Register */ + #define REG_XDMAC_GRWR (0x40078034U) /**< \brief (XDMAC) Global Channel Read Write Resume Register */ + #define REG_XDMAC_GSWR (0x40078038U) /**< \brief (XDMAC) Global Channel Software Request Register */ + #define REG_XDMAC_GSWS (0x4007803CU) /**< \brief (XDMAC) Global Channel Software Request Status Register */ + #define REG_XDMAC_GSWF (0x40078040U) /**< \brief (XDMAC) Global Channel Software Flush Request Register */ + #define REG_XDMAC_CIE0 (0x40078050U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 0) */ + #define REG_XDMAC_CID0 (0x40078054U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 0) */ + #define REG_XDMAC_CIM0 (0x40078058U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 0) */ + #define REG_XDMAC_CIS0 (0x4007805CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 0) */ + #define REG_XDMAC_CSA0 (0x40078060U) /**< \brief (XDMAC) Channel Source Address Register (chid = 0) */ + #define REG_XDMAC_CDA0 (0x40078064U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 0) */ + #define REG_XDMAC_CNDA0 (0x40078068U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 0) */ + #define REG_XDMAC_CNDC0 (0x4007806CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 0) */ + #define REG_XDMAC_CUBC0 (0x40078070U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 0) */ + #define REG_XDMAC_CBC0 (0x40078074U) /**< \brief (XDMAC) Channel Block Control Register (chid = 0) */ + #define REG_XDMAC_CC0 (0x40078078U) /**< \brief (XDMAC) Channel Configuration Register (chid = 0) */ + #define REG_XDMAC_CDS_MSP0 (0x4007807CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 0) */ + #define REG_XDMAC_CSUS0 (0x40078080U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 0) */ + #define REG_XDMAC_CDUS0 (0x40078084U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 0) */ + #define REG_XDMAC_CIE1 (0x40078090U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 1) */ + #define REG_XDMAC_CID1 (0x40078094U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 1) */ + #define REG_XDMAC_CIM1 (0x40078098U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 1) */ + #define REG_XDMAC_CIS1 (0x4007809CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 1) */ + #define REG_XDMAC_CSA1 (0x400780A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 1) */ + #define REG_XDMAC_CDA1 (0x400780A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 1) */ + #define REG_XDMAC_CNDA1 (0x400780A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 1) */ + #define REG_XDMAC_CNDC1 (0x400780ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 1) */ + #define REG_XDMAC_CUBC1 (0x400780B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 1) */ + #define REG_XDMAC_CBC1 (0x400780B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 1) */ + #define REG_XDMAC_CC1 (0x400780B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 1) */ + #define REG_XDMAC_CDS_MSP1 (0x400780BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 1) */ + #define REG_XDMAC_CSUS1 (0x400780C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 1) */ + #define REG_XDMAC_CDUS1 (0x400780C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 1) */ + #define REG_XDMAC_CIE2 (0x400780D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 2) */ + #define REG_XDMAC_CID2 (0x400780D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 2) */ + #define REG_XDMAC_CIM2 (0x400780D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 2) */ + #define REG_XDMAC_CIS2 (0x400780DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 2) */ + #define REG_XDMAC_CSA2 (0x400780E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 2) */ + #define REG_XDMAC_CDA2 (0x400780E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 2) */ + #define REG_XDMAC_CNDA2 (0x400780E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 2) */ + #define REG_XDMAC_CNDC2 (0x400780ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 2) */ + #define REG_XDMAC_CUBC2 (0x400780F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 2) */ + #define REG_XDMAC_CBC2 (0x400780F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 2) */ + #define REG_XDMAC_CC2 (0x400780F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 2) */ + #define REG_XDMAC_CDS_MSP2 (0x400780FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 2) */ + #define REG_XDMAC_CSUS2 (0x40078100U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 2) */ + #define REG_XDMAC_CDUS2 (0x40078104U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 2) */ + #define REG_XDMAC_CIE3 (0x40078110U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 3) */ + #define REG_XDMAC_CID3 (0x40078114U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 3) */ + #define REG_XDMAC_CIM3 (0x40078118U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 3) */ + #define REG_XDMAC_CIS3 (0x4007811CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 3) */ + #define REG_XDMAC_CSA3 (0x40078120U) /**< \brief (XDMAC) Channel Source Address Register (chid = 3) */ + #define REG_XDMAC_CDA3 (0x40078124U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 3) */ + #define REG_XDMAC_CNDA3 (0x40078128U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 3) */ + #define REG_XDMAC_CNDC3 (0x4007812CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 3) */ + #define REG_XDMAC_CUBC3 (0x40078130U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 3) */ + #define REG_XDMAC_CBC3 (0x40078134U) /**< \brief (XDMAC) Channel Block Control Register (chid = 3) */ + #define REG_XDMAC_CC3 (0x40078138U) /**< \brief (XDMAC) Channel Configuration Register (chid = 3) */ + #define REG_XDMAC_CDS_MSP3 (0x4007813CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 3) */ + #define REG_XDMAC_CSUS3 (0x40078140U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 3) */ + #define REG_XDMAC_CDUS3 (0x40078144U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 3) */ + #define REG_XDMAC_CIE4 (0x40078150U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 4) */ + #define REG_XDMAC_CID4 (0x40078154U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 4) */ + #define REG_XDMAC_CIM4 (0x40078158U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 4) */ + #define REG_XDMAC_CIS4 (0x4007815CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 4) */ + #define REG_XDMAC_CSA4 (0x40078160U) /**< \brief (XDMAC) Channel Source Address Register (chid = 4) */ + #define REG_XDMAC_CDA4 (0x40078164U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 4) */ + #define REG_XDMAC_CNDA4 (0x40078168U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 4) */ + #define REG_XDMAC_CNDC4 (0x4007816CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 4) */ + #define REG_XDMAC_CUBC4 (0x40078170U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 4) */ + #define REG_XDMAC_CBC4 (0x40078174U) /**< \brief (XDMAC) Channel Block Control Register (chid = 4) */ + #define REG_XDMAC_CC4 (0x40078178U) /**< \brief (XDMAC) Channel Configuration Register (chid = 4) */ + #define REG_XDMAC_CDS_MSP4 (0x4007817CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 4) */ + #define REG_XDMAC_CSUS4 (0x40078180U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 4) */ + #define REG_XDMAC_CDUS4 (0x40078184U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 4) */ + #define REG_XDMAC_CIE5 (0x40078190U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 5) */ + #define REG_XDMAC_CID5 (0x40078194U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 5) */ + #define REG_XDMAC_CIM5 (0x40078198U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 5) */ + #define REG_XDMAC_CIS5 (0x4007819CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 5) */ + #define REG_XDMAC_CSA5 (0x400781A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 5) */ + #define REG_XDMAC_CDA5 (0x400781A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 5) */ + #define REG_XDMAC_CNDA5 (0x400781A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 5) */ + #define REG_XDMAC_CNDC5 (0x400781ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 5) */ + #define REG_XDMAC_CUBC5 (0x400781B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 5) */ + #define REG_XDMAC_CBC5 (0x400781B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 5) */ + #define REG_XDMAC_CC5 (0x400781B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 5) */ + #define REG_XDMAC_CDS_MSP5 (0x400781BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 5) */ + #define REG_XDMAC_CSUS5 (0x400781C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 5) */ + #define REG_XDMAC_CDUS5 (0x400781C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 5) */ + #define REG_XDMAC_CIE6 (0x400781D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 6) */ + #define REG_XDMAC_CID6 (0x400781D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 6) */ + #define REG_XDMAC_CIM6 (0x400781D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 6) */ + #define REG_XDMAC_CIS6 (0x400781DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 6) */ + #define REG_XDMAC_CSA6 (0x400781E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 6) */ + #define REG_XDMAC_CDA6 (0x400781E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 6) */ + #define REG_XDMAC_CNDA6 (0x400781E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 6) */ + #define REG_XDMAC_CNDC6 (0x400781ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 6) */ + #define REG_XDMAC_CUBC6 (0x400781F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 6) */ + #define REG_XDMAC_CBC6 (0x400781F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 6) */ + #define REG_XDMAC_CC6 (0x400781F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 6) */ + #define REG_XDMAC_CDS_MSP6 (0x400781FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 6) */ + #define REG_XDMAC_CSUS6 (0x40078200U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 6) */ + #define REG_XDMAC_CDUS6 (0x40078204U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 6) */ + #define REG_XDMAC_CIE7 (0x40078210U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 7) */ + #define REG_XDMAC_CID7 (0x40078214U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 7) */ + #define REG_XDMAC_CIM7 (0x40078218U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 7) */ + #define REG_XDMAC_CIS7 (0x4007821CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 7) */ + #define REG_XDMAC_CSA7 (0x40078220U) /**< \brief (XDMAC) Channel Source Address Register (chid = 7) */ + #define REG_XDMAC_CDA7 (0x40078224U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 7) */ + #define REG_XDMAC_CNDA7 (0x40078228U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 7) */ + #define REG_XDMAC_CNDC7 (0x4007822CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 7) */ + #define REG_XDMAC_CUBC7 (0x40078230U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 7) */ + #define REG_XDMAC_CBC7 (0x40078234U) /**< \brief (XDMAC) Channel Block Control Register (chid = 7) */ + #define REG_XDMAC_CC7 (0x40078238U) /**< \brief (XDMAC) Channel Configuration Register (chid = 7) */ + #define REG_XDMAC_CDS_MSP7 (0x4007823CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 7) */ + #define REG_XDMAC_CSUS7 (0x40078240U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 7) */ + #define REG_XDMAC_CDUS7 (0x40078244U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 7) */ + #define REG_XDMAC_CIE8 (0x40078250U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 8) */ + #define REG_XDMAC_CID8 (0x40078254U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 8) */ + #define REG_XDMAC_CIM8 (0x40078258U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 8) */ + #define REG_XDMAC_CIS8 (0x4007825CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 8) */ + #define REG_XDMAC_CSA8 (0x40078260U) /**< \brief (XDMAC) Channel Source Address Register (chid = 8) */ + #define REG_XDMAC_CDA8 (0x40078264U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 8) */ + #define REG_XDMAC_CNDA8 (0x40078268U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 8) */ + #define REG_XDMAC_CNDC8 (0x4007826CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 8) */ + #define REG_XDMAC_CUBC8 (0x40078270U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 8) */ + #define REG_XDMAC_CBC8 (0x40078274U) /**< \brief (XDMAC) Channel Block Control Register (chid = 8) */ + #define REG_XDMAC_CC8 (0x40078278U) /**< \brief (XDMAC) Channel Configuration Register (chid = 8) */ + #define REG_XDMAC_CDS_MSP8 (0x4007827CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 8) */ + #define REG_XDMAC_CSUS8 (0x40078280U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 8) */ + #define REG_XDMAC_CDUS8 (0x40078284U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 8) */ + #define REG_XDMAC_CIE9 (0x40078290U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 9) */ + #define REG_XDMAC_CID9 (0x40078294U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 9) */ + #define REG_XDMAC_CIM9 (0x40078298U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 9) */ + #define REG_XDMAC_CIS9 (0x4007829CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 9) */ + #define REG_XDMAC_CSA9 (0x400782A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 9) */ + #define REG_XDMAC_CDA9 (0x400782A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 9) */ + #define REG_XDMAC_CNDA9 (0x400782A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 9) */ + #define REG_XDMAC_CNDC9 (0x400782ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 9) */ + #define REG_XDMAC_CUBC9 (0x400782B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 9) */ + #define REG_XDMAC_CBC9 (0x400782B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 9) */ + #define REG_XDMAC_CC9 (0x400782B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 9) */ + #define REG_XDMAC_CDS_MSP9 (0x400782BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 9) */ + #define REG_XDMAC_CSUS9 (0x400782C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 9) */ + #define REG_XDMAC_CDUS9 (0x400782C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 9) */ + #define REG_XDMAC_CIE10 (0x400782D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 10) */ + #define REG_XDMAC_CID10 (0x400782D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 10) */ + #define REG_XDMAC_CIM10 (0x400782D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 10) */ + #define REG_XDMAC_CIS10 (0x400782DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 10) */ + #define REG_XDMAC_CSA10 (0x400782E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 10) */ + #define REG_XDMAC_CDA10 (0x400782E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 10) */ + #define REG_XDMAC_CNDA10 (0x400782E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 10) */ + #define REG_XDMAC_CNDC10 (0x400782ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 10) */ + #define REG_XDMAC_CUBC10 (0x400782F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 10) */ + #define REG_XDMAC_CBC10 (0x400782F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 10) */ + #define REG_XDMAC_CC10 (0x400782F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 10) */ + #define REG_XDMAC_CDS_MSP10 (0x400782FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 10) */ + #define REG_XDMAC_CSUS10 (0x40078300U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 10) */ + #define REG_XDMAC_CDUS10 (0x40078304U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 10) */ + #define REG_XDMAC_CIE11 (0x40078310U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 11) */ + #define REG_XDMAC_CID11 (0x40078314U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 11) */ + #define REG_XDMAC_CIM11 (0x40078318U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 11) */ + #define REG_XDMAC_CIS11 (0x4007831CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 11) */ + #define REG_XDMAC_CSA11 (0x40078320U) /**< \brief (XDMAC) Channel Source Address Register (chid = 11) */ + #define REG_XDMAC_CDA11 (0x40078324U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 11) */ + #define REG_XDMAC_CNDA11 (0x40078328U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 11) */ + #define REG_XDMAC_CNDC11 (0x4007832CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 11) */ + #define REG_XDMAC_CUBC11 (0x40078330U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 11) */ + #define REG_XDMAC_CBC11 (0x40078334U) /**< \brief (XDMAC) Channel Block Control Register (chid = 11) */ + #define REG_XDMAC_CC11 (0x40078338U) /**< \brief (XDMAC) Channel Configuration Register (chid = 11) */ + #define REG_XDMAC_CDS_MSP11 (0x4007833CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 11) */ + #define REG_XDMAC_CSUS11 (0x40078340U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 11) */ + #define REG_XDMAC_CDUS11 (0x40078344U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 11) */ + #define REG_XDMAC_CIE12 (0x40078350U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 12) */ + #define REG_XDMAC_CID12 (0x40078354U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 12) */ + #define REG_XDMAC_CIM12 (0x40078358U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 12) */ + #define REG_XDMAC_CIS12 (0x4007835CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 12) */ + #define REG_XDMAC_CSA12 (0x40078360U) /**< \brief (XDMAC) Channel Source Address Register (chid = 12) */ + #define REG_XDMAC_CDA12 (0x40078364U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 12) */ + #define REG_XDMAC_CNDA12 (0x40078368U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 12) */ + #define REG_XDMAC_CNDC12 (0x4007836CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 12) */ + #define REG_XDMAC_CUBC12 (0x40078370U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 12) */ + #define REG_XDMAC_CBC12 (0x40078374U) /**< \brief (XDMAC) Channel Block Control Register (chid = 12) */ + #define REG_XDMAC_CC12 (0x40078378U) /**< \brief (XDMAC) Channel Configuration Register (chid = 12) */ + #define REG_XDMAC_CDS_MSP12 (0x4007837CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 12) */ + #define REG_XDMAC_CSUS12 (0x40078380U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 12) */ + #define REG_XDMAC_CDUS12 (0x40078384U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 12) */ + #define REG_XDMAC_CIE13 (0x40078390U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 13) */ + #define REG_XDMAC_CID13 (0x40078394U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 13) */ + #define REG_XDMAC_CIM13 (0x40078398U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 13) */ + #define REG_XDMAC_CIS13 (0x4007839CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 13) */ + #define REG_XDMAC_CSA13 (0x400783A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 13) */ + #define REG_XDMAC_CDA13 (0x400783A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 13) */ + #define REG_XDMAC_CNDA13 (0x400783A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 13) */ + #define REG_XDMAC_CNDC13 (0x400783ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 13) */ + #define REG_XDMAC_CUBC13 (0x400783B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 13) */ + #define REG_XDMAC_CBC13 (0x400783B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 13) */ + #define REG_XDMAC_CC13 (0x400783B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 13) */ + #define REG_XDMAC_CDS_MSP13 (0x400783BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 13) */ + #define REG_XDMAC_CSUS13 (0x400783C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 13) */ + #define REG_XDMAC_CDUS13 (0x400783C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 13) */ + #define REG_XDMAC_CIE14 (0x400783D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 14) */ + #define REG_XDMAC_CID14 (0x400783D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 14) */ + #define REG_XDMAC_CIM14 (0x400783D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 14) */ + #define REG_XDMAC_CIS14 (0x400783DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 14) */ + #define REG_XDMAC_CSA14 (0x400783E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 14) */ + #define REG_XDMAC_CDA14 (0x400783E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 14) */ + #define REG_XDMAC_CNDA14 (0x400783E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 14) */ + #define REG_XDMAC_CNDC14 (0x400783ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 14) */ + #define REG_XDMAC_CUBC14 (0x400783F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 14) */ + #define REG_XDMAC_CBC14 (0x400783F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 14) */ + #define REG_XDMAC_CC14 (0x400783F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 14) */ + #define REG_XDMAC_CDS_MSP14 (0x400783FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 14) */ + #define REG_XDMAC_CSUS14 (0x40078400U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 14) */ + #define REG_XDMAC_CDUS14 (0x40078404U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 14) */ + #define REG_XDMAC_CIE15 (0x40078410U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 15) */ + #define REG_XDMAC_CID15 (0x40078414U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 15) */ + #define REG_XDMAC_CIM15 (0x40078418U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 15) */ + #define REG_XDMAC_CIS15 (0x4007841CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 15) */ + #define REG_XDMAC_CSA15 (0x40078420U) /**< \brief (XDMAC) Channel Source Address Register (chid = 15) */ + #define REG_XDMAC_CDA15 (0x40078424U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 15) */ + #define REG_XDMAC_CNDA15 (0x40078428U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 15) */ + #define REG_XDMAC_CNDC15 (0x4007842CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 15) */ + #define REG_XDMAC_CUBC15 (0x40078430U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 15) */ + #define REG_XDMAC_CBC15 (0x40078434U) /**< \brief (XDMAC) Channel Block Control Register (chid = 15) */ + #define REG_XDMAC_CC15 (0x40078438U) /**< \brief (XDMAC) Channel Configuration Register (chid = 15) */ + #define REG_XDMAC_CDS_MSP15 (0x4007843CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 15) */ + #define REG_XDMAC_CSUS15 (0x40078440U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 15) */ + #define REG_XDMAC_CDUS15 (0x40078444U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 15) */ + #define REG_XDMAC_CIE16 (0x40078450U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 16) */ + #define REG_XDMAC_CID16 (0x40078454U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 16) */ + #define REG_XDMAC_CIM16 (0x40078458U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 16) */ + #define REG_XDMAC_CIS16 (0x4007845CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 16) */ + #define REG_XDMAC_CSA16 (0x40078460U) /**< \brief (XDMAC) Channel Source Address Register (chid = 16) */ + #define REG_XDMAC_CDA16 (0x40078464U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 16) */ + #define REG_XDMAC_CNDA16 (0x40078468U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 16) */ + #define REG_XDMAC_CNDC16 (0x4007846CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 16) */ + #define REG_XDMAC_CUBC16 (0x40078470U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 16) */ + #define REG_XDMAC_CBC16 (0x40078474U) /**< \brief (XDMAC) Channel Block Control Register (chid = 16) */ + #define REG_XDMAC_CC16 (0x40078478U) /**< \brief (XDMAC) Channel Configuration Register (chid = 16) */ + #define REG_XDMAC_CDS_MSP16 (0x4007847CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 16) */ + #define REG_XDMAC_CSUS16 (0x40078480U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 16) */ + #define REG_XDMAC_CDUS16 (0x40078484U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 16) */ + #define REG_XDMAC_CIE17 (0x40078490U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 17) */ + #define REG_XDMAC_CID17 (0x40078494U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 17) */ + #define REG_XDMAC_CIM17 (0x40078498U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 17) */ + #define REG_XDMAC_CIS17 (0x4007849CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 17) */ + #define REG_XDMAC_CSA17 (0x400784A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 17) */ + #define REG_XDMAC_CDA17 (0x400784A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 17) */ + #define REG_XDMAC_CNDA17 (0x400784A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 17) */ + #define REG_XDMAC_CNDC17 (0x400784ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 17) */ + #define REG_XDMAC_CUBC17 (0x400784B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 17) */ + #define REG_XDMAC_CBC17 (0x400784B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 17) */ + #define REG_XDMAC_CC17 (0x400784B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 17) */ + #define REG_XDMAC_CDS_MSP17 (0x400784BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 17) */ + #define REG_XDMAC_CSUS17 (0x400784C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 17) */ + #define REG_XDMAC_CDUS17 (0x400784C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 17) */ + #define REG_XDMAC_CIE18 (0x400784D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 18) */ + #define REG_XDMAC_CID18 (0x400784D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 18) */ + #define REG_XDMAC_CIM18 (0x400784D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 18) */ + #define REG_XDMAC_CIS18 (0x400784DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 18) */ + #define REG_XDMAC_CSA18 (0x400784E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 18) */ + #define REG_XDMAC_CDA18 (0x400784E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 18) */ + #define REG_XDMAC_CNDA18 (0x400784E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 18) */ + #define REG_XDMAC_CNDC18 (0x400784ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 18) */ + #define REG_XDMAC_CUBC18 (0x400784F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 18) */ + #define REG_XDMAC_CBC18 (0x400784F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 18) */ + #define REG_XDMAC_CC18 (0x400784F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 18) */ + #define REG_XDMAC_CDS_MSP18 (0x400784FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 18) */ + #define REG_XDMAC_CSUS18 (0x40078500U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 18) */ + #define REG_XDMAC_CDUS18 (0x40078504U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 18) */ + #define REG_XDMAC_CIE19 (0x40078510U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 19) */ + #define REG_XDMAC_CID19 (0x40078514U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 19) */ + #define REG_XDMAC_CIM19 (0x40078518U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 19) */ + #define REG_XDMAC_CIS19 (0x4007851CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 19) */ + #define REG_XDMAC_CSA19 (0x40078520U) /**< \brief (XDMAC) Channel Source Address Register (chid = 19) */ + #define REG_XDMAC_CDA19 (0x40078524U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 19) */ + #define REG_XDMAC_CNDA19 (0x40078528U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 19) */ + #define REG_XDMAC_CNDC19 (0x4007852CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 19) */ + #define REG_XDMAC_CUBC19 (0x40078530U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 19) */ + #define REG_XDMAC_CBC19 (0x40078534U) /**< \brief (XDMAC) Channel Block Control Register (chid = 19) */ + #define REG_XDMAC_CC19 (0x40078538U) /**< \brief (XDMAC) Channel Configuration Register (chid = 19) */ + #define REG_XDMAC_CDS_MSP19 (0x4007853CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 19) */ + #define REG_XDMAC_CSUS19 (0x40078540U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 19) */ + #define REG_XDMAC_CDUS19 (0x40078544U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 19) */ + #define REG_XDMAC_CIE20 (0x40078550U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 20) */ + #define REG_XDMAC_CID20 (0x40078554U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 20) */ + #define REG_XDMAC_CIM20 (0x40078558U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 20) */ + #define REG_XDMAC_CIS20 (0x4007855CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 20) */ + #define REG_XDMAC_CSA20 (0x40078560U) /**< \brief (XDMAC) Channel Source Address Register (chid = 20) */ + #define REG_XDMAC_CDA20 (0x40078564U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 20) */ + #define REG_XDMAC_CNDA20 (0x40078568U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 20) */ + #define REG_XDMAC_CNDC20 (0x4007856CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 20) */ + #define REG_XDMAC_CUBC20 (0x40078570U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 20) */ + #define REG_XDMAC_CBC20 (0x40078574U) /**< \brief (XDMAC) Channel Block Control Register (chid = 20) */ + #define REG_XDMAC_CC20 (0x40078578U) /**< \brief (XDMAC) Channel Configuration Register (chid = 20) */ + #define REG_XDMAC_CDS_MSP20 (0x4007857CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 20) */ + #define REG_XDMAC_CSUS20 (0x40078580U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 20) */ + #define REG_XDMAC_CDUS20 (0x40078584U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 20) */ + #define REG_XDMAC_CIE21 (0x40078590U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 21) */ + #define REG_XDMAC_CID21 (0x40078594U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 21) */ + #define REG_XDMAC_CIM21 (0x40078598U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 21) */ + #define REG_XDMAC_CIS21 (0x4007859CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 21) */ + #define REG_XDMAC_CSA21 (0x400785A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 21) */ + #define REG_XDMAC_CDA21 (0x400785A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 21) */ + #define REG_XDMAC_CNDA21 (0x400785A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 21) */ + #define REG_XDMAC_CNDC21 (0x400785ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 21) */ + #define REG_XDMAC_CUBC21 (0x400785B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 21) */ + #define REG_XDMAC_CBC21 (0x400785B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 21) */ + #define REG_XDMAC_CC21 (0x400785B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 21) */ + #define REG_XDMAC_CDS_MSP21 (0x400785BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 21) */ + #define REG_XDMAC_CSUS21 (0x400785C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 21) */ + #define REG_XDMAC_CDUS21 (0x400785C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 21) */ + #define REG_XDMAC_CIE22 (0x400785D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 22) */ + #define REG_XDMAC_CID22 (0x400785D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 22) */ + #define REG_XDMAC_CIM22 (0x400785D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 22) */ + #define REG_XDMAC_CIS22 (0x400785DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 22) */ + #define REG_XDMAC_CSA22 (0x400785E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 22) */ + #define REG_XDMAC_CDA22 (0x400785E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 22) */ + #define REG_XDMAC_CNDA22 (0x400785E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 22) */ + #define REG_XDMAC_CNDC22 (0x400785ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 22) */ + #define REG_XDMAC_CUBC22 (0x400785F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 22) */ + #define REG_XDMAC_CBC22 (0x400785F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 22) */ + #define REG_XDMAC_CC22 (0x400785F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 22) */ + #define REG_XDMAC_CDS_MSP22 (0x400785FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 22) */ + #define REG_XDMAC_CSUS22 (0x40078600U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 22) */ + #define REG_XDMAC_CDUS22 (0x40078604U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 22) */ + #define REG_XDMAC_CIE23 (0x40078610U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 23) */ + #define REG_XDMAC_CID23 (0x40078614U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 23) */ + #define REG_XDMAC_CIM23 (0x40078618U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 23) */ + #define REG_XDMAC_CIS23 (0x4007861CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 23) */ + #define REG_XDMAC_CSA23 (0x40078620U) /**< \brief (XDMAC) Channel Source Address Register (chid = 23) */ + #define REG_XDMAC_CDA23 (0x40078624U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 23) */ + #define REG_XDMAC_CNDA23 (0x40078628U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 23) */ + #define REG_XDMAC_CNDC23 (0x4007862CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 23) */ + #define REG_XDMAC_CUBC23 (0x40078630U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 23) */ + #define REG_XDMAC_CBC23 (0x40078634U) /**< \brief (XDMAC) Channel Block Control Register (chid = 23) */ + #define REG_XDMAC_CC23 (0x40078638U) /**< \brief (XDMAC) Channel Configuration Register (chid = 23) */ + #define REG_XDMAC_CDS_MSP23 (0x4007863CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 23) */ + #define REG_XDMAC_CSUS23 (0x40078640U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 23) */ + #define REG_XDMAC_CDUS23 (0x40078644U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 23) */ + #define REG_XDMAC_VERSION (0x40078FFCU) /**< \brief (XDMAC) XDMAC Version Register */ +#else + #define REG_XDMAC_GTYPE (*(__I uint32_t*)0x40078000U) /**< \brief (XDMAC) Global Type Register */ + #define REG_XDMAC_GCFG (*(__IO uint32_t*)0x40078004U) /**< \brief (XDMAC) Global Configuration Register */ + #define REG_XDMAC_GWAC (*(__I uint32_t*)0x40078008U) /**< \brief (XDMAC) Global Weighted Arbiter Configuration Register */ + #define REG_XDMAC_GIE (*(__O uint32_t*)0x4007800CU) /**< \brief (XDMAC) Global Interrupt Enable Register */ + #define REG_XDMAC_GID (*(__O uint32_t*)0x40078010U) /**< \brief (XDMAC) Global Interrupt Disable Register */ + #define REG_XDMAC_GIM (*(__I uint32_t*)0x40078014U) /**< \brief (XDMAC) Global Interrupt Mask Register */ + #define REG_XDMAC_GIS (*(__I uint32_t*)0x40078018U) /**< \brief (XDMAC) Global Interrupt Status Register */ + #define REG_XDMAC_GE (*(__O uint32_t*)0x4007801CU) /**< \brief (XDMAC) Global Channel Enable Register */ + #define REG_XDMAC_GD (*(__O uint32_t*)0x40078020U) /**< \brief (XDMAC) Global Channel Disable Register */ + #define REG_XDMAC_GS (*(__I uint32_t*)0x40078024U) /**< \brief (XDMAC) Global Channel Status Register */ + #define REG_XDMAC_GRS (*(__IO uint32_t*)0x40078028U) /**< \brief (XDMAC) Global Channel Read Suspend Register */ + #define REG_XDMAC_GWS (*(__IO uint32_t*)0x4007802CU) /**< \brief (XDMAC) Global Channel Write Suspend Register */ + #define REG_XDMAC_GRWS (*(__O uint32_t*)0x40078030U) /**< \brief (XDMAC) Global Channel Read Write Suspend Register */ + #define REG_XDMAC_GRWR (*(__O uint32_t*)0x40078034U) /**< \brief (XDMAC) Global Channel Read Write Resume Register */ + #define REG_XDMAC_GSWR (*(__O uint32_t*)0x40078038U) /**< \brief (XDMAC) Global Channel Software Request Register */ + #define REG_XDMAC_GSWS (*(__I uint32_t*)0x4007803CU) /**< \brief (XDMAC) Global Channel Software Request Status Register */ + #define REG_XDMAC_GSWF (*(__O uint32_t*)0x40078040U) /**< \brief (XDMAC) Global Channel Software Flush Request Register */ + #define REG_XDMAC_CIE0 (*(__O uint32_t*)0x40078050U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 0) */ + #define REG_XDMAC_CID0 (*(__O uint32_t*)0x40078054U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 0) */ + #define REG_XDMAC_CIM0 (*(__I uint32_t*)0x40078058U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 0) */ + #define REG_XDMAC_CIS0 (*(__I uint32_t*)0x4007805CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 0) */ + #define REG_XDMAC_CSA0 (*(__IO uint32_t*)0x40078060U) /**< \brief (XDMAC) Channel Source Address Register (chid = 0) */ + #define REG_XDMAC_CDA0 (*(__IO uint32_t*)0x40078064U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 0) */ + #define REG_XDMAC_CNDA0 (*(__IO uint32_t*)0x40078068U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 0) */ + #define REG_XDMAC_CNDC0 (*(__IO uint32_t*)0x4007806CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 0) */ + #define REG_XDMAC_CUBC0 (*(__IO uint32_t*)0x40078070U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 0) */ + #define REG_XDMAC_CBC0 (*(__IO uint32_t*)0x40078074U) /**< \brief (XDMAC) Channel Block Control Register (chid = 0) */ + #define REG_XDMAC_CC0 (*(__IO uint32_t*)0x40078078U) /**< \brief (XDMAC) Channel Configuration Register (chid = 0) */ + #define REG_XDMAC_CDS_MSP0 (*(__IO uint32_t*)0x4007807CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 0) */ + #define REG_XDMAC_CSUS0 (*(__IO uint32_t*)0x40078080U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 0) */ + #define REG_XDMAC_CDUS0 (*(__IO uint32_t*)0x40078084U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 0) */ + #define REG_XDMAC_CIE1 (*(__O uint32_t*)0x40078090U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 1) */ + #define REG_XDMAC_CID1 (*(__O uint32_t*)0x40078094U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 1) */ + #define REG_XDMAC_CIM1 (*(__I uint32_t*)0x40078098U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 1) */ + #define REG_XDMAC_CIS1 (*(__I uint32_t*)0x4007809CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 1) */ + #define REG_XDMAC_CSA1 (*(__IO uint32_t*)0x400780A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 1) */ + #define REG_XDMAC_CDA1 (*(__IO uint32_t*)0x400780A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 1) */ + #define REG_XDMAC_CNDA1 (*(__IO uint32_t*)0x400780A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 1) */ + #define REG_XDMAC_CNDC1 (*(__IO uint32_t*)0x400780ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 1) */ + #define REG_XDMAC_CUBC1 (*(__IO uint32_t*)0x400780B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 1) */ + #define REG_XDMAC_CBC1 (*(__IO uint32_t*)0x400780B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 1) */ + #define REG_XDMAC_CC1 (*(__IO uint32_t*)0x400780B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 1) */ + #define REG_XDMAC_CDS_MSP1 (*(__IO uint32_t*)0x400780BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 1) */ + #define REG_XDMAC_CSUS1 (*(__IO uint32_t*)0x400780C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 1) */ + #define REG_XDMAC_CDUS1 (*(__IO uint32_t*)0x400780C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 1) */ + #define REG_XDMAC_CIE2 (*(__O uint32_t*)0x400780D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 2) */ + #define REG_XDMAC_CID2 (*(__O uint32_t*)0x400780D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 2) */ + #define REG_XDMAC_CIM2 (*(__I uint32_t*)0x400780D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 2) */ + #define REG_XDMAC_CIS2 (*(__I uint32_t*)0x400780DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 2) */ + #define REG_XDMAC_CSA2 (*(__IO uint32_t*)0x400780E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 2) */ + #define REG_XDMAC_CDA2 (*(__IO uint32_t*)0x400780E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 2) */ + #define REG_XDMAC_CNDA2 (*(__IO uint32_t*)0x400780E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 2) */ + #define REG_XDMAC_CNDC2 (*(__IO uint32_t*)0x400780ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 2) */ + #define REG_XDMAC_CUBC2 (*(__IO uint32_t*)0x400780F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 2) */ + #define REG_XDMAC_CBC2 (*(__IO uint32_t*)0x400780F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 2) */ + #define REG_XDMAC_CC2 (*(__IO uint32_t*)0x400780F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 2) */ + #define REG_XDMAC_CDS_MSP2 (*(__IO uint32_t*)0x400780FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 2) */ + #define REG_XDMAC_CSUS2 (*(__IO uint32_t*)0x40078100U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 2) */ + #define REG_XDMAC_CDUS2 (*(__IO uint32_t*)0x40078104U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 2) */ + #define REG_XDMAC_CIE3 (*(__O uint32_t*)0x40078110U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 3) */ + #define REG_XDMAC_CID3 (*(__O uint32_t*)0x40078114U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 3) */ + #define REG_XDMAC_CIM3 (*(__I uint32_t*)0x40078118U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 3) */ + #define REG_XDMAC_CIS3 (*(__I uint32_t*)0x4007811CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 3) */ + #define REG_XDMAC_CSA3 (*(__IO uint32_t*)0x40078120U) /**< \brief (XDMAC) Channel Source Address Register (chid = 3) */ + #define REG_XDMAC_CDA3 (*(__IO uint32_t*)0x40078124U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 3) */ + #define REG_XDMAC_CNDA3 (*(__IO uint32_t*)0x40078128U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 3) */ + #define REG_XDMAC_CNDC3 (*(__IO uint32_t*)0x4007812CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 3) */ + #define REG_XDMAC_CUBC3 (*(__IO uint32_t*)0x40078130U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 3) */ + #define REG_XDMAC_CBC3 (*(__IO uint32_t*)0x40078134U) /**< \brief (XDMAC) Channel Block Control Register (chid = 3) */ + #define REG_XDMAC_CC3 (*(__IO uint32_t*)0x40078138U) /**< \brief (XDMAC) Channel Configuration Register (chid = 3) */ + #define REG_XDMAC_CDS_MSP3 (*(__IO uint32_t*)0x4007813CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 3) */ + #define REG_XDMAC_CSUS3 (*(__IO uint32_t*)0x40078140U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 3) */ + #define REG_XDMAC_CDUS3 (*(__IO uint32_t*)0x40078144U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 3) */ + #define REG_XDMAC_CIE4 (*(__O uint32_t*)0x40078150U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 4) */ + #define REG_XDMAC_CID4 (*(__O uint32_t*)0x40078154U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 4) */ + #define REG_XDMAC_CIM4 (*(__I uint32_t*)0x40078158U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 4) */ + #define REG_XDMAC_CIS4 (*(__I uint32_t*)0x4007815CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 4) */ + #define REG_XDMAC_CSA4 (*(__IO uint32_t*)0x40078160U) /**< \brief (XDMAC) Channel Source Address Register (chid = 4) */ + #define REG_XDMAC_CDA4 (*(__IO uint32_t*)0x40078164U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 4) */ + #define REG_XDMAC_CNDA4 (*(__IO uint32_t*)0x40078168U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 4) */ + #define REG_XDMAC_CNDC4 (*(__IO uint32_t*)0x4007816CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 4) */ + #define REG_XDMAC_CUBC4 (*(__IO uint32_t*)0x40078170U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 4) */ + #define REG_XDMAC_CBC4 (*(__IO uint32_t*)0x40078174U) /**< \brief (XDMAC) Channel Block Control Register (chid = 4) */ + #define REG_XDMAC_CC4 (*(__IO uint32_t*)0x40078178U) /**< \brief (XDMAC) Channel Configuration Register (chid = 4) */ + #define REG_XDMAC_CDS_MSP4 (*(__IO uint32_t*)0x4007817CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 4) */ + #define REG_XDMAC_CSUS4 (*(__IO uint32_t*)0x40078180U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 4) */ + #define REG_XDMAC_CDUS4 (*(__IO uint32_t*)0x40078184U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 4) */ + #define REG_XDMAC_CIE5 (*(__O uint32_t*)0x40078190U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 5) */ + #define REG_XDMAC_CID5 (*(__O uint32_t*)0x40078194U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 5) */ + #define REG_XDMAC_CIM5 (*(__I uint32_t*)0x40078198U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 5) */ + #define REG_XDMAC_CIS5 (*(__I uint32_t*)0x4007819CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 5) */ + #define REG_XDMAC_CSA5 (*(__IO uint32_t*)0x400781A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 5) */ + #define REG_XDMAC_CDA5 (*(__IO uint32_t*)0x400781A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 5) */ + #define REG_XDMAC_CNDA5 (*(__IO uint32_t*)0x400781A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 5) */ + #define REG_XDMAC_CNDC5 (*(__IO uint32_t*)0x400781ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 5) */ + #define REG_XDMAC_CUBC5 (*(__IO uint32_t*)0x400781B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 5) */ + #define REG_XDMAC_CBC5 (*(__IO uint32_t*)0x400781B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 5) */ + #define REG_XDMAC_CC5 (*(__IO uint32_t*)0x400781B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 5) */ + #define REG_XDMAC_CDS_MSP5 (*(__IO uint32_t*)0x400781BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 5) */ + #define REG_XDMAC_CSUS5 (*(__IO uint32_t*)0x400781C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 5) */ + #define REG_XDMAC_CDUS5 (*(__IO uint32_t*)0x400781C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 5) */ + #define REG_XDMAC_CIE6 (*(__O uint32_t*)0x400781D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 6) */ + #define REG_XDMAC_CID6 (*(__O uint32_t*)0x400781D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 6) */ + #define REG_XDMAC_CIM6 (*(__I uint32_t*)0x400781D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 6) */ + #define REG_XDMAC_CIS6 (*(__I uint32_t*)0x400781DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 6) */ + #define REG_XDMAC_CSA6 (*(__IO uint32_t*)0x400781E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 6) */ + #define REG_XDMAC_CDA6 (*(__IO uint32_t*)0x400781E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 6) */ + #define REG_XDMAC_CNDA6 (*(__IO uint32_t*)0x400781E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 6) */ + #define REG_XDMAC_CNDC6 (*(__IO uint32_t*)0x400781ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 6) */ + #define REG_XDMAC_CUBC6 (*(__IO uint32_t*)0x400781F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 6) */ + #define REG_XDMAC_CBC6 (*(__IO uint32_t*)0x400781F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 6) */ + #define REG_XDMAC_CC6 (*(__IO uint32_t*)0x400781F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 6) */ + #define REG_XDMAC_CDS_MSP6 (*(__IO uint32_t*)0x400781FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 6) */ + #define REG_XDMAC_CSUS6 (*(__IO uint32_t*)0x40078200U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 6) */ + #define REG_XDMAC_CDUS6 (*(__IO uint32_t*)0x40078204U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 6) */ + #define REG_XDMAC_CIE7 (*(__O uint32_t*)0x40078210U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 7) */ + #define REG_XDMAC_CID7 (*(__O uint32_t*)0x40078214U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 7) */ + #define REG_XDMAC_CIM7 (*(__I uint32_t*)0x40078218U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 7) */ + #define REG_XDMAC_CIS7 (*(__I uint32_t*)0x4007821CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 7) */ + #define REG_XDMAC_CSA7 (*(__IO uint32_t*)0x40078220U) /**< \brief (XDMAC) Channel Source Address Register (chid = 7) */ + #define REG_XDMAC_CDA7 (*(__IO uint32_t*)0x40078224U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 7) */ + #define REG_XDMAC_CNDA7 (*(__IO uint32_t*)0x40078228U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 7) */ + #define REG_XDMAC_CNDC7 (*(__IO uint32_t*)0x4007822CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 7) */ + #define REG_XDMAC_CUBC7 (*(__IO uint32_t*)0x40078230U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 7) */ + #define REG_XDMAC_CBC7 (*(__IO uint32_t*)0x40078234U) /**< \brief (XDMAC) Channel Block Control Register (chid = 7) */ + #define REG_XDMAC_CC7 (*(__IO uint32_t*)0x40078238U) /**< \brief (XDMAC) Channel Configuration Register (chid = 7) */ + #define REG_XDMAC_CDS_MSP7 (*(__IO uint32_t*)0x4007823CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 7) */ + #define REG_XDMAC_CSUS7 (*(__IO uint32_t*)0x40078240U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 7) */ + #define REG_XDMAC_CDUS7 (*(__IO uint32_t*)0x40078244U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 7) */ + #define REG_XDMAC_CIE8 (*(__O uint32_t*)0x40078250U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 8) */ + #define REG_XDMAC_CID8 (*(__O uint32_t*)0x40078254U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 8) */ + #define REG_XDMAC_CIM8 (*(__I uint32_t*)0x40078258U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 8) */ + #define REG_XDMAC_CIS8 (*(__I uint32_t*)0x4007825CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 8) */ + #define REG_XDMAC_CSA8 (*(__IO uint32_t*)0x40078260U) /**< \brief (XDMAC) Channel Source Address Register (chid = 8) */ + #define REG_XDMAC_CDA8 (*(__IO uint32_t*)0x40078264U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 8) */ + #define REG_XDMAC_CNDA8 (*(__IO uint32_t*)0x40078268U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 8) */ + #define REG_XDMAC_CNDC8 (*(__IO uint32_t*)0x4007826CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 8) */ + #define REG_XDMAC_CUBC8 (*(__IO uint32_t*)0x40078270U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 8) */ + #define REG_XDMAC_CBC8 (*(__IO uint32_t*)0x40078274U) /**< \brief (XDMAC) Channel Block Control Register (chid = 8) */ + #define REG_XDMAC_CC8 (*(__IO uint32_t*)0x40078278U) /**< \brief (XDMAC) Channel Configuration Register (chid = 8) */ + #define REG_XDMAC_CDS_MSP8 (*(__IO uint32_t*)0x4007827CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 8) */ + #define REG_XDMAC_CSUS8 (*(__IO uint32_t*)0x40078280U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 8) */ + #define REG_XDMAC_CDUS8 (*(__IO uint32_t*)0x40078284U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 8) */ + #define REG_XDMAC_CIE9 (*(__O uint32_t*)0x40078290U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 9) */ + #define REG_XDMAC_CID9 (*(__O uint32_t*)0x40078294U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 9) */ + #define REG_XDMAC_CIM9 (*(__I uint32_t*)0x40078298U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 9) */ + #define REG_XDMAC_CIS9 (*(__I uint32_t*)0x4007829CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 9) */ + #define REG_XDMAC_CSA9 (*(__IO uint32_t*)0x400782A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 9) */ + #define REG_XDMAC_CDA9 (*(__IO uint32_t*)0x400782A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 9) */ + #define REG_XDMAC_CNDA9 (*(__IO uint32_t*)0x400782A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 9) */ + #define REG_XDMAC_CNDC9 (*(__IO uint32_t*)0x400782ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 9) */ + #define REG_XDMAC_CUBC9 (*(__IO uint32_t*)0x400782B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 9) */ + #define REG_XDMAC_CBC9 (*(__IO uint32_t*)0x400782B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 9) */ + #define REG_XDMAC_CC9 (*(__IO uint32_t*)0x400782B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 9) */ + #define REG_XDMAC_CDS_MSP9 (*(__IO uint32_t*)0x400782BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 9) */ + #define REG_XDMAC_CSUS9 (*(__IO uint32_t*)0x400782C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 9) */ + #define REG_XDMAC_CDUS9 (*(__IO uint32_t*)0x400782C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 9) */ + #define REG_XDMAC_CIE10 (*(__O uint32_t*)0x400782D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 10) */ + #define REG_XDMAC_CID10 (*(__O uint32_t*)0x400782D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 10) */ + #define REG_XDMAC_CIM10 (*(__I uint32_t*)0x400782D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 10) */ + #define REG_XDMAC_CIS10 (*(__I uint32_t*)0x400782DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 10) */ + #define REG_XDMAC_CSA10 (*(__IO uint32_t*)0x400782E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 10) */ + #define REG_XDMAC_CDA10 (*(__IO uint32_t*)0x400782E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 10) */ + #define REG_XDMAC_CNDA10 (*(__IO uint32_t*)0x400782E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 10) */ + #define REG_XDMAC_CNDC10 (*(__IO uint32_t*)0x400782ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 10) */ + #define REG_XDMAC_CUBC10 (*(__IO uint32_t*)0x400782F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 10) */ + #define REG_XDMAC_CBC10 (*(__IO uint32_t*)0x400782F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 10) */ + #define REG_XDMAC_CC10 (*(__IO uint32_t*)0x400782F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 10) */ + #define REG_XDMAC_CDS_MSP10 (*(__IO uint32_t*)0x400782FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 10) */ + #define REG_XDMAC_CSUS10 (*(__IO uint32_t*)0x40078300U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 10) */ + #define REG_XDMAC_CDUS10 (*(__IO uint32_t*)0x40078304U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 10) */ + #define REG_XDMAC_CIE11 (*(__O uint32_t*)0x40078310U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 11) */ + #define REG_XDMAC_CID11 (*(__O uint32_t*)0x40078314U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 11) */ + #define REG_XDMAC_CIM11 (*(__I uint32_t*)0x40078318U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 11) */ + #define REG_XDMAC_CIS11 (*(__I uint32_t*)0x4007831CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 11) */ + #define REG_XDMAC_CSA11 (*(__IO uint32_t*)0x40078320U) /**< \brief (XDMAC) Channel Source Address Register (chid = 11) */ + #define REG_XDMAC_CDA11 (*(__IO uint32_t*)0x40078324U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 11) */ + #define REG_XDMAC_CNDA11 (*(__IO uint32_t*)0x40078328U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 11) */ + #define REG_XDMAC_CNDC11 (*(__IO uint32_t*)0x4007832CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 11) */ + #define REG_XDMAC_CUBC11 (*(__IO uint32_t*)0x40078330U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 11) */ + #define REG_XDMAC_CBC11 (*(__IO uint32_t*)0x40078334U) /**< \brief (XDMAC) Channel Block Control Register (chid = 11) */ + #define REG_XDMAC_CC11 (*(__IO uint32_t*)0x40078338U) /**< \brief (XDMAC) Channel Configuration Register (chid = 11) */ + #define REG_XDMAC_CDS_MSP11 (*(__IO uint32_t*)0x4007833CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 11) */ + #define REG_XDMAC_CSUS11 (*(__IO uint32_t*)0x40078340U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 11) */ + #define REG_XDMAC_CDUS11 (*(__IO uint32_t*)0x40078344U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 11) */ + #define REG_XDMAC_CIE12 (*(__O uint32_t*)0x40078350U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 12) */ + #define REG_XDMAC_CID12 (*(__O uint32_t*)0x40078354U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 12) */ + #define REG_XDMAC_CIM12 (*(__I uint32_t*)0x40078358U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 12) */ + #define REG_XDMAC_CIS12 (*(__I uint32_t*)0x4007835CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 12) */ + #define REG_XDMAC_CSA12 (*(__IO uint32_t*)0x40078360U) /**< \brief (XDMAC) Channel Source Address Register (chid = 12) */ + #define REG_XDMAC_CDA12 (*(__IO uint32_t*)0x40078364U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 12) */ + #define REG_XDMAC_CNDA12 (*(__IO uint32_t*)0x40078368U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 12) */ + #define REG_XDMAC_CNDC12 (*(__IO uint32_t*)0x4007836CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 12) */ + #define REG_XDMAC_CUBC12 (*(__IO uint32_t*)0x40078370U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 12) */ + #define REG_XDMAC_CBC12 (*(__IO uint32_t*)0x40078374U) /**< \brief (XDMAC) Channel Block Control Register (chid = 12) */ + #define REG_XDMAC_CC12 (*(__IO uint32_t*)0x40078378U) /**< \brief (XDMAC) Channel Configuration Register (chid = 12) */ + #define REG_XDMAC_CDS_MSP12 (*(__IO uint32_t*)0x4007837CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 12) */ + #define REG_XDMAC_CSUS12 (*(__IO uint32_t*)0x40078380U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 12) */ + #define REG_XDMAC_CDUS12 (*(__IO uint32_t*)0x40078384U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 12) */ + #define REG_XDMAC_CIE13 (*(__O uint32_t*)0x40078390U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 13) */ + #define REG_XDMAC_CID13 (*(__O uint32_t*)0x40078394U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 13) */ + #define REG_XDMAC_CIM13 (*(__I uint32_t*)0x40078398U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 13) */ + #define REG_XDMAC_CIS13 (*(__I uint32_t*)0x4007839CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 13) */ + #define REG_XDMAC_CSA13 (*(__IO uint32_t*)0x400783A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 13) */ + #define REG_XDMAC_CDA13 (*(__IO uint32_t*)0x400783A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 13) */ + #define REG_XDMAC_CNDA13 (*(__IO uint32_t*)0x400783A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 13) */ + #define REG_XDMAC_CNDC13 (*(__IO uint32_t*)0x400783ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 13) */ + #define REG_XDMAC_CUBC13 (*(__IO uint32_t*)0x400783B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 13) */ + #define REG_XDMAC_CBC13 (*(__IO uint32_t*)0x400783B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 13) */ + #define REG_XDMAC_CC13 (*(__IO uint32_t*)0x400783B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 13) */ + #define REG_XDMAC_CDS_MSP13 (*(__IO uint32_t*)0x400783BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 13) */ + #define REG_XDMAC_CSUS13 (*(__IO uint32_t*)0x400783C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 13) */ + #define REG_XDMAC_CDUS13 (*(__IO uint32_t*)0x400783C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 13) */ + #define REG_XDMAC_CIE14 (*(__O uint32_t*)0x400783D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 14) */ + #define REG_XDMAC_CID14 (*(__O uint32_t*)0x400783D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 14) */ + #define REG_XDMAC_CIM14 (*(__I uint32_t*)0x400783D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 14) */ + #define REG_XDMAC_CIS14 (*(__I uint32_t*)0x400783DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 14) */ + #define REG_XDMAC_CSA14 (*(__IO uint32_t*)0x400783E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 14) */ + #define REG_XDMAC_CDA14 (*(__IO uint32_t*)0x400783E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 14) */ + #define REG_XDMAC_CNDA14 (*(__IO uint32_t*)0x400783E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 14) */ + #define REG_XDMAC_CNDC14 (*(__IO uint32_t*)0x400783ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 14) */ + #define REG_XDMAC_CUBC14 (*(__IO uint32_t*)0x400783F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 14) */ + #define REG_XDMAC_CBC14 (*(__IO uint32_t*)0x400783F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 14) */ + #define REG_XDMAC_CC14 (*(__IO uint32_t*)0x400783F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 14) */ + #define REG_XDMAC_CDS_MSP14 (*(__IO uint32_t*)0x400783FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 14) */ + #define REG_XDMAC_CSUS14 (*(__IO uint32_t*)0x40078400U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 14) */ + #define REG_XDMAC_CDUS14 (*(__IO uint32_t*)0x40078404U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 14) */ + #define REG_XDMAC_CIE15 (*(__O uint32_t*)0x40078410U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 15) */ + #define REG_XDMAC_CID15 (*(__O uint32_t*)0x40078414U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 15) */ + #define REG_XDMAC_CIM15 (*(__I uint32_t*)0x40078418U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 15) */ + #define REG_XDMAC_CIS15 (*(__I uint32_t*)0x4007841CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 15) */ + #define REG_XDMAC_CSA15 (*(__IO uint32_t*)0x40078420U) /**< \brief (XDMAC) Channel Source Address Register (chid = 15) */ + #define REG_XDMAC_CDA15 (*(__IO uint32_t*)0x40078424U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 15) */ + #define REG_XDMAC_CNDA15 (*(__IO uint32_t*)0x40078428U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 15) */ + #define REG_XDMAC_CNDC15 (*(__IO uint32_t*)0x4007842CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 15) */ + #define REG_XDMAC_CUBC15 (*(__IO uint32_t*)0x40078430U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 15) */ + #define REG_XDMAC_CBC15 (*(__IO uint32_t*)0x40078434U) /**< \brief (XDMAC) Channel Block Control Register (chid = 15) */ + #define REG_XDMAC_CC15 (*(__IO uint32_t*)0x40078438U) /**< \brief (XDMAC) Channel Configuration Register (chid = 15) */ + #define REG_XDMAC_CDS_MSP15 (*(__IO uint32_t*)0x4007843CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 15) */ + #define REG_XDMAC_CSUS15 (*(__IO uint32_t*)0x40078440U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 15) */ + #define REG_XDMAC_CDUS15 (*(__IO uint32_t*)0x40078444U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 15) */ + #define REG_XDMAC_CIE16 (*(__O uint32_t*)0x40078450U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 16) */ + #define REG_XDMAC_CID16 (*(__O uint32_t*)0x40078454U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 16) */ + #define REG_XDMAC_CIM16 (*(__I uint32_t*)0x40078458U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 16) */ + #define REG_XDMAC_CIS16 (*(__I uint32_t*)0x4007845CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 16) */ + #define REG_XDMAC_CSA16 (*(__IO uint32_t*)0x40078460U) /**< \brief (XDMAC) Channel Source Address Register (chid = 16) */ + #define REG_XDMAC_CDA16 (*(__IO uint32_t*)0x40078464U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 16) */ + #define REG_XDMAC_CNDA16 (*(__IO uint32_t*)0x40078468U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 16) */ + #define REG_XDMAC_CNDC16 (*(__IO uint32_t*)0x4007846CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 16) */ + #define REG_XDMAC_CUBC16 (*(__IO uint32_t*)0x40078470U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 16) */ + #define REG_XDMAC_CBC16 (*(__IO uint32_t*)0x40078474U) /**< \brief (XDMAC) Channel Block Control Register (chid = 16) */ + #define REG_XDMAC_CC16 (*(__IO uint32_t*)0x40078478U) /**< \brief (XDMAC) Channel Configuration Register (chid = 16) */ + #define REG_XDMAC_CDS_MSP16 (*(__IO uint32_t*)0x4007847CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 16) */ + #define REG_XDMAC_CSUS16 (*(__IO uint32_t*)0x40078480U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 16) */ + #define REG_XDMAC_CDUS16 (*(__IO uint32_t*)0x40078484U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 16) */ + #define REG_XDMAC_CIE17 (*(__O uint32_t*)0x40078490U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 17) */ + #define REG_XDMAC_CID17 (*(__O uint32_t*)0x40078494U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 17) */ + #define REG_XDMAC_CIM17 (*(__I uint32_t*)0x40078498U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 17) */ + #define REG_XDMAC_CIS17 (*(__I uint32_t*)0x4007849CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 17) */ + #define REG_XDMAC_CSA17 (*(__IO uint32_t*)0x400784A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 17) */ + #define REG_XDMAC_CDA17 (*(__IO uint32_t*)0x400784A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 17) */ + #define REG_XDMAC_CNDA17 (*(__IO uint32_t*)0x400784A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 17) */ + #define REG_XDMAC_CNDC17 (*(__IO uint32_t*)0x400784ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 17) */ + #define REG_XDMAC_CUBC17 (*(__IO uint32_t*)0x400784B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 17) */ + #define REG_XDMAC_CBC17 (*(__IO uint32_t*)0x400784B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 17) */ + #define REG_XDMAC_CC17 (*(__IO uint32_t*)0x400784B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 17) */ + #define REG_XDMAC_CDS_MSP17 (*(__IO uint32_t*)0x400784BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 17) */ + #define REG_XDMAC_CSUS17 (*(__IO uint32_t*)0x400784C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 17) */ + #define REG_XDMAC_CDUS17 (*(__IO uint32_t*)0x400784C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 17) */ + #define REG_XDMAC_CIE18 (*(__O uint32_t*)0x400784D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 18) */ + #define REG_XDMAC_CID18 (*(__O uint32_t*)0x400784D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 18) */ + #define REG_XDMAC_CIM18 (*(__I uint32_t*)0x400784D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 18) */ + #define REG_XDMAC_CIS18 (*(__I uint32_t*)0x400784DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 18) */ + #define REG_XDMAC_CSA18 (*(__IO uint32_t*)0x400784E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 18) */ + #define REG_XDMAC_CDA18 (*(__IO uint32_t*)0x400784E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 18) */ + #define REG_XDMAC_CNDA18 (*(__IO uint32_t*)0x400784E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 18) */ + #define REG_XDMAC_CNDC18 (*(__IO uint32_t*)0x400784ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 18) */ + #define REG_XDMAC_CUBC18 (*(__IO uint32_t*)0x400784F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 18) */ + #define REG_XDMAC_CBC18 (*(__IO uint32_t*)0x400784F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 18) */ + #define REG_XDMAC_CC18 (*(__IO uint32_t*)0x400784F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 18) */ + #define REG_XDMAC_CDS_MSP18 (*(__IO uint32_t*)0x400784FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 18) */ + #define REG_XDMAC_CSUS18 (*(__IO uint32_t*)0x40078500U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 18) */ + #define REG_XDMAC_CDUS18 (*(__IO uint32_t*)0x40078504U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 18) */ + #define REG_XDMAC_CIE19 (*(__O uint32_t*)0x40078510U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 19) */ + #define REG_XDMAC_CID19 (*(__O uint32_t*)0x40078514U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 19) */ + #define REG_XDMAC_CIM19 (*(__I uint32_t*)0x40078518U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 19) */ + #define REG_XDMAC_CIS19 (*(__I uint32_t*)0x4007851CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 19) */ + #define REG_XDMAC_CSA19 (*(__IO uint32_t*)0x40078520U) /**< \brief (XDMAC) Channel Source Address Register (chid = 19) */ + #define REG_XDMAC_CDA19 (*(__IO uint32_t*)0x40078524U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 19) */ + #define REG_XDMAC_CNDA19 (*(__IO uint32_t*)0x40078528U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 19) */ + #define REG_XDMAC_CNDC19 (*(__IO uint32_t*)0x4007852CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 19) */ + #define REG_XDMAC_CUBC19 (*(__IO uint32_t*)0x40078530U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 19) */ + #define REG_XDMAC_CBC19 (*(__IO uint32_t*)0x40078534U) /**< \brief (XDMAC) Channel Block Control Register (chid = 19) */ + #define REG_XDMAC_CC19 (*(__IO uint32_t*)0x40078538U) /**< \brief (XDMAC) Channel Configuration Register (chid = 19) */ + #define REG_XDMAC_CDS_MSP19 (*(__IO uint32_t*)0x4007853CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 19) */ + #define REG_XDMAC_CSUS19 (*(__IO uint32_t*)0x40078540U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 19) */ + #define REG_XDMAC_CDUS19 (*(__IO uint32_t*)0x40078544U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 19) */ + #define REG_XDMAC_CIE20 (*(__O uint32_t*)0x40078550U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 20) */ + #define REG_XDMAC_CID20 (*(__O uint32_t*)0x40078554U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 20) */ + #define REG_XDMAC_CIM20 (*(__I uint32_t*)0x40078558U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 20) */ + #define REG_XDMAC_CIS20 (*(__I uint32_t*)0x4007855CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 20) */ + #define REG_XDMAC_CSA20 (*(__IO uint32_t*)0x40078560U) /**< \brief (XDMAC) Channel Source Address Register (chid = 20) */ + #define REG_XDMAC_CDA20 (*(__IO uint32_t*)0x40078564U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 20) */ + #define REG_XDMAC_CNDA20 (*(__IO uint32_t*)0x40078568U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 20) */ + #define REG_XDMAC_CNDC20 (*(__IO uint32_t*)0x4007856CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 20) */ + #define REG_XDMAC_CUBC20 (*(__IO uint32_t*)0x40078570U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 20) */ + #define REG_XDMAC_CBC20 (*(__IO uint32_t*)0x40078574U) /**< \brief (XDMAC) Channel Block Control Register (chid = 20) */ + #define REG_XDMAC_CC20 (*(__IO uint32_t*)0x40078578U) /**< \brief (XDMAC) Channel Configuration Register (chid = 20) */ + #define REG_XDMAC_CDS_MSP20 (*(__IO uint32_t*)0x4007857CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 20) */ + #define REG_XDMAC_CSUS20 (*(__IO uint32_t*)0x40078580U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 20) */ + #define REG_XDMAC_CDUS20 (*(__IO uint32_t*)0x40078584U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 20) */ + #define REG_XDMAC_CIE21 (*(__O uint32_t*)0x40078590U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 21) */ + #define REG_XDMAC_CID21 (*(__O uint32_t*)0x40078594U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 21) */ + #define REG_XDMAC_CIM21 (*(__I uint32_t*)0x40078598U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 21) */ + #define REG_XDMAC_CIS21 (*(__I uint32_t*)0x4007859CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 21) */ + #define REG_XDMAC_CSA21 (*(__IO uint32_t*)0x400785A0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 21) */ + #define REG_XDMAC_CDA21 (*(__IO uint32_t*)0x400785A4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 21) */ + #define REG_XDMAC_CNDA21 (*(__IO uint32_t*)0x400785A8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 21) */ + #define REG_XDMAC_CNDC21 (*(__IO uint32_t*)0x400785ACU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 21) */ + #define REG_XDMAC_CUBC21 (*(__IO uint32_t*)0x400785B0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 21) */ + #define REG_XDMAC_CBC21 (*(__IO uint32_t*)0x400785B4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 21) */ + #define REG_XDMAC_CC21 (*(__IO uint32_t*)0x400785B8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 21) */ + #define REG_XDMAC_CDS_MSP21 (*(__IO uint32_t*)0x400785BCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 21) */ + #define REG_XDMAC_CSUS21 (*(__IO uint32_t*)0x400785C0U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 21) */ + #define REG_XDMAC_CDUS21 (*(__IO uint32_t*)0x400785C4U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 21) */ + #define REG_XDMAC_CIE22 (*(__O uint32_t*)0x400785D0U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 22) */ + #define REG_XDMAC_CID22 (*(__O uint32_t*)0x400785D4U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 22) */ + #define REG_XDMAC_CIM22 (*(__I uint32_t*)0x400785D8U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 22) */ + #define REG_XDMAC_CIS22 (*(__I uint32_t*)0x400785DCU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 22) */ + #define REG_XDMAC_CSA22 (*(__IO uint32_t*)0x400785E0U) /**< \brief (XDMAC) Channel Source Address Register (chid = 22) */ + #define REG_XDMAC_CDA22 (*(__IO uint32_t*)0x400785E4U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 22) */ + #define REG_XDMAC_CNDA22 (*(__IO uint32_t*)0x400785E8U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 22) */ + #define REG_XDMAC_CNDC22 (*(__IO uint32_t*)0x400785ECU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 22) */ + #define REG_XDMAC_CUBC22 (*(__IO uint32_t*)0x400785F0U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 22) */ + #define REG_XDMAC_CBC22 (*(__IO uint32_t*)0x400785F4U) /**< \brief (XDMAC) Channel Block Control Register (chid = 22) */ + #define REG_XDMAC_CC22 (*(__IO uint32_t*)0x400785F8U) /**< \brief (XDMAC) Channel Configuration Register (chid = 22) */ + #define REG_XDMAC_CDS_MSP22 (*(__IO uint32_t*)0x400785FCU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 22) */ + #define REG_XDMAC_CSUS22 (*(__IO uint32_t*)0x40078600U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 22) */ + #define REG_XDMAC_CDUS22 (*(__IO uint32_t*)0x40078604U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 22) */ + #define REG_XDMAC_CIE23 (*(__O uint32_t*)0x40078610U) /**< \brief (XDMAC) Channel Interrupt Enable Register (chid = 23) */ + #define REG_XDMAC_CID23 (*(__O uint32_t*)0x40078614U) /**< \brief (XDMAC) Channel Interrupt Disable Register (chid = 23) */ + #define REG_XDMAC_CIM23 (*(__I uint32_t*)0x40078618U) /**< \brief (XDMAC) Channel Interrupt Mask Register (chid = 23) */ + #define REG_XDMAC_CIS23 (*(__I uint32_t*)0x4007861CU) /**< \brief (XDMAC) Channel Interrupt Status Register (chid = 23) */ + #define REG_XDMAC_CSA23 (*(__IO uint32_t*)0x40078620U) /**< \brief (XDMAC) Channel Source Address Register (chid = 23) */ + #define REG_XDMAC_CDA23 (*(__IO uint32_t*)0x40078624U) /**< \brief (XDMAC) Channel Destination Address Register (chid = 23) */ + #define REG_XDMAC_CNDA23 (*(__IO uint32_t*)0x40078628U) /**< \brief (XDMAC) Channel Next Descriptor Address Register (chid = 23) */ + #define REG_XDMAC_CNDC23 (*(__IO uint32_t*)0x4007862CU) /**< \brief (XDMAC) Channel Next Descriptor Control Register (chid = 23) */ + #define REG_XDMAC_CUBC23 (*(__IO uint32_t*)0x40078630U) /**< \brief (XDMAC) Channel Microblock Control Register (chid = 23) */ + #define REG_XDMAC_CBC23 (*(__IO uint32_t*)0x40078634U) /**< \brief (XDMAC) Channel Block Control Register (chid = 23) */ + #define REG_XDMAC_CC23 (*(__IO uint32_t*)0x40078638U) /**< \brief (XDMAC) Channel Configuration Register (chid = 23) */ + #define REG_XDMAC_CDS_MSP23 (*(__IO uint32_t*)0x4007863CU) /**< \brief (XDMAC) Channel Data Stride Memory Set Pattern (chid = 23) */ + #define REG_XDMAC_CSUS23 (*(__IO uint32_t*)0x40078640U) /**< \brief (XDMAC) Channel Source Microblock Stride (chid = 23) */ + #define REG_XDMAC_CDUS23 (*(__IO uint32_t*)0x40078644U) /**< \brief (XDMAC) Channel Destination Microblock Stride (chid = 23) */ + #define REG_XDMAC_VERSION (*(__IO uint32_t*)0x40078FFCU) /**< \brief (XDMAC) XDMAC Version Register */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ + +#endif /* _SAME70_XDMAC_INSTANCE_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h new file mode 100644 index 00000000..4710fa85 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h @@ -0,0 +1,398 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J19_PIO_ +#define _SAME70J19_PIO_ + +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA24_IDX 24 +#define PIO_PA27_IDX 27 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70J19_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h new file mode 100644 index 00000000..5d40d1dd --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h @@ -0,0 +1,398 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J19B_PIO_ +#define _SAME70J19B_PIO_ + +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA24_IDX 24 +#define PIO_PA27_IDX 27 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70J19B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h new file mode 100644 index 00000000..e15510c5 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h @@ -0,0 +1,398 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J20_PIO_ +#define _SAME70J20_PIO_ + +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA24_IDX 24 +#define PIO_PA27_IDX 27 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70J20_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h new file mode 100644 index 00000000..c3860b61 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h @@ -0,0 +1,398 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J20B_PIO_ +#define _SAME70J20B_PIO_ + +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA24_IDX 24 +#define PIO_PA27_IDX 27 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70J20B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h new file mode 100644 index 00000000..ec9104a8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h @@ -0,0 +1,398 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J21_PIO_ +#define _SAME70J21_PIO_ + +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA24_IDX 24 +#define PIO_PA27_IDX 27 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70J21_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h new file mode 100644 index 00000000..dfcead66 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h @@ -0,0 +1,398 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J21B_PIO_ +#define _SAME70J21B_PIO_ + +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio indexes ========== */ +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA24_IDX 24 +#define PIO_PA27_IDX 27 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70J21B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h new file mode 100644 index 00000000..fe3589a1 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h @@ -0,0 +1,489 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N19_PIO_ +#define _SAME70N19_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70N19_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h new file mode 100644 index 00000000..3fec5394 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h @@ -0,0 +1,495 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N19B_PIO_ +#define _SAME70N19B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for I2SC0 peripheral ========== */ +#define PIO_PA1D_I2SC0_CK (1u << 1) /**< \brief I2sc0 signal: I2SC0_CK */ +#define PIO_PA16D_I2SC0_DI0 (1u << 16) /**< \brief I2sc0 signal: I2SC0_DI0 */ +#define PIO_PA30D_I2SC0_DO0 (1u << 30) /**< \brief I2sc0 signal: I2SC0_DO0 */ +#define PIO_PA0D_I2SC0_MCK (1u << 0) /**< \brief I2sc0 signal: I2SC0_MCK */ +#define PIO_PA15D_I2SC0_WS (1u << 15) /**< \brief I2sc0 signal: I2SC0_WS */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70N19B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h new file mode 100644 index 00000000..8ec046f4 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h @@ -0,0 +1,489 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N20_PIO_ +#define _SAME70N20_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70N20_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h new file mode 100644 index 00000000..a488317d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h @@ -0,0 +1,495 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N20B_PIO_ +#define _SAME70N20B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for I2SC0 peripheral ========== */ +#define PIO_PA1D_I2SC0_CK (1u << 1) /**< \brief I2sc0 signal: I2SC0_CK */ +#define PIO_PA16D_I2SC0_DI0 (1u << 16) /**< \brief I2sc0 signal: I2SC0_DI0 */ +#define PIO_PA30D_I2SC0_DO0 (1u << 30) /**< \brief I2sc0 signal: I2SC0_DO0 */ +#define PIO_PA0D_I2SC0_MCK (1u << 0) /**< \brief I2sc0 signal: I2SC0_MCK */ +#define PIO_PA15D_I2SC0_WS (1u << 15) /**< \brief I2sc0 signal: I2SC0_WS */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70N20B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h new file mode 100644 index 00000000..1743056c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h @@ -0,0 +1,489 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N21_PIO_ +#define _SAME70N21_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70N21_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h new file mode 100644 index 00000000..9c230da7 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h @@ -0,0 +1,495 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N21B_PIO_ +#define _SAME70N21B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for I2SC0 peripheral ========== */ +#define PIO_PA1D_I2SC0_CK (1u << 1) /**< \brief I2sc0 signal: I2SC0_CK */ +#define PIO_PA16D_I2SC0_DI0 (1u << 16) /**< \brief I2sc0 signal: I2SC0_DI0 */ +#define PIO_PA30D_I2SC0_DO0 (1u << 30) /**< \brief I2sc0 signal: I2SC0_DO0 */ +#define PIO_PA0D_I2SC0_MCK (1u << 0) /**< \brief I2sc0 signal: I2SC0_MCK */ +#define PIO_PA15D_I2SC0_WS (1u << 15) /**< \brief I2sc0 signal: I2SC0_WS */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 + +#endif /* _SAME70N21B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h new file mode 100644 index 00000000..6988dbe8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h @@ -0,0 +1,685 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q19_PIO_ +#define _SAME70Q19_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC18A_NBS0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA20C_BA0 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA0C_BA1 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PD17C_CAS (1u << 17) /**< \brief Ebi signal: CAS */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PE2A_D10 (1u << 2) /**< \brief Ebi signal: D10 */ +#define PIO_PE3A_D11 (1u << 3) /**< \brief Ebi signal: D11 */ +#define PIO_PE4A_D12 (1u << 4) /**< \brief Ebi signal: D12 */ +#define PIO_PE5A_D13 (1u << 5) /**< \brief Ebi signal: D13 */ +#define PIO_PA15A_D14 (1u << 15) /**< \brief Ebi signal: D14 */ +#define PIO_PA16A_D15 (1u << 16) /**< \brief Ebi signal: D15 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PE0A_D8 (1u << 0) /**< \brief Ebi signal: D8 */ +#define PIO_PE1A_D9 (1u << 1) /**< \brief Ebi signal: D9 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PC15A_SDCS (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_SDCS (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWR0 (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD15C_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15C_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD16C_RAS (1u << 16) /**< \brief Ebi signal: RAS */ +#define PIO_PC13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD23C_SDCK (1u << 23) /**< \brief Ebi signal: SDCK */ +#define PIO_PD14C_SDCKE (1u << 14) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD29C_SDWE (1u << 29) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PC26C_SPI1_MISO (1u << 26) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PC27C_SPI1_MOSI (1u << 27) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PC25C_SPI1_NPCS0 (1u << 25) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PC28C_SPI1_NPCS1 (1u << 28) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PD0C_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PC29C_SPI1_NPCS2 (1u << 29) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PD1C_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PC30C_SPI1_NPCS3 (1u << 30) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PD2C_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PC24C_SPI1_SPCK (1u << 24) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for UTMI peripheral ========== */ +#define PIO_PC12D_UTMI_CDRBISTEN (1u << 12) /**< \brief Utmi signal: UTMI_CDRBISTEN */ +#define PIO_PC29D_UTMI_CDRCPDIVEN (1u << 29) /**< \brief Utmi signal: UTMI_CDRCPDIVEN */ +#define PIO_PC31D_UTMI_CDRCPSEL0 (1u << 31) /**< \brief Utmi signal: UTMI_CDRCPSEL0 */ +#define PIO_PC30D_UTMI_CDRCPSEL1 (1u << 30) /**< \brief Utmi signal: UTMI_CDRCPSEL1 */ +#define PIO_PC15D_UTMI_CDRCPSELDIV (1u << 15) /**< \brief Utmi signal: UTMI_CDRCPSELDIV */ +#define PIO_PC0D_UTMI_HDIS (1u << 0) /**< \brief Utmi signal: UTMI_HDIS */ +#define PIO_PC27D_UTMI_LS0 (1u << 27) /**< \brief Utmi signal: UTMI_LS0 */ +#define PIO_PC26D_UTMI_LS1 (1u << 26) /**< \brief Utmi signal: UTMI_LS1 */ +#define PIO_PE3D_UTMI_RXACT (1u << 3) /**< \brief Utmi signal: UTMI_RXACT */ +#define PIO_PE2D_UTMI_RXERR (1u << 2) /**< \brief Utmi signal: UTMI_RXERR */ +#define PIO_PE1D_UTMI_RXVAL (1u << 1) /**< \brief Utmi signal: UTMI_RXVAL */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAME70Q19_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h new file mode 100644 index 00000000..76320693 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h @@ -0,0 +1,697 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q19B_PIO_ +#define _SAME70Q19B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC18A_NBS0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA20C_BA0 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA0C_BA1 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PD17C_CAS (1u << 17) /**< \brief Ebi signal: CAS */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PE2A_D10 (1u << 2) /**< \brief Ebi signal: D10 */ +#define PIO_PE3A_D11 (1u << 3) /**< \brief Ebi signal: D11 */ +#define PIO_PE4A_D12 (1u << 4) /**< \brief Ebi signal: D12 */ +#define PIO_PE5A_D13 (1u << 5) /**< \brief Ebi signal: D13 */ +#define PIO_PA15A_D14 (1u << 15) /**< \brief Ebi signal: D14 */ +#define PIO_PA16A_D15 (1u << 16) /**< \brief Ebi signal: D15 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PE0A_D8 (1u << 0) /**< \brief Ebi signal: D8 */ +#define PIO_PE1A_D9 (1u << 1) /**< \brief Ebi signal: D9 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PC15A_SDCS (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_SDCS (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWR0 (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD15C_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15C_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD16C_RAS (1u << 16) /**< \brief Ebi signal: RAS */ +#define PIO_PC13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD23C_SDCK (1u << 23) /**< \brief Ebi signal: SDCK */ +#define PIO_PD14C_SDCKE (1u << 14) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD29C_SDWE (1u << 29) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for I2SC0 peripheral ========== */ +#define PIO_PA1D_I2SC0_CK (1u << 1) /**< \brief I2sc0 signal: I2SC0_CK */ +#define PIO_PA16D_I2SC0_DI0 (1u << 16) /**< \brief I2sc0 signal: I2SC0_DI0 */ +#define PIO_PA30D_I2SC0_DO0 (1u << 30) /**< \brief I2sc0 signal: I2SC0_DO0 */ +#define PIO_PA0D_I2SC0_MCK (1u << 0) /**< \brief I2sc0 signal: I2SC0_MCK */ +#define PIO_PA15D_I2SC0_WS (1u << 15) /**< \brief I2sc0 signal: I2SC0_WS */ +/* ========== Pio definition for I2SC1 peripheral ========== */ +#define PIO_PA20D_I2SC1_CK (1u << 20) /**< \brief I2sc1 signal: I2SC1_CK */ +#define PIO_PE2C_I2SC1_DI0 (1u << 2) /**< \brief I2sc1 signal: I2SC1_DI0 */ +#define PIO_PE1C_I2SC1_DO0 (1u << 1) /**< \brief I2sc1 signal: I2SC1_DO0 */ +#define PIO_PA19D_I2SC1_MCK (1u << 19) /**< \brief I2sc1 signal: I2SC1_MCK */ +#define PIO_PE0C_I2SC1_WS (1u << 0) /**< \brief I2sc1 signal: I2SC1_WS */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PC26C_SPI1_MISO (1u << 26) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PC27C_SPI1_MOSI (1u << 27) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PC25C_SPI1_NPCS0 (1u << 25) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PC28C_SPI1_NPCS1 (1u << 28) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PD0C_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PC29C_SPI1_NPCS2 (1u << 29) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PD1C_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PC30C_SPI1_NPCS3 (1u << 30) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PD2C_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PC24C_SPI1_SPCK (1u << 24) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for UTMI peripheral ========== */ +#define PIO_PC12D_UTMI_CDRBISTEN (1u << 12) /**< \brief Utmi signal: UTMI_CDRBISTEN */ +#define PIO_PC29D_UTMI_CDRCPDIVEN (1u << 29) /**< \brief Utmi signal: UTMI_CDRCPDIVEN */ +#define PIO_PC31D_UTMI_CDRCPSEL0 (1u << 31) /**< \brief Utmi signal: UTMI_CDRCPSEL0 */ +#define PIO_PC30D_UTMI_CDRCPSEL1 (1u << 30) /**< \brief Utmi signal: UTMI_CDRCPSEL1 */ +#define PIO_PC15D_UTMI_CDRCPSELDIV (1u << 15) /**< \brief Utmi signal: UTMI_CDRCPSELDIV */ +#define PIO_PC0D_UTMI_HDIS (1u << 0) /**< \brief Utmi signal: UTMI_HDIS */ +#define PIO_PC27D_UTMI_LS0 (1u << 27) /**< \brief Utmi signal: UTMI_LS0 */ +#define PIO_PC26D_UTMI_LS1 (1u << 26) /**< \brief Utmi signal: UTMI_LS1 */ +#define PIO_PE3D_UTMI_RXACT (1u << 3) /**< \brief Utmi signal: UTMI_RXACT */ +#define PIO_PE2D_UTMI_RXERR (1u << 2) /**< \brief Utmi signal: UTMI_RXERR */ +#define PIO_PE1D_UTMI_RXVAL (1u << 1) /**< \brief Utmi signal: UTMI_RXVAL */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAME70Q19B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h new file mode 100644 index 00000000..d4c304ea --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h @@ -0,0 +1,685 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q20_PIO_ +#define _SAME70Q20_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC18A_NBS0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA20C_BA0 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA0C_BA1 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PD17C_CAS (1u << 17) /**< \brief Ebi signal: CAS */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PE2A_D10 (1u << 2) /**< \brief Ebi signal: D10 */ +#define PIO_PE3A_D11 (1u << 3) /**< \brief Ebi signal: D11 */ +#define PIO_PE4A_D12 (1u << 4) /**< \brief Ebi signal: D12 */ +#define PIO_PE5A_D13 (1u << 5) /**< \brief Ebi signal: D13 */ +#define PIO_PA15A_D14 (1u << 15) /**< \brief Ebi signal: D14 */ +#define PIO_PA16A_D15 (1u << 16) /**< \brief Ebi signal: D15 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PE0A_D8 (1u << 0) /**< \brief Ebi signal: D8 */ +#define PIO_PE1A_D9 (1u << 1) /**< \brief Ebi signal: D9 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PC15A_SDCS (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_SDCS (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWR0 (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD15C_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15C_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD16C_RAS (1u << 16) /**< \brief Ebi signal: RAS */ +#define PIO_PC13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD23C_SDCK (1u << 23) /**< \brief Ebi signal: SDCK */ +#define PIO_PD14C_SDCKE (1u << 14) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD29C_SDWE (1u << 29) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PC26C_SPI1_MISO (1u << 26) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PC27C_SPI1_MOSI (1u << 27) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PC25C_SPI1_NPCS0 (1u << 25) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PC28C_SPI1_NPCS1 (1u << 28) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PD0C_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PC29C_SPI1_NPCS2 (1u << 29) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PD1C_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PC30C_SPI1_NPCS3 (1u << 30) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PD2C_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PC24C_SPI1_SPCK (1u << 24) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for UTMI peripheral ========== */ +#define PIO_PC12D_UTMI_CDRBISTEN (1u << 12) /**< \brief Utmi signal: UTMI_CDRBISTEN */ +#define PIO_PC29D_UTMI_CDRCPDIVEN (1u << 29) /**< \brief Utmi signal: UTMI_CDRCPDIVEN */ +#define PIO_PC31D_UTMI_CDRCPSEL0 (1u << 31) /**< \brief Utmi signal: UTMI_CDRCPSEL0 */ +#define PIO_PC30D_UTMI_CDRCPSEL1 (1u << 30) /**< \brief Utmi signal: UTMI_CDRCPSEL1 */ +#define PIO_PC15D_UTMI_CDRCPSELDIV (1u << 15) /**< \brief Utmi signal: UTMI_CDRCPSELDIV */ +#define PIO_PC0D_UTMI_HDIS (1u << 0) /**< \brief Utmi signal: UTMI_HDIS */ +#define PIO_PC27D_UTMI_LS0 (1u << 27) /**< \brief Utmi signal: UTMI_LS0 */ +#define PIO_PC26D_UTMI_LS1 (1u << 26) /**< \brief Utmi signal: UTMI_LS1 */ +#define PIO_PE3D_UTMI_RXACT (1u << 3) /**< \brief Utmi signal: UTMI_RXACT */ +#define PIO_PE2D_UTMI_RXERR (1u << 2) /**< \brief Utmi signal: UTMI_RXERR */ +#define PIO_PE1D_UTMI_RXVAL (1u << 1) /**< \brief Utmi signal: UTMI_RXVAL */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAME70Q20_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h new file mode 100644 index 00000000..8d86b238 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h @@ -0,0 +1,697 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q20B_PIO_ +#define _SAME70Q20B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC18A_NBS0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA20C_BA0 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA0C_BA1 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PD17C_CAS (1u << 17) /**< \brief Ebi signal: CAS */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PE2A_D10 (1u << 2) /**< \brief Ebi signal: D10 */ +#define PIO_PE3A_D11 (1u << 3) /**< \brief Ebi signal: D11 */ +#define PIO_PE4A_D12 (1u << 4) /**< \brief Ebi signal: D12 */ +#define PIO_PE5A_D13 (1u << 5) /**< \brief Ebi signal: D13 */ +#define PIO_PA15A_D14 (1u << 15) /**< \brief Ebi signal: D14 */ +#define PIO_PA16A_D15 (1u << 16) /**< \brief Ebi signal: D15 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PE0A_D8 (1u << 0) /**< \brief Ebi signal: D8 */ +#define PIO_PE1A_D9 (1u << 1) /**< \brief Ebi signal: D9 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PC15A_SDCS (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_SDCS (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWR0 (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD15C_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15C_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD16C_RAS (1u << 16) /**< \brief Ebi signal: RAS */ +#define PIO_PC13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD23C_SDCK (1u << 23) /**< \brief Ebi signal: SDCK */ +#define PIO_PD14C_SDCKE (1u << 14) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD29C_SDWE (1u << 29) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for I2SC0 peripheral ========== */ +#define PIO_PA1D_I2SC0_CK (1u << 1) /**< \brief I2sc0 signal: I2SC0_CK */ +#define PIO_PA16D_I2SC0_DI0 (1u << 16) /**< \brief I2sc0 signal: I2SC0_DI0 */ +#define PIO_PA30D_I2SC0_DO0 (1u << 30) /**< \brief I2sc0 signal: I2SC0_DO0 */ +#define PIO_PA0D_I2SC0_MCK (1u << 0) /**< \brief I2sc0 signal: I2SC0_MCK */ +#define PIO_PA15D_I2SC0_WS (1u << 15) /**< \brief I2sc0 signal: I2SC0_WS */ +/* ========== Pio definition for I2SC1 peripheral ========== */ +#define PIO_PA20D_I2SC1_CK (1u << 20) /**< \brief I2sc1 signal: I2SC1_CK */ +#define PIO_PE2C_I2SC1_DI0 (1u << 2) /**< \brief I2sc1 signal: I2SC1_DI0 */ +#define PIO_PE1C_I2SC1_DO0 (1u << 1) /**< \brief I2sc1 signal: I2SC1_DO0 */ +#define PIO_PA19D_I2SC1_MCK (1u << 19) /**< \brief I2sc1 signal: I2SC1_MCK */ +#define PIO_PE0C_I2SC1_WS (1u << 0) /**< \brief I2sc1 signal: I2SC1_WS */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PC26C_SPI1_MISO (1u << 26) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PC27C_SPI1_MOSI (1u << 27) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PC25C_SPI1_NPCS0 (1u << 25) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PC28C_SPI1_NPCS1 (1u << 28) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PD0C_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PC29C_SPI1_NPCS2 (1u << 29) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PD1C_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PC30C_SPI1_NPCS3 (1u << 30) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PD2C_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PC24C_SPI1_SPCK (1u << 24) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for UTMI peripheral ========== */ +#define PIO_PC12D_UTMI_CDRBISTEN (1u << 12) /**< \brief Utmi signal: UTMI_CDRBISTEN */ +#define PIO_PC29D_UTMI_CDRCPDIVEN (1u << 29) /**< \brief Utmi signal: UTMI_CDRCPDIVEN */ +#define PIO_PC31D_UTMI_CDRCPSEL0 (1u << 31) /**< \brief Utmi signal: UTMI_CDRCPSEL0 */ +#define PIO_PC30D_UTMI_CDRCPSEL1 (1u << 30) /**< \brief Utmi signal: UTMI_CDRCPSEL1 */ +#define PIO_PC15D_UTMI_CDRCPSELDIV (1u << 15) /**< \brief Utmi signal: UTMI_CDRCPSELDIV */ +#define PIO_PC0D_UTMI_HDIS (1u << 0) /**< \brief Utmi signal: UTMI_HDIS */ +#define PIO_PC27D_UTMI_LS0 (1u << 27) /**< \brief Utmi signal: UTMI_LS0 */ +#define PIO_PC26D_UTMI_LS1 (1u << 26) /**< \brief Utmi signal: UTMI_LS1 */ +#define PIO_PE3D_UTMI_RXACT (1u << 3) /**< \brief Utmi signal: UTMI_RXACT */ +#define PIO_PE2D_UTMI_RXERR (1u << 2) /**< \brief Utmi signal: UTMI_RXERR */ +#define PIO_PE1D_UTMI_RXVAL (1u << 1) /**< \brief Utmi signal: UTMI_RXVAL */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAME70Q20B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h new file mode 100644 index 00000000..9dec3f29 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h @@ -0,0 +1,685 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q21_PIO_ +#define _SAME70Q21_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC18A_NBS0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA20C_BA0 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA0C_BA1 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PD17C_CAS (1u << 17) /**< \brief Ebi signal: CAS */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PE2A_D10 (1u << 2) /**< \brief Ebi signal: D10 */ +#define PIO_PE3A_D11 (1u << 3) /**< \brief Ebi signal: D11 */ +#define PIO_PE4A_D12 (1u << 4) /**< \brief Ebi signal: D12 */ +#define PIO_PE5A_D13 (1u << 5) /**< \brief Ebi signal: D13 */ +#define PIO_PA15A_D14 (1u << 15) /**< \brief Ebi signal: D14 */ +#define PIO_PA16A_D15 (1u << 16) /**< \brief Ebi signal: D15 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PE0A_D8 (1u << 0) /**< \brief Ebi signal: D8 */ +#define PIO_PE1A_D9 (1u << 1) /**< \brief Ebi signal: D9 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PC15A_SDCS (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_SDCS (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWR0 (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD15C_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15C_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD16C_RAS (1u << 16) /**< \brief Ebi signal: RAS */ +#define PIO_PC13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD23C_SDCK (1u << 23) /**< \brief Ebi signal: SDCK */ +#define PIO_PD14C_SDCKE (1u << 14) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD29C_SDWE (1u << 29) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PC26C_SPI1_MISO (1u << 26) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PC27C_SPI1_MOSI (1u << 27) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PC25C_SPI1_NPCS0 (1u << 25) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PC28C_SPI1_NPCS1 (1u << 28) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PD0C_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PC29C_SPI1_NPCS2 (1u << 29) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PD1C_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PC30C_SPI1_NPCS3 (1u << 30) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PD2C_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PC24C_SPI1_SPCK (1u << 24) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for UTMI peripheral ========== */ +#define PIO_PC12D_UTMI_CDRBISTEN (1u << 12) /**< \brief Utmi signal: UTMI_CDRBISTEN */ +#define PIO_PC29D_UTMI_CDRCPDIVEN (1u << 29) /**< \brief Utmi signal: UTMI_CDRCPDIVEN */ +#define PIO_PC31D_UTMI_CDRCPSEL0 (1u << 31) /**< \brief Utmi signal: UTMI_CDRCPSEL0 */ +#define PIO_PC30D_UTMI_CDRCPSEL1 (1u << 30) /**< \brief Utmi signal: UTMI_CDRCPSEL1 */ +#define PIO_PC15D_UTMI_CDRCPSELDIV (1u << 15) /**< \brief Utmi signal: UTMI_CDRCPSELDIV */ +#define PIO_PC0D_UTMI_HDIS (1u << 0) /**< \brief Utmi signal: UTMI_HDIS */ +#define PIO_PC27D_UTMI_LS0 (1u << 27) /**< \brief Utmi signal: UTMI_LS0 */ +#define PIO_PC26D_UTMI_LS1 (1u << 26) /**< \brief Utmi signal: UTMI_LS1 */ +#define PIO_PE3D_UTMI_RXACT (1u << 3) /**< \brief Utmi signal: UTMI_RXACT */ +#define PIO_PE2D_UTMI_RXERR (1u << 2) /**< \brief Utmi signal: UTMI_RXERR */ +#define PIO_PE1D_UTMI_RXVAL (1u << 1) /**< \brief Utmi signal: UTMI_RXVAL */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAME70Q21_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h new file mode 100644 index 00000000..9512051f --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h @@ -0,0 +1,697 @@ +/** + * \file + * + * Copyright (c) 2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q21B_PIO_ +#define _SAME70Q21B_PIO_ + +#define PIO_PA0 (1u << 0) /**< \brief Pin Controlled by PA0 */ +#define PIO_PA1 (1u << 1) /**< \brief Pin Controlled by PA1 */ +#define PIO_PA2 (1u << 2) /**< \brief Pin Controlled by PA2 */ +#define PIO_PA3 (1u << 3) /**< \brief Pin Controlled by PA3 */ +#define PIO_PA4 (1u << 4) /**< \brief Pin Controlled by PA4 */ +#define PIO_PA5 (1u << 5) /**< \brief Pin Controlled by PA5 */ +#define PIO_PA6 (1u << 6) /**< \brief Pin Controlled by PA6 */ +#define PIO_PA7 (1u << 7) /**< \brief Pin Controlled by PA7 */ +#define PIO_PA8 (1u << 8) /**< \brief Pin Controlled by PA8 */ +#define PIO_PA9 (1u << 9) /**< \brief Pin Controlled by PA9 */ +#define PIO_PA10 (1u << 10) /**< \brief Pin Controlled by PA10 */ +#define PIO_PA11 (1u << 11) /**< \brief Pin Controlled by PA11 */ +#define PIO_PA12 (1u << 12) /**< \brief Pin Controlled by PA12 */ +#define PIO_PA13 (1u << 13) /**< \brief Pin Controlled by PA13 */ +#define PIO_PA14 (1u << 14) /**< \brief Pin Controlled by PA14 */ +#define PIO_PA15 (1u << 15) /**< \brief Pin Controlled by PA15 */ +#define PIO_PA16 (1u << 16) /**< \brief Pin Controlled by PA16 */ +#define PIO_PA17 (1u << 17) /**< \brief Pin Controlled by PA17 */ +#define PIO_PA18 (1u << 18) /**< \brief Pin Controlled by PA18 */ +#define PIO_PA19 (1u << 19) /**< \brief Pin Controlled by PA19 */ +#define PIO_PA20 (1u << 20) /**< \brief Pin Controlled by PA20 */ +#define PIO_PA21 (1u << 21) /**< \brief Pin Controlled by PA21 */ +#define PIO_PA22 (1u << 22) /**< \brief Pin Controlled by PA22 */ +#define PIO_PA23 (1u << 23) /**< \brief Pin Controlled by PA23 */ +#define PIO_PA24 (1u << 24) /**< \brief Pin Controlled by PA24 */ +#define PIO_PA25 (1u << 25) /**< \brief Pin Controlled by PA25 */ +#define PIO_PA26 (1u << 26) /**< \brief Pin Controlled by PA26 */ +#define PIO_PA27 (1u << 27) /**< \brief Pin Controlled by PA27 */ +#define PIO_PA28 (1u << 28) /**< \brief Pin Controlled by PA28 */ +#define PIO_PA29 (1u << 29) /**< \brief Pin Controlled by PA29 */ +#define PIO_PA30 (1u << 30) /**< \brief Pin Controlled by PA30 */ +#define PIO_PA31 (1u << 31) /**< \brief Pin Controlled by PA31 */ +#define PIO_PB0 (1u << 0) /**< \brief Pin Controlled by PB0 */ +#define PIO_PB1 (1u << 1) /**< \brief Pin Controlled by PB1 */ +#define PIO_PB2 (1u << 2) /**< \brief Pin Controlled by PB2 */ +#define PIO_PB3 (1u << 3) /**< \brief Pin Controlled by PB3 */ +#define PIO_PB4 (1u << 4) /**< \brief Pin Controlled by PB4 */ +#define PIO_PB5 (1u << 5) /**< \brief Pin Controlled by PB5 */ +#define PIO_PB6 (1u << 6) /**< \brief Pin Controlled by PB6 */ +#define PIO_PB7 (1u << 7) /**< \brief Pin Controlled by PB7 */ +#define PIO_PB8 (1u << 8) /**< \brief Pin Controlled by PB8 */ +#define PIO_PB9 (1u << 9) /**< \brief Pin Controlled by PB9 */ +#define PIO_PB12 (1u << 12) /**< \brief Pin Controlled by PB12 */ +#define PIO_PB13 (1u << 13) /**< \brief Pin Controlled by PB13 */ +#define PIO_PC0 (1u << 0) /**< \brief Pin Controlled by PC0 */ +#define PIO_PC1 (1u << 1) /**< \brief Pin Controlled by PC1 */ +#define PIO_PC2 (1u << 2) /**< \brief Pin Controlled by PC2 */ +#define PIO_PC3 (1u << 3) /**< \brief Pin Controlled by PC3 */ +#define PIO_PC4 (1u << 4) /**< \brief Pin Controlled by PC4 */ +#define PIO_PC5 (1u << 5) /**< \brief Pin Controlled by PC5 */ +#define PIO_PC6 (1u << 6) /**< \brief Pin Controlled by PC6 */ +#define PIO_PC7 (1u << 7) /**< \brief Pin Controlled by PC7 */ +#define PIO_PC8 (1u << 8) /**< \brief Pin Controlled by PC8 */ +#define PIO_PC9 (1u << 9) /**< \brief Pin Controlled by PC9 */ +#define PIO_PC10 (1u << 10) /**< \brief Pin Controlled by PC10 */ +#define PIO_PC11 (1u << 11) /**< \brief Pin Controlled by PC11 */ +#define PIO_PC12 (1u << 12) /**< \brief Pin Controlled by PC12 */ +#define PIO_PC13 (1u << 13) /**< \brief Pin Controlled by PC13 */ +#define PIO_PC14 (1u << 14) /**< \brief Pin Controlled by PC14 */ +#define PIO_PC15 (1u << 15) /**< \brief Pin Controlled by PC15 */ +#define PIO_PC16 (1u << 16) /**< \brief Pin Controlled by PC16 */ +#define PIO_PC17 (1u << 17) /**< \brief Pin Controlled by PC17 */ +#define PIO_PC18 (1u << 18) /**< \brief Pin Controlled by PC18 */ +#define PIO_PC19 (1u << 19) /**< \brief Pin Controlled by PC19 */ +#define PIO_PC20 (1u << 20) /**< \brief Pin Controlled by PC20 */ +#define PIO_PC21 (1u << 21) /**< \brief Pin Controlled by PC21 */ +#define PIO_PC22 (1u << 22) /**< \brief Pin Controlled by PC22 */ +#define PIO_PC23 (1u << 23) /**< \brief Pin Controlled by PC23 */ +#define PIO_PC24 (1u << 24) /**< \brief Pin Controlled by PC24 */ +#define PIO_PC25 (1u << 25) /**< \brief Pin Controlled by PC25 */ +#define PIO_PC26 (1u << 26) /**< \brief Pin Controlled by PC26 */ +#define PIO_PC27 (1u << 27) /**< \brief Pin Controlled by PC27 */ +#define PIO_PC28 (1u << 28) /**< \brief Pin Controlled by PC28 */ +#define PIO_PC29 (1u << 29) /**< \brief Pin Controlled by PC29 */ +#define PIO_PC30 (1u << 30) /**< \brief Pin Controlled by PC30 */ +#define PIO_PC31 (1u << 31) /**< \brief Pin Controlled by PC31 */ +#define PIO_PD0 (1u << 0) /**< \brief Pin Controlled by PD0 */ +#define PIO_PD1 (1u << 1) /**< \brief Pin Controlled by PD1 */ +#define PIO_PD2 (1u << 2) /**< \brief Pin Controlled by PD2 */ +#define PIO_PD3 (1u << 3) /**< \brief Pin Controlled by PD3 */ +#define PIO_PD4 (1u << 4) /**< \brief Pin Controlled by PD4 */ +#define PIO_PD5 (1u << 5) /**< \brief Pin Controlled by PD5 */ +#define PIO_PD6 (1u << 6) /**< \brief Pin Controlled by PD6 */ +#define PIO_PD7 (1u << 7) /**< \brief Pin Controlled by PD7 */ +#define PIO_PD8 (1u << 8) /**< \brief Pin Controlled by PD8 */ +#define PIO_PD9 (1u << 9) /**< \brief Pin Controlled by PD9 */ +#define PIO_PD10 (1u << 10) /**< \brief Pin Controlled by PD10 */ +#define PIO_PD11 (1u << 11) /**< \brief Pin Controlled by PD11 */ +#define PIO_PD12 (1u << 12) /**< \brief Pin Controlled by PD12 */ +#define PIO_PD13 (1u << 13) /**< \brief Pin Controlled by PD13 */ +#define PIO_PD14 (1u << 14) /**< \brief Pin Controlled by PD14 */ +#define PIO_PD15 (1u << 15) /**< \brief Pin Controlled by PD15 */ +#define PIO_PD16 (1u << 16) /**< \brief Pin Controlled by PD16 */ +#define PIO_PD17 (1u << 17) /**< \brief Pin Controlled by PD17 */ +#define PIO_PD18 (1u << 18) /**< \brief Pin Controlled by PD18 */ +#define PIO_PD19 (1u << 19) /**< \brief Pin Controlled by PD19 */ +#define PIO_PD20 (1u << 20) /**< \brief Pin Controlled by PD20 */ +#define PIO_PD21 (1u << 21) /**< \brief Pin Controlled by PD21 */ +#define PIO_PD22 (1u << 22) /**< \brief Pin Controlled by PD22 */ +#define PIO_PD23 (1u << 23) /**< \brief Pin Controlled by PD23 */ +#define PIO_PD24 (1u << 24) /**< \brief Pin Controlled by PD24 */ +#define PIO_PD25 (1u << 25) /**< \brief Pin Controlled by PD25 */ +#define PIO_PD26 (1u << 26) /**< \brief Pin Controlled by PD26 */ +#define PIO_PD27 (1u << 27) /**< \brief Pin Controlled by PD27 */ +#define PIO_PD28 (1u << 28) /**< \brief Pin Controlled by PD28 */ +#define PIO_PD29 (1u << 29) /**< \brief Pin Controlled by PD29 */ +#define PIO_PD30 (1u << 30) /**< \brief Pin Controlled by PD30 */ +#define PIO_PD31 (1u << 31) /**< \brief Pin Controlled by PD31 */ +#define PIO_PE0 (1u << 0) /**< \brief Pin Controlled by PE0 */ +#define PIO_PE1 (1u << 1) /**< \brief Pin Controlled by PE1 */ +#define PIO_PE2 (1u << 2) /**< \brief Pin Controlled by PE2 */ +#define PIO_PE3 (1u << 3) /**< \brief Pin Controlled by PE3 */ +#define PIO_PE4 (1u << 4) /**< \brief Pin Controlled by PE4 */ +#define PIO_PE5 (1u << 5) /**< \brief Pin Controlled by PE5 */ +/* ========== Pio definition for AFEC0 peripheral ========== */ +#define PIO_PD30X1_AFE0_AD0 (1u << 30) /**< \brief Afec0 signal: AFE0_AD0 */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Afec0 signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PB0X1_AFE0_AD10 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB0X1_RTCOUT0 (1u << 0) /**< \brief Afec0 signal: AFE0_AD10/RTCOUT0 */ +#define PIO_PB3X1_AFE0_AD2 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PB3X1_WKUP12 (1u << 3) /**< \brief Afec0 signal: AFE0_AD2/WKUP12 */ +#define PIO_PE5X1_AFE0_AD3 (1u << 5) /**< \brief Afec0 signal: AFE0_AD3 */ +#define PIO_PE4X1_AFE0_AD4 (1u << 4) /**< \brief Afec0 signal: AFE0_AD4 */ +#define PIO_PB2X1_AFE0_AD5 (1u << 2) /**< \brief Afec0 signal: AFE0_AD5 */ +#define PIO_PA17X1_AFE0_AD6 (1u << 17) /**< \brief Afec0 signal: AFE0_AD6 */ +#define PIO_PA18X1_AFE0_AD7 (1u << 18) /**< \brief Afec0 signal: AFE0_AD7 */ +#define PIO_PA19X1_AFE0_AD8 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA19X1_WKUP9 (1u << 19) /**< \brief Afec0 signal: AFE0_AD8/WKUP9 */ +#define PIO_PA20X1_AFE0_AD9 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA20X1_WKUP10 (1u << 20) /**< \brief Afec0 signal: AFE0_AD9/WKUP10 */ +#define PIO_PA8B_AFE0_ADTRG (1u << 8) /**< \brief Afec0 signal: AFE0_ADTRG */ +/* ========== Pio definition for AFEC1 peripheral ========== */ +#define PIO_PB1X1_AFE1_AD0 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PB1X1_RTCOUT1 (1u << 1) /**< \brief Afec1 signal: AFE1_AD0/RTCOUT1 */ +#define PIO_PC13X1_AFE1_AD1 (1u << 13) /**< \brief Afec1 signal: AFE1_AD1 */ +#define PIO_PE3X1_AFE1_AD10 (1u << 3) /**< \brief Afec1 signal: AFE1_AD10 */ +#define PIO_PE0X1_AFE1_AD11 (1u << 0) /**< \brief Afec1 signal: AFE1_AD11 */ +#define PIO_PC15X1_AFE1_AD2 (1u << 15) /**< \brief Afec1 signal: AFE1_AD2 */ +#define PIO_PC12X1_AFE1_AD3 (1u << 12) /**< \brief Afec1 signal: AFE1_AD3 */ +#define PIO_PC29X1_AFE1_AD4 (1u << 29) /**< \brief Afec1 signal: AFE1_AD4 */ +#define PIO_PC30X1_AFE1_AD5 (1u << 30) /**< \brief Afec1 signal: AFE1_AD5 */ +#define PIO_PC31X1_AFE1_AD6 (1u << 31) /**< \brief Afec1 signal: AFE1_AD6 */ +#define PIO_PC26X1_AFE1_AD7 (1u << 26) /**< \brief Afec1 signal: AFE1_AD7 */ +#define PIO_PC27X1_AFE1_AD8 (1u << 27) /**< \brief Afec1 signal: AFE1_AD8 */ +#define PIO_PC0X1_AFE1_AD9 (1u << 0) /**< \brief Afec1 signal: AFE1_AD9 */ +#define PIO_PD9C_AFE1_ADTRG (1u << 9) /**< \brief Afec1 signal: AFE1_ADTRG */ +/* ========== Pio definition for ARM peripheral ========== */ +#define PIO_PB7X1_SWCLK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB7X1_TCK (1u << 7) /**< \brief Arm signal: SWCLK/TCK */ +#define PIO_PB6X1_SWDIO (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB6X1_TMS (1u << 6) /**< \brief Arm signal: SWDIO/TMS */ +#define PIO_PB4X1_TDI (1u << 4) /**< \brief Arm signal: TDI */ +#define PIO_PB5X1_TDO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_TRACESWO (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +#define PIO_PB5X1_WKUP13 (1u << 5) /**< \brief Arm signal: TDO/TRACESWO/WKUP13 */ +/* ========== Pio definition for DACC peripheral ========== */ +#define PIO_PB13X1_DAC0 (1u << 13) /**< \brief Dacc signal: DAC0 */ +#define PIO_PD0X1_DAC1 (1u << 0) /**< \brief Dacc signal: DAC1 */ +#define PIO_PA2C_DATRG (1u << 2) /**< \brief Dacc signal: DATRG */ +/* ========== Pio definition for EBI peripheral ========== */ +#define PIO_PC18A_A0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC18A_NBS0 (1u << 18) /**< \brief Ebi signal: A0/NBS0 */ +#define PIO_PC19A_A1 (1u << 19) /**< \brief Ebi signal: A1 */ +#define PIO_PC28A_A10 (1u << 28) /**< \brief Ebi signal: A10 */ +#define PIO_PC29A_A11 (1u << 29) /**< \brief Ebi signal: A11 */ +#define PIO_PC30A_A12 (1u << 30) /**< \brief Ebi signal: A12 */ +#define PIO_PC31A_A13 (1u << 31) /**< \brief Ebi signal: A13 */ +#define PIO_PA18C_A14 (1u << 18) /**< \brief Ebi signal: A14 */ +#define PIO_PA19C_A15 (1u << 19) /**< \brief Ebi signal: A15 */ +#define PIO_PA20C_A16 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA20C_BA0 (1u << 20) /**< \brief Ebi signal: A16/BA0 */ +#define PIO_PA0C_A17 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA0C_BA1 (1u << 0) /**< \brief Ebi signal: A17/BA1 */ +#define PIO_PA1C_A18 (1u << 1) /**< \brief Ebi signal: A18 */ +#define PIO_PA23C_A19 (1u << 23) /**< \brief Ebi signal: A19 */ +#define PIO_PC20A_A2 (1u << 20) /**< \brief Ebi signal: A2 */ +#define PIO_PA24C_A20 (1u << 24) /**< \brief Ebi signal: A20 */ +#define PIO_PC16A_A21 (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC16A_NANDALE (1u << 16) /**< \brief Ebi signal: A21/NANDALE */ +#define PIO_PC17A_A22 (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PC17A_NANDCLE (1u << 17) /**< \brief Ebi signal: A22/NANDCLE */ +#define PIO_PA25C_A23 (1u << 25) /**< \brief Ebi signal: A23 */ +#define PIO_PC21A_A3 (1u << 21) /**< \brief Ebi signal: A3 */ +#define PIO_PC22A_A4 (1u << 22) /**< \brief Ebi signal: A4 */ +#define PIO_PC23A_A5 (1u << 23) /**< \brief Ebi signal: A5 */ +#define PIO_PC24A_A6 (1u << 24) /**< \brief Ebi signal: A6 */ +#define PIO_PC25A_A7 (1u << 25) /**< \brief Ebi signal: A7 */ +#define PIO_PC26A_A8 (1u << 26) /**< \brief Ebi signal: A8 */ +#define PIO_PC27A_A9 (1u << 27) /**< \brief Ebi signal: A9 */ +#define PIO_PD17C_CAS (1u << 17) /**< \brief Ebi signal: CAS */ +#define PIO_PC0A_D0 (1u << 0) /**< \brief Ebi signal: D0 */ +#define PIO_PC1A_D1 (1u << 1) /**< \brief Ebi signal: D1 */ +#define PIO_PE2A_D10 (1u << 2) /**< \brief Ebi signal: D10 */ +#define PIO_PE3A_D11 (1u << 3) /**< \brief Ebi signal: D11 */ +#define PIO_PE4A_D12 (1u << 4) /**< \brief Ebi signal: D12 */ +#define PIO_PE5A_D13 (1u << 5) /**< \brief Ebi signal: D13 */ +#define PIO_PA15A_D14 (1u << 15) /**< \brief Ebi signal: D14 */ +#define PIO_PA16A_D15 (1u << 16) /**< \brief Ebi signal: D15 */ +#define PIO_PC2A_D2 (1u << 2) /**< \brief Ebi signal: D2 */ +#define PIO_PC3A_D3 (1u << 3) /**< \brief Ebi signal: D3 */ +#define PIO_PC4A_D4 (1u << 4) /**< \brief Ebi signal: D4 */ +#define PIO_PC5A_D5 (1u << 5) /**< \brief Ebi signal: D5 */ +#define PIO_PC6A_D6 (1u << 6) /**< \brief Ebi signal: D6 */ +#define PIO_PC7A_D7 (1u << 7) /**< \brief Ebi signal: D7 */ +#define PIO_PE0A_D8 (1u << 0) /**< \brief Ebi signal: D8 */ +#define PIO_PE1A_D9 (1u << 1) /**< \brief Ebi signal: D9 */ +#define PIO_PC9A_NANDOE (1u << 9) /**< \brief Ebi signal: NANDOE */ +#define PIO_PC10A_NANDWE (1u << 10) /**< \brief Ebi signal: NANDWE */ +#define PIO_PC14A_NCS0 (1u << 14) /**< \brief Ebi signal: NCS0 */ +#define PIO_PC15A_NCS1 (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PC15A_SDCS (1u << 15) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_NCS1 (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PD18A_SDCS (1u << 18) /**< \brief Ebi signal: NCS1/SDCS */ +#define PIO_PA22C_NCS2 (1u << 22) /**< \brief Ebi signal: NCS2 */ +#define PIO_PC12A_NCS3 (1u << 12) /**< \brief Ebi signal: NCS3 */ +#define PIO_PD19A_NCS3 (1u << 19) /**< \brief Ebi signal: NCS3 */ +#define PIO_PC11A_NRD (1u << 11) /**< \brief Ebi signal: NRD */ +#define PIO_PC13A_NWAIT (1u << 13) /**< \brief Ebi signal: NWAIT */ +#define PIO_PC8A_NWR0 (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PC8A_NWE (1u << 8) /**< \brief Ebi signal: NWR0/NWE */ +#define PIO_PD15C_NWR1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD15C_NBS1 (1u << 15) /**< \brief Ebi signal: NWR1/NBS1 */ +#define PIO_PD16C_RAS (1u << 16) /**< \brief Ebi signal: RAS */ +#define PIO_PC13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD13C_SDA10 (1u << 13) /**< \brief Ebi signal: SDA10 */ +#define PIO_PD23C_SDCK (1u << 23) /**< \brief Ebi signal: SDCK */ +#define PIO_PD14C_SDCKE (1u << 14) /**< \brief Ebi signal: SDCKE */ +#define PIO_PD29C_SDWE (1u << 29) /**< \brief Ebi signal: SDWE */ +/* ========== Pio definition for GMAC peripheral ========== */ +#define PIO_PD13A_GCOL (1u << 13) /**< \brief Gmac signal: GCOL */ +#define PIO_PD10A_GCRS (1u << 10) /**< \brief Gmac signal: GCRS */ +#define PIO_PD8A_GMDC (1u << 8) /**< \brief Gmac signal: GMDC */ +#define PIO_PD9A_GMDIO (1u << 9) /**< \brief Gmac signal: GMDIO */ +#define PIO_PD5A_GRX0 (1u << 5) /**< \brief Gmac signal: GRX0 */ +#define PIO_PD6A_GRX1 (1u << 6) /**< \brief Gmac signal: GRX1 */ +#define PIO_PD11A_GRX2 (1u << 11) /**< \brief Gmac signal: GRX2 */ +#define PIO_PD12A_GRX3 (1u << 12) /**< \brief Gmac signal: GRX3 */ +#define PIO_PD14A_GRXCK (1u << 14) /**< \brief Gmac signal: GRXCK */ +#define PIO_PD4A_GRXDV (1u << 4) /**< \brief Gmac signal: GRXDV */ +#define PIO_PD7A_GRXER (1u << 7) /**< \brief Gmac signal: GRXER */ +#define PIO_PB1B_GTSUCOMP (1u << 1) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PB12B_GTSUCOMP (1u << 12) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD11C_GTSUCOMP (1u << 11) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD20C_GTSUCOMP (1u << 20) /**< \brief Gmac signal: GTSUCOMP */ +#define PIO_PD2A_GTX0 (1u << 2) /**< \brief Gmac signal: GTX0 */ +#define PIO_PD3A_GTX1 (1u << 3) /**< \brief Gmac signal: GTX1 */ +#define PIO_PD15A_GTX2 (1u << 15) /**< \brief Gmac signal: GTX2 */ +#define PIO_PD16A_GTX3 (1u << 16) /**< \brief Gmac signal: GTX3 */ +#define PIO_PD0A_GTXCK (1u << 0) /**< \brief Gmac signal: GTXCK */ +#define PIO_PD1A_GTXEN (1u << 1) /**< \brief Gmac signal: GTXEN */ +#define PIO_PD17A_GTXER (1u << 17) /**< \brief Gmac signal: GTXER */ +/* ========== Pio definition for HSMCI peripheral ========== */ +#define PIO_PA28C_MCCDA (1u << 28) /**< \brief Hsmci signal: MCCDA */ +#define PIO_PA25D_MCCK (1u << 25) /**< \brief Hsmci signal: MCCK */ +#define PIO_PA30C_MCDA0 (1u << 30) /**< \brief Hsmci signal: MCDA0 */ +#define PIO_PA31C_MCDA1 (1u << 31) /**< \brief Hsmci signal: MCDA1 */ +#define PIO_PA26C_MCDA2 (1u << 26) /**< \brief Hsmci signal: MCDA2 */ +#define PIO_PA27C_MCDA3 (1u << 27) /**< \brief Hsmci signal: MCDA3 */ +/* ========== Pio definition for I2SC0 peripheral ========== */ +#define PIO_PA1D_I2SC0_CK (1u << 1) /**< \brief I2sc0 signal: I2SC0_CK */ +#define PIO_PA16D_I2SC0_DI0 (1u << 16) /**< \brief I2sc0 signal: I2SC0_DI0 */ +#define PIO_PA30D_I2SC0_DO0 (1u << 30) /**< \brief I2sc0 signal: I2SC0_DO0 */ +#define PIO_PA0D_I2SC0_MCK (1u << 0) /**< \brief I2sc0 signal: I2SC0_MCK */ +#define PIO_PA15D_I2SC0_WS (1u << 15) /**< \brief I2sc0 signal: I2SC0_WS */ +/* ========== Pio definition for I2SC1 peripheral ========== */ +#define PIO_PA20D_I2SC1_CK (1u << 20) /**< \brief I2sc1 signal: I2SC1_CK */ +#define PIO_PE2C_I2SC1_DI0 (1u << 2) /**< \brief I2sc1 signal: I2SC1_DI0 */ +#define PIO_PE1C_I2SC1_DO0 (1u << 1) /**< \brief I2sc1 signal: I2SC1_DO0 */ +#define PIO_PA19D_I2SC1_MCK (1u << 19) /**< \brief I2sc1 signal: I2SC1_MCK */ +#define PIO_PE0C_I2SC1_WS (1u << 0) /**< \brief I2sc1 signal: I2SC1_WS */ +/* ========== Pio definition for ISI peripheral ========== */ +#define PIO_PD22D_ISI_D0 (1u << 22) /**< \brief Isi signal: ISI_D0 */ +#define PIO_PD21D_ISI_D1 (1u << 21) /**< \brief Isi signal: ISI_D1 */ +#define PIO_PD30D_ISI_D10 (1u << 30) /**< \brief Isi signal: ISI_D10 */ +#define PIO_PD31D_ISI_D11 (1u << 31) /**< \brief Isi signal: ISI_D11 */ +#define PIO_PB3D_ISI_D2 (1u << 3) /**< \brief Isi signal: ISI_D2 */ +#define PIO_PA9B_ISI_D3 (1u << 9) /**< \brief Isi signal: ISI_D3 */ +#define PIO_PA5B_ISI_D4 (1u << 5) /**< \brief Isi signal: ISI_D4 */ +#define PIO_PD11D_ISI_D5 (1u << 11) /**< \brief Isi signal: ISI_D5 */ +#define PIO_PD12D_ISI_D6 (1u << 12) /**< \brief Isi signal: ISI_D6 */ +#define PIO_PA27D_ISI_D7 (1u << 27) /**< \brief Isi signal: ISI_D7 */ +#define PIO_PD27D_ISI_D8 (1u << 27) /**< \brief Isi signal: ISI_D8 */ +#define PIO_PD28D_ISI_D9 (1u << 28) /**< \brief Isi signal: ISI_D9 */ +#define PIO_PD24D_ISI_HSYNC (1u << 24) /**< \brief Isi signal: ISI_HSYNC */ +#define PIO_PA24D_ISI_PCK (1u << 24) /**< \brief Isi signal: ISI_PCK */ +#define PIO_PD25D_ISI_VSYNC (1u << 25) /**< \brief Isi signal: ISI_VSYNC */ +/* ========== Pio definition for MCAN0 peripheral ========== */ +#define PIO_PB3A_CANRX0 (1u << 3) /**< \brief Mcan0 signal: CANRX0 */ +#define PIO_PB2A_CANTX0 (1u << 2) /**< \brief Mcan0 signal: CANTX0 */ +/* ========== Pio definition for MCAN1 peripheral ========== */ +#define PIO_PC12C_CANRX1 (1u << 12) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PD28B_CANRX1 (1u << 28) /**< \brief Mcan1 signal: CANRX1 */ +#define PIO_PC14C_CANTX1 (1u << 14) /**< \brief Mcan1 signal: CANTX1 */ +#define PIO_PD12B_CANTX1 (1u << 12) /**< \brief Mcan1 signal: CANTX1 */ +/* ========== Pio definition for PIOA peripheral ========== */ +#define PIO_PA21X1_AFE0_AD1 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA21X1_PIODCEN2 (1u << 21) /**< \brief Pioa signal: AFE0_AD1/PIODCEN2 */ +#define PIO_PA3X1_PIODC0 (1u << 3) /**< \brief Pioa signal: PIODC0 */ +#define PIO_PA10X1_PIODC4 (1u << 10) /**< \brief Pioa signal: PIODC4 */ +#define PIO_PA12X1_PIODC6 (1u << 12) /**< \brief Pioa signal: PIODC6 */ +#define PIO_PA13X1_PIODC7 (1u << 13) /**< \brief Pioa signal: PIODC7 */ +#define PIO_PA22X1_PIODCCLK (1u << 22) /**< \brief Pioa signal: PIODCCLK */ +#define PIO_PA4X1_WKUP3 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA4X1_PIODC1 (1u << 4) /**< \brief Pioa signal: WKUP3/PIODC1 */ +#define PIO_PA5X1_WKUP4 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA5X1_PIODC2 (1u << 5) /**< \brief Pioa signal: WKUP4/PIODC2 */ +#define PIO_PA9X1_WKUP6 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA9X1_PIODC3 (1u << 9) /**< \brief Pioa signal: WKUP6/PIODC3 */ +#define PIO_PA11X1_WKUP7 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA11X1_PIODC5 (1u << 11) /**< \brief Pioa signal: WKUP7/PIODC5 */ +#define PIO_PA14X1_WKUP8 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +#define PIO_PA14X1_PIODCEN1 (1u << 14) /**< \brief Pioa signal: WKUP8/PIODCEN1 */ +/* ========== Pio definition for PMC peripheral ========== */ +#define PIO_PA6B_PCK0 (1u << 6) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB12D_PCK0 (1u << 12) /**< \brief Pmc signal: PCK0 */ +#define PIO_PB13B_PCK0 (1u << 13) /**< \brief Pmc signal: PCK0 */ +#define PIO_PA17B_PCK1 (1u << 17) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA21B_PCK1 (1u << 21) /**< \brief Pmc signal: PCK1 */ +#define PIO_PA3C_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA18B_PCK2 (1u << 18) /**< \brief Pmc signal: PCK2 */ +#define PIO_PA31B_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +#define PIO_PB3B_PCK2 (1u << 3) /**< \brief Pmc signal: PCK2 */ +#define PIO_PD31C_PCK2 (1u << 31) /**< \brief Pmc signal: PCK2 */ +/* ========== Pio definition for PWM0 peripheral ========== */ +#define PIO_PA10B_PWMC0_PWMEXTRG0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG0 */ +#define PIO_PA22B_PWMC0_PWMEXTRG1 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMEXTRG1 */ +#define PIO_PA9C_PWMC0_PWMFI0 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI0 */ +#define PIO_PD8B_PWMC0_PWMFI1 (1u << 8) /**< \brief Pwm0 signal: PWMC0_PWMFI1 */ +#define PIO_PD9B_PWMC0_PWMFI2 (1u << 9) /**< \brief Pwm0 signal: PWMC0_PWMFI2 */ +#define PIO_PA0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA23B_PWMC0_PWMH0 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PB0A_PWMC0_PWMH0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD11B_PWMC0_PWMH0 (1u << 11) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PD20A_PWMC0_PWMH0 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWMH0 */ +#define PIO_PA2A_PWMC0_PWMH1 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA12B_PWMC0_PWMH1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA24B_PWMC0_PWMH1 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PB1A_PWMC0_PWMH1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PD21A_PWMC0_PWMH1 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH1 */ +#define PIO_PA13B_PWMC0_PWMH2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA25B_PWMC0_PWMH2 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PB4B_PWMC0_PWMH2 (1u << 4) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PC19B_PWMC0_PWMH2 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PD22A_PWMC0_PWMH2 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWMH2 */ +#define PIO_PA7B_PWMC0_PWMH3 (1u << 7) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA14B_PWMC0_PWMH3 (1u << 14) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA17C_PWMC0_PWMH3 (1u << 17) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC13B_PWMC0_PWMH3 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PC21B_PWMC0_PWMH3 (1u << 21) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PD23A_PWMC0_PWMH3 (1u << 23) /**< \brief Pwm0 signal: PWMC0_PWMH3 */ +#define PIO_PA1A_PWMC0_PWML0 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA19B_PWMC0_PWML0 (1u << 19) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PB5B_PWMC0_PWML0 (1u << 5) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PC0B_PWMC0_PWML0 (1u << 0) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD10B_PWMC0_PWML0 (1u << 10) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PD24A_PWMC0_PWML0 (1u << 24) /**< \brief Pwm0 signal: PWMC0_PWML0 */ +#define PIO_PA20B_PWMC0_PWML1 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PB12A_PWMC0_PWML1 (1u << 12) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC1B_PWMC0_PWML1 (1u << 1) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PC18B_PWMC0_PWML1 (1u << 18) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PD25A_PWMC0_PWML1 (1u << 25) /**< \brief Pwm0 signal: PWMC0_PWML1 */ +#define PIO_PA16C_PWMC0_PWML2 (1u << 16) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA30A_PWMC0_PWML2 (1u << 30) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PB13A_PWMC0_PWML2 (1u << 13) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC2B_PWMC0_PWML2 (1u << 2) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PC20B_PWMC0_PWML2 (1u << 20) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PD26A_PWMC0_PWML2 (1u << 26) /**< \brief Pwm0 signal: PWMC0_PWML2 */ +#define PIO_PA15C_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC3B_PWMC0_PWML3 (1u << 3) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC15B_PWMC0_PWML3 (1u << 15) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PC22B_PWMC0_PWML3 (1u << 22) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +#define PIO_PD27A_PWMC0_PWML3 (1u << 27) /**< \brief Pwm0 signal: PWMC0_PWML3 */ +/* ========== Pio definition for PWM1 peripheral ========== */ +#define PIO_PA30B_PWMC1_PWMEXTRG0 (1u << 30) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG0 */ +#define PIO_PA18A_PWMC1_PWMEXTRG1 (1u << 18) /**< \brief Pwm1 signal: PWMC1_PWMEXTRG1 */ +#define PIO_PA21C_PWMC1_PWMFI0 (1u << 21) /**< \brief Pwm1 signal: PWMC1_PWMFI0 */ +#define PIO_PA26D_PWMC1_PWMFI1 (1u << 26) /**< \brief Pwm1 signal: PWMC1_PWMFI1 */ +#define PIO_PA28D_PWMC1_PWMFI2 (1u << 28) /**< \brief Pwm1 signal: PWMC1_PWMFI2 */ +#define PIO_PA12C_PWMC1_PWMH0 (1u << 12) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PD1B_PWMC1_PWMH0 (1u << 1) /**< \brief Pwm1 signal: PWMC1_PWMH0 */ +#define PIO_PA14C_PWMC1_PWMH1 (1u << 14) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PD3B_PWMC1_PWMH1 (1u << 3) /**< \brief Pwm1 signal: PWMC1_PWMH1 */ +#define PIO_PA31D_PWMC1_PWMH2 (1u << 31) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PD5B_PWMC1_PWMH2 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWMH2 */ +#define PIO_PA8A_PWMC1_PWMH3 (1u << 8) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PD7B_PWMC1_PWMH3 (1u << 7) /**< \brief Pwm1 signal: PWMC1_PWMH3 */ +#define PIO_PA11C_PWMC1_PWML0 (1u << 11) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PD0B_PWMC1_PWML0 (1u << 0) /**< \brief Pwm1 signal: PWMC1_PWML0 */ +#define PIO_PA13C_PWMC1_PWML1 (1u << 13) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PD2B_PWMC1_PWML1 (1u << 2) /**< \brief Pwm1 signal: PWMC1_PWML1 */ +#define PIO_PA23D_PWMC1_PWML2 (1u << 23) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PD4B_PWMC1_PWML2 (1u << 4) /**< \brief Pwm1 signal: PWMC1_PWML2 */ +#define PIO_PA5A_PWMC1_PWML3 (1u << 5) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +#define PIO_PD6B_PWMC1_PWML3 (1u << 6) /**< \brief Pwm1 signal: PWMC1_PWML3 */ +/* ========== Pio definition for QSPI peripheral ========== */ +#define PIO_PA11A_QCS (1u << 11) /**< \brief Qspi signal: QCS */ +#define PIO_PA13A_QIO0 (1u << 13) /**< \brief Qspi signal: QIO0 */ +#define PIO_PA12A_QIO1 (1u << 12) /**< \brief Qspi signal: QIO1 */ +#define PIO_PA17A_QIO2 (1u << 17) /**< \brief Qspi signal: QIO2 */ +#define PIO_PD31A_QIO3 (1u << 31) /**< \brief Qspi signal: QIO3 */ +#define PIO_PA14A_QSCK (1u << 14) /**< \brief Qspi signal: QSCK */ +/* ========== Pio definition for SPI0 peripheral ========== */ +#define PIO_PD20B_SPI0_MISO (1u << 20) /**< \brief Spi0 signal: SPI0_MISO */ +#define PIO_PD21B_SPI0_MOSI (1u << 21) /**< \brief Spi0 signal: SPI0_MOSI */ +#define PIO_PB2D_SPI0_NPCS0 (1u << 2) /**< \brief Spi0 signal: SPI0_NPCS0 */ +#define PIO_PA31A_SPI0_NPCS1 (1u << 31) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD25B_SPI0_NPCS1 (1u << 25) /**< \brief Spi0 signal: SPI0_NPCS1 */ +#define PIO_PD12C_SPI0_NPCS2 (1u << 12) /**< \brief Spi0 signal: SPI0_NPCS2 */ +#define PIO_PD27B_SPI0_NPCS3 (1u << 27) /**< \brief Spi0 signal: SPI0_NPCS3 */ +#define PIO_PD22B_SPI0_SPCK (1u << 22) /**< \brief Spi0 signal: SPI0_SPCK */ +/* ========== Pio definition for SPI1 peripheral ========== */ +#define PIO_PC26C_SPI1_MISO (1u << 26) /**< \brief Spi1 signal: SPI1_MISO */ +#define PIO_PC27C_SPI1_MOSI (1u << 27) /**< \brief Spi1 signal: SPI1_MOSI */ +#define PIO_PC25C_SPI1_NPCS0 (1u << 25) /**< \brief Spi1 signal: SPI1_NPCS0 */ +#define PIO_PC28C_SPI1_NPCS1 (1u << 28) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PD0C_SPI1_NPCS1 (1u << 0) /**< \brief Spi1 signal: SPI1_NPCS1 */ +#define PIO_PC29C_SPI1_NPCS2 (1u << 29) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PD1C_SPI1_NPCS2 (1u << 1) /**< \brief Spi1 signal: SPI1_NPCS2 */ +#define PIO_PC30C_SPI1_NPCS3 (1u << 30) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PD2C_SPI1_NPCS3 (1u << 2) /**< \brief Spi1 signal: SPI1_NPCS3 */ +#define PIO_PC24C_SPI1_SPCK (1u << 24) /**< \brief Spi1 signal: SPI1_SPCK */ +/* ========== Pio definition for SSC peripheral ========== */ +#define PIO_PA10C_RD (1u << 10) /**< \brief Ssc signal: RD */ +#define PIO_PD24B_RF (1u << 24) /**< \brief Ssc signal: RF */ +#define PIO_PA22A_RK (1u << 22) /**< \brief Ssc signal: RK */ +#define PIO_PB5D_TD (1u << 5) /**< \brief Ssc signal: TD */ +#define PIO_PD10C_TD (1u << 10) /**< \brief Ssc signal: TD */ +#define PIO_PD26B_TD (1u << 26) /**< \brief Ssc signal: TD */ +#define PIO_PB0D_TF (1u << 0) /**< \brief Ssc signal: TF */ +#define PIO_PB1D_TK (1u << 1) /**< \brief Ssc signal: TK */ +/* ========== Pio definition for TC0 peripheral ========== */ +#define PIO_PA4B_TCLK0 (1u << 4) /**< \brief Tc0 signal: TCLK0 */ +#define PIO_PA28B_TCLK1 (1u << 28) /**< \brief Tc0 signal: TCLK1 */ +#define PIO_PA29B_TCLK2 (1u << 29) /**< \brief Tc0 signal: TCLK2 */ +#define PIO_PA0B_TIOA0 (1u << 0) /**< \brief Tc0 signal: TIOA0 */ +#define PIO_PA15B_TIOA1 (1u << 15) /**< \brief Tc0 signal: TIOA1 */ +#define PIO_PA26B_TIOA2 (1u << 26) /**< \brief Tc0 signal: TIOA2 */ +#define PIO_PA1B_TIOB0 (1u << 1) /**< \brief Tc0 signal: TIOB0 */ +#define PIO_PA16B_TIOB1 (1u << 16) /**< \brief Tc0 signal: TIOB1 */ +#define PIO_PA27B_TIOB2 (1u << 27) /**< \brief Tc0 signal: TIOB2 */ +/* ========== Pio definition for TC1 peripheral ========== */ +#define PIO_PC25B_TCLK3 (1u << 25) /**< \brief Tc1 signal: TCLK3 */ +#define PIO_PC28B_TCLK4 (1u << 28) /**< \brief Tc1 signal: TCLK4 */ +#define PIO_PC31B_TCLK5 (1u << 31) /**< \brief Tc1 signal: TCLK5 */ +#define PIO_PC23B_TIOA3 (1u << 23) /**< \brief Tc1 signal: TIOA3 */ +#define PIO_PC26B_TIOA4 (1u << 26) /**< \brief Tc1 signal: TIOA4 */ +#define PIO_PC29B_TIOA5 (1u << 29) /**< \brief Tc1 signal: TIOA5 */ +#define PIO_PC24B_TIOB3 (1u << 24) /**< \brief Tc1 signal: TIOB3 */ +#define PIO_PC27B_TIOB4 (1u << 27) /**< \brief Tc1 signal: TIOB4 */ +#define PIO_PC30B_TIOB5 (1u << 30) /**< \brief Tc1 signal: TIOB5 */ +/* ========== Pio definition for TC2 peripheral ========== */ +#define PIO_PC7B_TCLK6 (1u << 7) /**< \brief Tc2 signal: TCLK6 */ +#define PIO_PC10B_TCLK7 (1u << 10) /**< \brief Tc2 signal: TCLK7 */ +#define PIO_PC14B_TCLK8 (1u << 14) /**< \brief Tc2 signal: TCLK8 */ +#define PIO_PC5B_TIOA6 (1u << 5) /**< \brief Tc2 signal: TIOA6 */ +#define PIO_PC8B_TIOA7 (1u << 8) /**< \brief Tc2 signal: TIOA7 */ +#define PIO_PC11B_TIOA8 (1u << 11) /**< \brief Tc2 signal: TIOA8 */ +#define PIO_PC6B_TIOB6 (1u << 6) /**< \brief Tc2 signal: TIOB6 */ +#define PIO_PC9B_TIOB7 (1u << 9) /**< \brief Tc2 signal: TIOB7 */ +#define PIO_PC12B_TIOB8 (1u << 12) /**< \brief Tc2 signal: TIOB8 */ +/* ========== Pio definition for TC3 peripheral ========== */ +#define PIO_PE5B_TCLK10 (1u << 5) /**< \brief Tc3 signal: TCLK10 */ +#define PIO_PD24C_TCLK11 (1u << 24) /**< \brief Tc3 signal: TCLK11 */ +#define PIO_PE2B_TCLK9 (1u << 2) /**< \brief Tc3 signal: TCLK9 */ +#define PIO_PE3B_TIOA10 (1u << 3) /**< \brief Tc3 signal: TIOA10 */ +#define PIO_PD21C_TIOA11 (1u << 21) /**< \brief Tc3 signal: TIOA11 */ +#define PIO_PE0B_TIOA9 (1u << 0) /**< \brief Tc3 signal: TIOA9 */ +#define PIO_PE4B_TIOB10 (1u << 4) /**< \brief Tc3 signal: TIOB10 */ +#define PIO_PD22C_TIOB11 (1u << 22) /**< \brief Tc3 signal: TIOB11 */ +#define PIO_PE1B_TIOB9 (1u << 1) /**< \brief Tc3 signal: TIOB9 */ +/* ========== Pio definition for TWIHS0 peripheral ========== */ +#define PIO_PA4A_TWCK0 (1u << 4) /**< \brief Twihs0 signal: TWCK0 */ +#define PIO_PA3A_TWD0 (1u << 3) /**< \brief Twihs0 signal: TWD0 */ +/* ========== Pio definition for TWIHS1 peripheral ========== */ +#define PIO_PB5A_TWCK1 (1u << 5) /**< \brief Twihs1 signal: TWCK1 */ +#define PIO_PB4A_TWD1 (1u << 4) /**< \brief Twihs1 signal: TWD1 */ +/* ========== Pio definition for TWIHS2 peripheral ========== */ +#define PIO_PD28C_TWCK2 (1u << 28) /**< \brief Twihs2 signal: TWCK2 */ +#define PIO_PD27C_TWD2 (1u << 27) /**< \brief Twihs2 signal: TWD2 */ +/* ========== Pio definition for UART0 peripheral ========== */ +#define PIO_PA9A_URXD0 (1u << 9) /**< \brief Uart0 signal: URXD0 */ +#define PIO_PA10A_UTXD0 (1u << 10) /**< \brief Uart0 signal: UTXD0 */ +/* ========== Pio definition for UART1 peripheral ========== */ +#define PIO_PA5C_URXD1 (1u << 5) /**< \brief Uart1 signal: URXD1 */ +#define PIO_PA4C_UTXD1 (1u << 4) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PA6C_UTXD1 (1u << 6) /**< \brief Uart1 signal: UTXD1 */ +#define PIO_PD26D_UTXD1 (1u << 26) /**< \brief Uart1 signal: UTXD1 */ +/* ========== Pio definition for UART2 peripheral ========== */ +#define PIO_PD25C_URXD2 (1u << 25) /**< \brief Uart2 signal: URXD2 */ +#define PIO_PD26C_UTXD2 (1u << 26) /**< \brief Uart2 signal: UTXD2 */ +/* ========== Pio definition for UART3 peripheral ========== */ +#define PIO_PD28A_URXD3 (1u << 28) /**< \brief Uart3 signal: URXD3 */ +#define PIO_PD30A_UTXD3 (1u << 30) /**< \brief Uart3 signal: UTXD3 */ +#define PIO_PD31B_UTXD3 (1u << 31) /**< \brief Uart3 signal: UTXD3 */ +/* ========== Pio definition for UART4 peripheral ========== */ +#define PIO_PD18C_URXD4 (1u << 18) /**< \brief Uart4 signal: URXD4 */ +#define PIO_PD3C_UTXD4 (1u << 3) /**< \brief Uart4 signal: UTXD4 */ +#define PIO_PD19C_UTXD4 (1u << 19) /**< \brief Uart4 signal: UTXD4 */ +/* ========== Pio definition for USART0 peripheral ========== */ +#define PIO_PB2C_CTS0 (1u << 2) /**< \brief Usart0 signal: CTS0 */ +#define PIO_PD0D_DCD0 (1u << 0) /**< \brief Usart0 signal: DCD0 */ +#define PIO_PD2D_DSR0 (1u << 2) /**< \brief Usart0 signal: DSR0 */ +#define PIO_PD1D_DTR0 (1u << 1) /**< \brief Usart0 signal: DTR0 */ +#define PIO_PD3D_RI0 (1u << 3) /**< \brief Usart0 signal: RI0 */ +#define PIO_PB3C_RTS0 (1u << 3) /**< \brief Usart0 signal: RTS0 */ +#define PIO_PB0C_RXD0 (1u << 0) /**< \brief Usart0 signal: RXD0 */ +#define PIO_PB13C_SCK0 (1u << 13) /**< \brief Usart0 signal: SCK0 */ +#define PIO_PB1C_TXD0 (1u << 1) /**< \brief Usart0 signal: TXD0 */ +/* ========== Pio definition for USART1 peripheral ========== */ +#define PIO_PA25A_CTS1 (1u << 25) /**< \brief Usart1 signal: CTS1 */ +#define PIO_PA26A_DCD1 (1u << 26) /**< \brief Usart1 signal: DCD1 */ +#define PIO_PA28A_DSR1 (1u << 28) /**< \brief Usart1 signal: DSR1 */ +#define PIO_PA27A_DTR1 (1u << 27) /**< \brief Usart1 signal: DTR1 */ +#define PIO_PA3B_LONCOL1 (1u << 3) /**< \brief Usart1 signal: LONCOL1 */ +#define PIO_PA29A_RI1 (1u << 29) /**< \brief Usart1 signal: RI1 */ +#define PIO_PA24A_RTS1 (1u << 24) /**< \brief Usart1 signal: RTS1 */ +#define PIO_PA21A_RXD1 (1u << 21) /**< \brief Usart1 signal: RXD1 */ +#define PIO_PA23A_SCK1 (1u << 23) /**< \brief Usart1 signal: SCK1 */ +#define PIO_PB4D_TXD1 (1u << 4) /**< \brief Usart1 signal: TXD1 */ +/* ========== Pio definition for USART2 peripheral ========== */ +#define PIO_PD19B_CTS2 (1u << 19) /**< \brief Usart2 signal: CTS2 */ +#define PIO_PD4D_DCD2 (1u << 4) /**< \brief Usart2 signal: DCD2 */ +#define PIO_PD6D_DSR2 (1u << 6) /**< \brief Usart2 signal: DSR2 */ +#define PIO_PD5D_DTR2 (1u << 5) /**< \brief Usart2 signal: DTR2 */ +#define PIO_PD7D_RI2 (1u << 7) /**< \brief Usart2 signal: RI2 */ +#define PIO_PD18B_RTS2 (1u << 18) /**< \brief Usart2 signal: RTS2 */ +#define PIO_PD15B_RXD2 (1u << 15) /**< \brief Usart2 signal: RXD2 */ +#define PIO_PD17B_SCK2 (1u << 17) /**< \brief Usart2 signal: SCK2 */ +#define PIO_PD16B_TXD2 (1u << 16) /**< \brief Usart2 signal: TXD2 */ +/* ========== Pio definition for UTMI peripheral ========== */ +#define PIO_PC12D_UTMI_CDRBISTEN (1u << 12) /**< \brief Utmi signal: UTMI_CDRBISTEN */ +#define PIO_PC29D_UTMI_CDRCPDIVEN (1u << 29) /**< \brief Utmi signal: UTMI_CDRCPDIVEN */ +#define PIO_PC31D_UTMI_CDRCPSEL0 (1u << 31) /**< \brief Utmi signal: UTMI_CDRCPSEL0 */ +#define PIO_PC30D_UTMI_CDRCPSEL1 (1u << 30) /**< \brief Utmi signal: UTMI_CDRCPSEL1 */ +#define PIO_PC15D_UTMI_CDRCPSELDIV (1u << 15) /**< \brief Utmi signal: UTMI_CDRCPSELDIV */ +#define PIO_PC0D_UTMI_HDIS (1u << 0) /**< \brief Utmi signal: UTMI_HDIS */ +#define PIO_PC27D_UTMI_LS0 (1u << 27) /**< \brief Utmi signal: UTMI_LS0 */ +#define PIO_PC26D_UTMI_LS1 (1u << 26) /**< \brief Utmi signal: UTMI_LS1 */ +#define PIO_PE3D_UTMI_RXACT (1u << 3) /**< \brief Utmi signal: UTMI_RXACT */ +#define PIO_PE2D_UTMI_RXERR (1u << 2) /**< \brief Utmi signal: UTMI_RXERR */ +#define PIO_PE1D_UTMI_RXVAL (1u << 1) /**< \brief Utmi signal: UTMI_RXVAL */ +/* ========== Pio indexes ========== */ +#define PIO_PA0_IDX 0 +#define PIO_PA1_IDX 1 +#define PIO_PA2_IDX 2 +#define PIO_PA3_IDX 3 +#define PIO_PA4_IDX 4 +#define PIO_PA5_IDX 5 +#define PIO_PA6_IDX 6 +#define PIO_PA7_IDX 7 +#define PIO_PA8_IDX 8 +#define PIO_PA9_IDX 9 +#define PIO_PA10_IDX 10 +#define PIO_PA11_IDX 11 +#define PIO_PA12_IDX 12 +#define PIO_PA13_IDX 13 +#define PIO_PA14_IDX 14 +#define PIO_PA15_IDX 15 +#define PIO_PA16_IDX 16 +#define PIO_PA17_IDX 17 +#define PIO_PA18_IDX 18 +#define PIO_PA19_IDX 19 +#define PIO_PA20_IDX 20 +#define PIO_PA21_IDX 21 +#define PIO_PA22_IDX 22 +#define PIO_PA23_IDX 23 +#define PIO_PA24_IDX 24 +#define PIO_PA25_IDX 25 +#define PIO_PA26_IDX 26 +#define PIO_PA27_IDX 27 +#define PIO_PA28_IDX 28 +#define PIO_PA29_IDX 29 +#define PIO_PA30_IDX 30 +#define PIO_PA31_IDX 31 +#define PIO_PB0_IDX 32 +#define PIO_PB1_IDX 33 +#define PIO_PB2_IDX 34 +#define PIO_PB3_IDX 35 +#define PIO_PB4_IDX 36 +#define PIO_PB5_IDX 37 +#define PIO_PB6_IDX 38 +#define PIO_PB7_IDX 39 +#define PIO_PB8_IDX 40 +#define PIO_PB9_IDX 41 +#define PIO_PB12_IDX 44 +#define PIO_PB13_IDX 45 +#define PIO_PC0_IDX 64 +#define PIO_PC1_IDX 65 +#define PIO_PC2_IDX 66 +#define PIO_PC3_IDX 67 +#define PIO_PC4_IDX 68 +#define PIO_PC5_IDX 69 +#define PIO_PC6_IDX 70 +#define PIO_PC7_IDX 71 +#define PIO_PC8_IDX 72 +#define PIO_PC9_IDX 73 +#define PIO_PC10_IDX 74 +#define PIO_PC11_IDX 75 +#define PIO_PC12_IDX 76 +#define PIO_PC13_IDX 77 +#define PIO_PC14_IDX 78 +#define PIO_PC15_IDX 79 +#define PIO_PC16_IDX 80 +#define PIO_PC17_IDX 81 +#define PIO_PC18_IDX 82 +#define PIO_PC19_IDX 83 +#define PIO_PC20_IDX 84 +#define PIO_PC21_IDX 85 +#define PIO_PC22_IDX 86 +#define PIO_PC23_IDX 87 +#define PIO_PC24_IDX 88 +#define PIO_PC25_IDX 89 +#define PIO_PC26_IDX 90 +#define PIO_PC27_IDX 91 +#define PIO_PC28_IDX 92 +#define PIO_PC29_IDX 93 +#define PIO_PC30_IDX 94 +#define PIO_PC31_IDX 95 +#define PIO_PD0_IDX 96 +#define PIO_PD1_IDX 97 +#define PIO_PD2_IDX 98 +#define PIO_PD3_IDX 99 +#define PIO_PD4_IDX 100 +#define PIO_PD5_IDX 101 +#define PIO_PD6_IDX 102 +#define PIO_PD7_IDX 103 +#define PIO_PD8_IDX 104 +#define PIO_PD9_IDX 105 +#define PIO_PD10_IDX 106 +#define PIO_PD11_IDX 107 +#define PIO_PD12_IDX 108 +#define PIO_PD13_IDX 109 +#define PIO_PD14_IDX 110 +#define PIO_PD15_IDX 111 +#define PIO_PD16_IDX 112 +#define PIO_PD17_IDX 113 +#define PIO_PD18_IDX 114 +#define PIO_PD19_IDX 115 +#define PIO_PD20_IDX 116 +#define PIO_PD21_IDX 117 +#define PIO_PD22_IDX 118 +#define PIO_PD23_IDX 119 +#define PIO_PD24_IDX 120 +#define PIO_PD25_IDX 121 +#define PIO_PD26_IDX 122 +#define PIO_PD27_IDX 123 +#define PIO_PD28_IDX 124 +#define PIO_PD29_IDX 125 +#define PIO_PD30_IDX 126 +#define PIO_PD31_IDX 127 +#define PIO_PE0_IDX 128 +#define PIO_PE1_IDX 129 +#define PIO_PE2_IDX 130 +#define PIO_PE3_IDX 131 +#define PIO_PE4_IDX 132 +#define PIO_PE5_IDX 133 + +#endif /* _SAME70Q21B_PIO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h new file mode 100644 index 00000000..de427fdf --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h @@ -0,0 +1,77 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70_ +#define _SAME70_ + +#if defined (__SAME70J19__) +#include "same70j19.h" +#elif defined (__SAME70J20__) +#include "same70j20.h" +#elif defined (__SAME70J21__) +#include "same70j21.h" +#elif defined (__SAME70N19__) +#include "same70n19.h" +#elif defined (__SAME70N20__) +#include "same70n20.h" +#elif defined (__SAME70N21__) +#include "same70n21.h" +#elif defined (__SAME70Q19__) +#include "same70q19.h" +#elif defined (__SAME70Q20__) +#include "same70q20.h" +#elif defined (__SAME70Q21__) +#include "same70q21.h" +#elif defined (__SAME70J19B__) +#include "same70j19b.h" +#elif defined (__SAME70J20B__) +#include "same70j20b.h" +#elif defined (__SAME70J21B__) +#include "same70j21b.h" +#elif defined (__SAME70N19B__) +#include "same70n19b.h" +#elif defined (__SAME70N20B__) +#include "same70n20b.h" +#elif defined (__SAME70N21B__) +#include "same70n21b.h" +#elif defined (__SAME70Q19B__) +#include "same70q19b.h" +#elif defined (__SAME70Q20B__) +#include "same70q20b.h" +#elif defined (__SAME70Q21B__) +#include "same70q21b.h" +#else + #error Library does not support the specified device. +#endif + +#endif /* _SAME70_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h new file mode 100644 index 00000000..d1a2c2ed --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h @@ -0,0 +1,611 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J19_ +#define _SAME70J19_ + +/** \addtogroup SAME70J19_definitions SAME70J19 definitions + This file defines all structures and symbols for SAME70J19: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70J19 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70J19 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70J19 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70J19 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70J19 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70J19 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70J19 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70J19 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70J19 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70J19 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70J19 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70J19 Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70J19 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70J19 USART 1 (USART1) */ + PIOD_IRQn = 16, /**< 16 SAME70J19 Parallel I/O Controller D (PIOD) */ + TWIHS0_IRQn = 19, /**< 19 SAME70J19 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70J19 Two Wire Interface 1 HS (TWIHS1) */ + SSC_IRQn = 22, /**< 22 SAME70J19 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70J19 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70J19 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70J19 Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70J19 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70J19 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70J19 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70J19 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70J19 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70J19 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70J19 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70J19 Controller Area Network (MCAN0) */ + GMAC_IRQn = 39, /**< 39 SAME70J19 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70J19 Analog Front End 1 (AFEC1) */ + QSPI_IRQn = 43, /**< 43 SAME70J19 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70J19 UART 2 (UART2) */ + TC9_IRQn = 50, /**< 50 SAME70J19 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70J19 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70J19 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70J19 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70J19 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70J19 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70J19 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70J19 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70J19 Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70J19 Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70J19 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70J19 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70J19 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70J19 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70J19 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pvReserved15; + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pvReserved18; + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pvReserved21; + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pvReserved37; + void* pvReserved38; + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pvReserved41; + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pvReserved45; + void* pvReserved46; + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70J19 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70J19 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70J19 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70J19 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70J19 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70J19 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70J19 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70J19 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70J19 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70J19 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70J19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/ssc.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/mcan0.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70j19.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (32u) +#define IRAM_SIZE (0x40000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA10D0A00UL) +#define CHIP_EXID (0x00000000UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70J19 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70J19_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h new file mode 100644 index 00000000..72ea61aa --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h @@ -0,0 +1,617 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J19B_ +#define _SAME70J19B_ + +/** \addtogroup SAME70J19B_definitions SAME70J19B definitions + This file defines all structures and symbols for SAME70J19B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70J19B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70J19B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70J19B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70J19B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70J19B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70J19B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70J19B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70J19B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70J19B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70J19B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70J19B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70J19B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70J19B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70J19B USART 1 (USART1) */ + PIOD_IRQn = 16, /**< 16 SAME70J19B Parallel I/O Controller D (PIOD) */ + TWIHS0_IRQn = 19, /**< 19 SAME70J19B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70J19B Two Wire Interface 1 HS (TWIHS1) */ + SSC_IRQn = 22, /**< 22 SAME70J19B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70J19B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70J19B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70J19B Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70J19B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70J19B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70J19B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70J19B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70J19B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70J19B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70J19B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70J19B Controller Area Network (MCAN0) */ + GMAC_IRQn = 39, /**< 39 SAME70J19B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70J19B Analog Front End 1 (AFEC1) */ + QSPI_IRQn = 43, /**< 43 SAME70J19B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70J19B UART 2 (UART2) */ + TC9_IRQn = 50, /**< 50 SAME70J19B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70J19B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70J19B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70J19B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70J19B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70J19B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70J19B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70J19B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70J19B Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70J19B Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70J19B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70J19B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70J19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70J19B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70J19B Floating Point Unit Registers (FPU) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70J19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70J19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70J19B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pvReserved15; + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pvReserved18; + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pvReserved21; + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pvReserved37; + void* pvReserved38; + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pvReserved41; + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pvReserved45; + void* pvReserved46; + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70J19B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70J19B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70J19B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70J19B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70J19B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70J19B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70J19B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70J19B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70J19B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70J19 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70J19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/ssc.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/mcan0.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J19B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70j19b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (32u) +#define IRAM_SIZE (0x40000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA10D0A01UL) +#define CHIP_EXID (0x00000000UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70J19B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70J19B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h new file mode 100644 index 00000000..17407173 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h @@ -0,0 +1,613 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J20_ +#define _SAME70J20_ + +/** \addtogroup SAME70J20_definitions SAME70J20 definitions + This file defines all structures and symbols for SAME70J20: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70J20 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70J20 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70J20 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70J20 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70J20 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70J20 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70J20 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70J20 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70J20 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70J20 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70J20 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70J20 Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70J20 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70J20 USART 1 (USART1) */ + PIOD_IRQn = 16, /**< 16 SAME70J20 Parallel I/O Controller D (PIOD) */ + TWIHS0_IRQn = 19, /**< 19 SAME70J20 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70J20 Two Wire Interface 1 HS (TWIHS1) */ + SSC_IRQn = 22, /**< 22 SAME70J20 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70J20 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70J20 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70J20 Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70J20 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70J20 Digital-to-Analog Converter Controller (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70J20 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70J20 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70J20 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70J20 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70J20 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70J20 Controller Area Network (MCAN0) */ + GMAC_IRQn = 39, /**< 39 SAME70J20 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70J20 Analog Front End 1 (AFEC1) */ + QSPI_IRQn = 43, /**< 43 SAME70J20 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70J20 UART 2 (UART2) */ + TC9_IRQn = 50, /**< 50 SAME70J20 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70J20 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70J20 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70J20 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70J20 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70J20 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70J20 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70J20 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70J20 Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70J20 Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70J20 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70J20 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70J20 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70J20 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70J20 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pvReserved15; + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pvReserved18; + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pvReserved21; + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pvReserved37; + void* pvReserved38; + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pvReserved41; + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pvReserved45; + void* pvReserved46; + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70J20 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70J20 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70J20 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70J20 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70J20 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70J20 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70J20 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70J20 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70J20 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70J20 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70J20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/ssc.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/mcan0.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/acc.h" +#include "instance/dacc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital-to-Analog Converter Controller (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70j20.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (64u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020C00UL) +#define CHIP_EXID (0x00000000UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70J20 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70J20_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h new file mode 100644 index 00000000..0578f4ca --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h @@ -0,0 +1,618 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J20B_ +#define _SAME70J20B_ + +/** \addtogroup SAME70J20B_definitions SAME70J20B definitions + This file defines all structures and symbols for SAME70J20B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70J20B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70J20B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70J20B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70J20B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70J20B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70J20B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70J20B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70J20B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70J20B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70J20B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70J20B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70J20B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70J20B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70J20B USART 1 (USART1) */ + PIOD_IRQn = 16, /**< 16 SAME70J20B Parallel I/O Controller D (PIOD) */ + TWIHS0_IRQn = 19, /**< 19 SAME70J20B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70J20B Two Wire Interface 1 HS (TWIHS1) */ + SSC_IRQn = 22, /**< 22 SAME70J20B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70J20B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70J20B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70J20B Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70J20B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70J20B Digital-to-Analog Converter Controller (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70J20B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70J20B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70J20B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70J20B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70J20B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70J20B Controller Area Network (MCAN0) */ + GMAC_IRQn = 39, /**< 39 SAME70J20B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70J20B Analog Front End 1 (AFEC1) */ + QSPI_IRQn = 43, /**< 43 SAME70J20B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70J20B UART 2 (UART2) */ + TC9_IRQn = 50, /**< 50 SAME70J20B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70J20B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70J20B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70J20B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70J20B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70J20B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70J20B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70J20B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70J20B Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70J20B Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70J20B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70J20B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70J20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70J20B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70J20B Floating Point Unit Registers (FPU) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70J20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70J20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70J20B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pvReserved15; + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pvReserved18; + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pvReserved21; + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pvReserved37; + void* pvReserved38; + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pvReserved41; + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pvReserved45; + void* pvReserved46; + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70J20B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70J20B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70J20B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70J20B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70J20B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70J20B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70J20B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70J20B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70J20B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70J20 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70J20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/ssc.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/mcan0.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/acc.h" +#include "instance/dacc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital-to-Analog Converter Controller (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J20B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70j20b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (64u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020C01UL) +#define CHIP_EXID (0x00000000UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70J20B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70J20B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h new file mode 100644 index 00000000..9e727004 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h @@ -0,0 +1,618 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J21_ +#define _SAME70J21_ + +/** \addtogroup SAME70J21_definitions SAME70J21 definitions + This file defines all structures and symbols for SAME70J21: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70J21 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70J21 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70J21 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70J21 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70J21 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70J21 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70J21 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70J21 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70J21 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70J21 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70J21 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70J21 Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70J20B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70J20B USART 1 (USART1) */ + PIOD_IRQn = 16, /**< 16 SAME70J21 Parallel I/O Controller D (PIOD) */ + TWIHS0_IRQn = 19, /**< 19 SAME70J21 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70J21 Two Wire Interface 1 HS (TWIHS1) */ + SSC_IRQn = 22, /**< 22 SAME70J21 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70J21 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70J21 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70J21 Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70J21 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70J21 Digital-to-Analog Converter Controller (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70J21 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70J21 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70J21 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70J21 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70J21 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70J21 Controller Area Network (MCAN0) */ + GMAC_IRQn = 39, /**< 39 SAME70J21 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70J21 Analog Front End 1 (AFEC1) */ + QSPI_IRQn = 43, /**< 43 SAME70J21 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70J21 UART 2 (UART2) */ + TC9_IRQn = 50, /**< 50 SAME70J21 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70J21 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70J21 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70J21 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70J21 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70J21 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70J21 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70J21 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70J21 Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70J21 Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70J21 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70J21 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70J21 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70J21 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70J21 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pvReserved15; + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pvReserved18; + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pvReserved21; + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pvReserved37; + void* pvReserved38; + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pvReserved41; + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pvReserved45; + void* pvReserved46; + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70J21 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70J21 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70J21 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70J21 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70J21 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70J21 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70J21 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70J21 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70J21 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70J21 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70J21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/dacc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/ssc.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/mcan0.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital-to-Analog Converter Controller (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70j21.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x200000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (4096u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020E00UL) +#define CHIP_EXID (0x00000000UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70J21 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70J21_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h new file mode 100644 index 00000000..4ea83a6d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h @@ -0,0 +1,625 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70J21B_ +#define _SAME70J21B_ + +/** \addtogroup SAME70J21B_definitions SAME70J21B definitions + This file defines all structures and symbols for SAME70J21B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70J21B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70J21B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70J21B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70J21B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70J21B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70J21B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70J21B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70J21B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70J21B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70J21B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70J21B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70J21B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70J20B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70J20B USART 1 (USART1) */ + PIOD_IRQn = 16, /**< 16 SAME70J21B Parallel I/O Controller D (PIOD) */ + TWIHS0_IRQn = 19, /**< 19 SAME70J21B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70J21B Two Wire Interface 1 HS (TWIHS1) */ + SSC_IRQn = 22, /**< 22 SAME70J21B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70J21B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70J21B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70J21B Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70J21B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70J21B Digital-to-Analog Converter Controller (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70J21B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70J21B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70J21B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70J21B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70J21B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70J21B Controller Area Network (MCAN0) */ + GMAC_IRQn = 39, /**< 39 SAME70J21B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70J21B Analog Front End 1 (AFEC1) */ + QSPI_IRQn = 43, /**< 43 SAME70J21B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70J21B UART 2 (UART2) */ + TC9_IRQn = 50, /**< 50 SAME70J21B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70J21B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70J21B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70J21B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70J21B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70J21B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70J21B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70J21B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70J21B Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70J21B Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70J21B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70J21B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70J21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70J21B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70J21B Floating Point Unit Registers (FPU) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70J21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70J21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70J21B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pvReserved15; + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pvReserved18; + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pvReserved21; + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pvReserved37; + void* pvReserved38; + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pvReserved41; + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pvReserved45; + void* pvReserved46; + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70J21B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70J21B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70J21B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70J21B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70J21B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70J21B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70J21B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70J21B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70J21B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70J21 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70J21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/dacc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/ssc.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/mcan0.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital-to-Analog Converter Controller (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#else +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70J21B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70j21b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x200000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (4096u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020E01UL) +#define CHIP_EXID (0x00000000UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70J21B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70J21B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h new file mode 100644 index 00000000..b0d613f8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h @@ -0,0 +1,657 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70N19_ +#define _SAME70N19_ + +/** \addtogroup SAME70N19_definitions SAME70N19 definitions + This file defines all structures and symbols for SAME70N19: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70N19 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70N19 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70N19 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70N19 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70N19 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70N19 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70N19 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70N19 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70N19 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70N19 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70N19 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70N19 Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70N19 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70N19 USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70N19 USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70N19 Parallel I/O Controller D (PIOD) */ + HSMCI_IRQn = 18, /**< 18 SAME70N19 Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70N19 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70N19 Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70N19 Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70N19 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70N19 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70N19 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70N19 Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70N19 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70N19 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70N19 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70N19 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70N19 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70N19 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70N19 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70N19 Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70N19 Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70N19 Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70N19 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70N19 Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70N19 Two Wire Interface 2 HS (TWIHS2) */ + QSPI_IRQn = 43, /**< 43 SAME70N19 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70N19 UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70N19 UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70N19 UART 4 (UART4) */ + TC9_IRQn = 50, /**< 50 SAME70N19 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70N19 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70N19 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70N19 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70N19 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70N19 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70N19 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70N19 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70N19 Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70N19 Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70N19 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70N19 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70N19 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70N19 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70N19 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void MCAN0_Handler ( void ); +void MCAN1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI0_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70N19 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70N19 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70N19 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70N19 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70N19 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70N19 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70N19 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70N19 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70N19 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70N19 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70N19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70n19.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (32u) +#define IRAM_SIZE (0x40000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA10D0A00UL) +#define CHIP_EXID (0x00000001UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70N19 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70N19_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h new file mode 100644 index 00000000..06eb1b51 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h @@ -0,0 +1,670 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70N19B_ +#define _SAME70N19B_ + +/** \addtogroup SAME70N19B_definitions SAME70N19B definitions + This file defines all structures and symbols for SAME70N19B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70N19B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70N19B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70N19B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70N19B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70N19B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70N19B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70N19B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70N19B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70N19B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70N19B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70N19B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70N19B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70N19B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70N19B USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70N19B USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70N19B Parallel I/O Controller D (PIOD) */ + HSMCI_IRQn = 18, /**< 18 SAME70N19B Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70N19B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70N19B Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70N19B Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70N19B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70N19B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70N19B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70N19B Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70N19B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70N19B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70N19B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70N19B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70N19B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70N19B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70N19B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70N19B Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70N19B Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70N19B Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70N19B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70N19B Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70N19B Two Wire Interface 2 HS (TWIHS2) */ + QSPI_IRQn = 43, /**< 43 SAME70N19B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70N19B UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70N19B UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70N19B UART 4 (UART4) */ + TC9_IRQn = 50, /**< 50 SAME70N19B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70N19B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70N19B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70N19B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70N19B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70N19B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70N19B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70N19B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70N19B Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70N19B Reinforced Secure Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70N19B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70N19B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70N19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70N19B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70N19B Floating Point Unit Registers (FPU) */ + I2SC0_IRQn = 69, /**< 69 SAME70N19B Inter-IC Sound Controller (I2SC0) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70N19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70N19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70N19B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 71 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Secure Watchdog Timer */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pfnI2SC0_Handler; /* 69 Inter-IC Sound Controller (I2SC0) */ + void* pvReserved70; + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void I2SC0_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void MCAN0_Handler ( void ); +void MCAN1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI0_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70N19B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70N19B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70N19B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70N19B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70N19B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70N19B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70N19B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70N19B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70N19B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70N19 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70N19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/i2sc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/i2sc0.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ +#define ID_I2SC0 (69) /**< \brief Inter-IC Sound controller (I2SC0) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 (0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 ((I2sc *)0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N19B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70n19b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (32u) +#define IRAM_SIZE (0x40000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA10D0A01UL) +#define CHIP_EXID (0x00000001UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70N19B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70N19B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h new file mode 100644 index 00000000..4d3e1b1c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h @@ -0,0 +1,659 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N20_ +#define _SAME70N20_ + +/** \addtogroup SAME70N20_definitions SAME70N20 definitions + This file defines all structures and symbols for SAME70N20: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70N20 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70N20 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70N20 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70N20 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70N20 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70N20 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70N20 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70N20 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70N20 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70N20 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70N20 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70N20 Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70N20 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70N20 USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70N20 USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70N20 Parallel I/O Controller D (PIOD) */ + HSMCI_IRQn = 18, /**< 18 SAME70N20 Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70N20 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70N20 Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70N20 Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70N20 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70N20 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70N20 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70N20 Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70N20 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70N20 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70N20 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70N20 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70N20 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70N20 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70N20 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70N20 Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70N20 Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70N20 Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70N20 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70N20 Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70N20 Two Wire Interface 2 HS (TWIHS2) */ + QSPI_IRQn = 43, /**< 43 SAME70N20 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70N20 UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70N20 UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70N20 UART 4 (UART4) */ + TC9_IRQn = 50, /**< 50 SAME70N20 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70N20 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70N20 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70N20 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70N20 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70N20 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70N20 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70N20 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70N20 Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70N20 Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70N20 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70N20 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70N20 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70N20 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70N20 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void MCAN0_Handler ( void ); +void MCAN1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI0_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70N20 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70N20 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70N20 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70N20 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70N20 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70N20 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70N20 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70N20 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70N20 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70N20 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70N20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70n20.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (64u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020C00UL) +#define CHIP_EXID (0x00000001UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70N20_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h new file mode 100644 index 00000000..e07d4d96 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h @@ -0,0 +1,672 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N20B_ +#define _SAME70N20B_ + +/** \addtogroup SAME70N20B_definitions SAME70N20B definitions + This file defines all structures and symbols for SAME70N20B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70N20B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70N20B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70N20B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70N20B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70N20B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70N20B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70N20B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70N20B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70N20B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70N20B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70N20B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70N20B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70N20B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70N20B USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70N20B USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70N20B Parallel I/O Controller D (PIOD) */ + HSMCI_IRQn = 18, /**< 18 SAME70N20B Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70N20B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70N20B Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70N20B Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70N20B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70N20B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70N20B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70N20B Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70N20B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70N20B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70N20B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70N20B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70N20B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70N20B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70N20B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70N20B Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70N20B Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70N20B Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70N20B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70N20B Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70N20B Two Wire Interface 2 HS (TWIHS2) */ + QSPI_IRQn = 43, /**< 43 SAME70N20B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70N20B UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70N20B UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70N20B UART 4 (UART4) */ + TC9_IRQn = 50, /**< 50 SAME70N20B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70N20B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70N20B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70N20B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70N20B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70N20B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70N20B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70N20B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70N20B Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70N20B Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70N20B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70N20B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70N20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70N20B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70N20B Floating Point Unit Registers (FPU) */ + I2SC0_IRQn = 69, /**< 69 SAME70N20B Inter-IC Sound Controller (I2SC0) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70N20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70N20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70N20B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pfnI2SC0_Handler; /* 69 Inter-IC Sound Controller (I2SC0) */ + void* pvReserved70; + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void I2SC0_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void MCAN0_Handler ( void ); +void MCAN1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI0_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70N20B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70N20B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70N20B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70N20B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70N20B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70N20B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70N20B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70N20B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70N20B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70N20 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70N20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/i2sc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/i2sc0.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ +#define ID_I2SC0 (69) /**< \brief Inter-IC Sound controller (I2SC0) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 (0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 ((I2sc *)0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N20B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70n20b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70N20 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (64u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020C01UL) +#define CHIP_EXID (0x00000001UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70N20B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70N20B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h new file mode 100644 index 00000000..f8fd282b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h @@ -0,0 +1,657 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N21_ +#define _SAME70N21_ + +/** \addtogroup SAME70N21_definitions SAME70N21 definitions + This file defines all structures and symbols for SAME70N21: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70N21 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70N21 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70N21 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70N21 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70N21 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70N21 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70N21 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70N21 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70N21 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70N21 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70N21 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70N21 Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70N21 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70N21 USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70N21 USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70N21 Parallel I/O Controller D (PIOD) */ + HSMCI_IRQn = 18, /**< 18 SAME70N21 Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70N21 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70N21 Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70N21 Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70N21 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70N21 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70N21 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70N21 Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70N21 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70N21 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70N21 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70N21 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70N21 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70N21 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70N21 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70N21 Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70N21 Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70N21 Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70N21 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70N21 Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70N21 Two Wire Interface 2 HS (TWIHS2) */ + QSPI_IRQn = 43, /**< 43 SAME70N21 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70N21 UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70N21 UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70N21 UART 4 (UART4) */ + TC9_IRQn = 50, /**< 50 SAME70N21 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70N21 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70N21 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70N21 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70N21 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70N21 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70N21 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70N21 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70N21 Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70N21 Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70N21 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70N21 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70N21 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70N21 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70N21 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI0_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70N21 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70N21 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70N21 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70N21 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70N21 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70N21 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70N21 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70N21 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70N21 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70N21 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70N21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70n21.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x200000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (4096u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020E00UL) +#define CHIP_EXID (0x00000001UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70N21_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h new file mode 100644 index 00000000..bfc398b2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h @@ -0,0 +1,670 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70N21B_ +#define _SAME70N21B_ + +/** \addtogroup SAME70N21B_definitions SAME70N21B definitions + This file defines all structures and symbols for SAME70N21B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70N21B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70N21B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70N21B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70N21B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70N21B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70N21B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70N21B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70N21B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70N21B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70N21B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70N21B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70N21B Parallel I/O Controller B (PIOB) */ + USART0_IRQn = 13, /**< 13 SAME70N21B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70N21B USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70N21B USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70N21B Parallel I/O Controller D (PIOD) */ + HSMCI_IRQn = 18, /**< 18 SAME70N21B Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70N21B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70N21B Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70N21B Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70N21B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70N21B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70N21B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70N21B Timer/Counter 2 (TC2) */ + AFEC0_IRQn = 29, /**< 29 SAME70N21B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70N21B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70N21B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70N21B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70N21B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70N21B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70N21B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70N21B Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70N21B Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70N21B Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70N21B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70N21B Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70N21B Two Wire Interface 2 HS (TWIHS2) */ + QSPI_IRQn = 43, /**< 43 SAME70N21B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70N21B UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70N21B UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70N21B UART 4 (UART4) */ + TC9_IRQn = 50, /**< 50 SAME70N21B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70N21B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70N21B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70N21B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70N21B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70N21B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70N21B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70N21B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70N21B Floating Point Unit Registers (FPU) */ + RSWDT_IRQn = 63, /**< 63 SAME70N21B Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70N21B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70N21B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70N21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70N21B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70N21B Floating Point Unit Registers (FPU) */ + I2SC0_IRQn = 69, /**< 69 SAME70N21B Inter-IC Sound Controller (I2SC0) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70N21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70N21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70N21B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pvReserved12; + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pvReserved17; + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pvReserved26; + void* pvReserved27; + void* pvReserved28; + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pvReserved42; + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pvReserved47; + void* pvReserved48; + void* pvReserved49; + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pvReserved62; + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pfnI2SC0_Handler; /* 69 Inter-IC Sound Controller (I2SC0) */ + void* pvReserved70; + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void I2SC0_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOD_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SPI0_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70N21B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70N21B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70N21B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70N21B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70N21B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70N21B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70N21B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70N21B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70N21B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70N21 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70N21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/i2sc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/matrix.h" +#include "instance/i2sc0.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/piod.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ +#define ID_I2SC0 (69) /**< \brief Inter-IC Sound controller (I2SC0) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 (0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 ((I2sc *)0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70N21B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70n21b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70N21 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x200000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (4096u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020E01UL) +#define CHIP_EXID (0x00000001UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70N21B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70N21B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h new file mode 100644 index 00000000..82aac3b2 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h @@ -0,0 +1,715 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70Q19_ +#define _SAME70Q19_ + +/** \addtogroup SAME70Q19_definitions SAME70Q19 definitions + This file defines all structures and symbols for SAME70Q19: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70Q19 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70Q19 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70Q19 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70Q19 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70Q19 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70Q19 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70Q19 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70Q19 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70Q19 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70Q19 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70Q19 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70Q19 Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAME70Q19 Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAME70Q19 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70Q19 USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70Q19 USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70Q19 Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 17, /**< 17 SAME70Q19 Parallel I/O Controller E (PIOE) */ + HSMCI_IRQn = 18, /**< 18 SAME70Q19 Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70Q19 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70Q19 Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70Q19 Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70Q19 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70Q19 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70Q19 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70Q19 Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAME70Q19 Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAME70Q19 Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAME70Q19 Timer/Counter 5 (TC5) */ + AFEC0_IRQn = 29, /**< 29 SAME70Q19 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70Q19 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70Q19 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70Q19 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70Q19 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70Q19 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70Q19 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70Q19 Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70Q19 Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70Q19 Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70Q19 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70Q19 Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70Q19 Two Wire Interface 2 HS (TWIHS2) */ + SPI1_IRQn = 42, /**< 42 SAME70Q19 Serial Peripheral Interface 1 (SPI1) */ + QSPI_IRQn = 43, /**< 43 SAME70Q19 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70Q19 UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70Q19 UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70Q19 UART 4 (UART4) */ + TC6_IRQn = 47, /**< 47 SAME70Q19 Timer/Counter 6 (TC6) */ + TC7_IRQn = 48, /**< 48 SAME70Q19 Timer/Counter 7 (TC7) */ + TC8_IRQn = 49, /**< 49 SAME70Q19 Timer/Counter 8 (TC8) */ + TC9_IRQn = 50, /**< 50 SAME70Q19 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70Q19 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70Q19 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70Q19 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70Q19 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70Q19 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70Q19 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70Q19 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70Q19 Floating Point Unit Registers (FPU) */ + SDRAMC_IRQn = 62, /**< 62 SAME70Q19 SDRAM Controller (SDRAMC) */ + RSWDT_IRQn = 63, /**< 63 SAME70Q19 Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70Q19 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70Q19 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70Q19 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70Q19 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70Q19 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 12 Parallel I/O Controller C */ + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 17 Parallel I/O Controller E */ + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 26 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 27 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 28 Timer/Counter 5 */ + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pfnSPI1_Handler; /* 42 Serial Peripheral Interface 1 */ + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pfnTC6_Handler; /* 47 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 48 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 49 Timer/Counter 8 */ + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pfnSDRAMC_Handler; /* 62 SDRAM Controller (SDRAMC) */ + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SDRAMC_Handler ( void ); +void SPI0_Handler ( void ); +void SPI1_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70Q19 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70Q19 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70Q19 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70Q19 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70Q19 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70Q19 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70Q19 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70Q19 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70Q19 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70Q19 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70Q19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/sdramc.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/spi1.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/smc.h" +#include "instance/sdramc.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (17) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_SPI1 (42) /**< \brief Serial Peripheral Interface 1 (SPI1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC6 (47) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (48) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (49) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_SDRAMC (62) /**< \brief SDRAM Controller (SDRAMC) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 (0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC (0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 ((Spi *)0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC ((Smc *)0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70q19.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (32u) +#define IRAM_SIZE (0x40000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA10D0A00UL) +#define CHIP_EXID (0x00000002UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70Q19 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70Q19_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h new file mode 100644 index 00000000..b7bb92ae --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h @@ -0,0 +1,734 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef _SAME70Q19B_ +#define _SAME70Q19B_ + +/** \addtogroup SAME70Q19B_definitions SAME70Q19B definitions + This file defines all structures and symbols for SAME70Q19B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70Q19B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70Q19B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70Q19B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70Q19B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70Q19B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70Q19B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70Q19B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70Q19B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70Q19B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70Q19B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70Q19B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70Q19B Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAME70Q19B Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAME70Q19B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70Q19B USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70Q19B USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70Q19B Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 17, /**< 17 SAME70Q19B Parallel I/O Controller E (PIOE) */ + HSMCI_IRQn = 18, /**< 18 SAME70Q19B Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70Q19B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70Q19B Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70Q19B Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70Q19B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70Q19B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70Q19B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70Q19B Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAME70Q19B Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAME70Q19B Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAME70Q19B Timer/Counter 5 (TC5) */ + AFEC0_IRQn = 29, /**< 29 SAME70Q19B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70Q19B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70Q19B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70Q19B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70Q19B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70Q19B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70Q19B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70Q19B Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70Q19B Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70Q19B Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70Q19B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70Q19B Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70Q19B Two Wire Interface 2 HS (TWIHS2) */ + SPI1_IRQn = 42, /**< 42 SAME70Q19B Serial Peripheral Interface 1 (SPI1) */ + QSPI_IRQn = 43, /**< 43 SAME70Q19B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70Q19B UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70Q19B UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70Q19B UART 4 (UART4) */ + TC6_IRQn = 47, /**< 47 SAME70Q19B Timer/Counter 6 (TC6) */ + TC7_IRQn = 48, /**< 48 SAME70Q19B Timer/Counter 7 (TC7) */ + TC8_IRQn = 49, /**< 49 SAME70Q19B Timer/Counter 8 (TC8) */ + TC9_IRQn = 50, /**< 50 SAME70Q19B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70Q19B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70Q19B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70Q19B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70Q19B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70Q19B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70Q19B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70Q19B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70Q19B Floating Point Unit Registers (FPU) */ + SDRAMC_IRQn = 62, /**< 62 SAME70Q19B SDRAM Controller (SDRAMC) */ + RSWDT_IRQn = 63, /**< 63 SAME70Q19B Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70Q19B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70Q19B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70Q19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70Q19B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70Q19B Floating Point Unit Registers (FPU) */ + I2SC0_IRQn = 69, /**< 69 SAME70Q19B Inter-IC Sound Controller (I2SC0) */ + I2SC1_IRQn = 70, /**< 70 SAME70Q19B Inter-IC Sound Controller (I2SC1) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70Q19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70Q19B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70Q19B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 12 Parallel I/O Controller C */ + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 17 Parallel I/O Controller E */ + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 26 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 27 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 28 Timer/Counter 5 */ + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pfnSPI1_Handler; /* 42 Serial Peripheral Interface 1 */ + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pfnTC6_Handler; /* 47 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 48 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 49 Timer/Counter 8 */ + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pfnSDRAMC_Handler; /* 62 SDRAM Controller (SDRAMC) */ + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pfnI2SC0_Handler; /* 69 Inter-IC Sound Controller (I2SC0) */ + void* pfnI2SC1_Handler; /* 70 Inter-IC Sound Controller (I2SC1) */ + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void I2SC0_Handler ( void ); +void I2SC1_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SDRAMC_Handler ( void ); +void SPI0_Handler ( void ); +void SPI1_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70Q19B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70Q19B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70Q19B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70Q19B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70Q19B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70Q19B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70Q19B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70Q19B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70Q19B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70Q19 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70Q19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/i2sc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/sdramc.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/spi1.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/smc.h" +#include "instance/sdramc.h" +#include "instance/matrix.h" +#include "instance/i2sc0.h" +#include "instance/i2sc1.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (17) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_SPI1 (42) /**< \brief Serial Peripheral Interface 1 (SPI1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC6 (47) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (48) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (49) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_SDRAMC (62) /**< \brief SDRAM Controller (SDRAMC) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ +#define ID_I2SC0 (69) /**< \brief Inter-IC Sound controller (I2SC0) */ +#define ID_I2SC1 (70) /**< \brief Inter-IC Sound controller (I2SC1) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 (0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC (0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 (0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define I2SC1 (0x40090000U) /**< \brief (I2SC1 ) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 ((Spi *)0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC ((Smc *)0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 ((I2sc *)0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define I2SC1 ((I2sc *)0x40090000U) /**< \brief (I2SC1 ) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q19B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70q19b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x80000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (1024u) +#define IFLASH_NB_OF_LOCK_BITS (32u) +#define IRAM_SIZE (0x40000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA10D0A01UL) +#define CHIP_EXID (0x00000002UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70Q19B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70Q19B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h new file mode 100644 index 00000000..cc1742b7 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h @@ -0,0 +1,716 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q20_ +#define _SAME70Q20_ + +/** \addtogroup SAME70Q20_definitions SAME70Q20 definitions + This file defines all structures and symbols for SAME70Q20: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70Q20 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70Q20 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70Q20 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70Q20 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70Q20 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70Q20 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70Q20 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70Q20 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70Q20 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70Q20 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70Q20 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70Q20 Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAME70Q20 Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAME70Q20 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70Q20 USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70Q20 USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70Q20 Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 17, /**< 17 SAME70Q20 Parallel I/O Controller E (PIOE) */ + HSMCI_IRQn = 18, /**< 18 SAME70Q20 Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70Q20 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70Q20 Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70Q20 Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70Q20 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70Q20 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70Q20 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70Q20 Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAME70Q20 Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAME70Q20 Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAME70Q20 Timer/Counter 5 (TC5) */ + AFEC0_IRQn = 29, /**< 29 SAME70Q20 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70Q20 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70Q20 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70Q20 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70Q20 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70Q20 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70Q20 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70Q20 Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70Q20 Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70Q20 Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70Q20 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70Q20 Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70Q20 Two Wire Interface 2 HS (TWIHS2) */ + SPI1_IRQn = 42, /**< 42 SAME70Q20 Serial Peripheral Interface 1 (SPI1) */ + QSPI_IRQn = 43, /**< 43 SAME70Q20 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70Q20 UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70Q20 UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70Q20 UART 4 (UART4) */ + TC6_IRQn = 47, /**< 47 SAME70Q20 Timer/Counter 6 (TC6) */ + TC7_IRQn = 48, /**< 48 SAME70Q20 Timer/Counter 7 (TC7) */ + TC8_IRQn = 49, /**< 49 SAME70Q20 Timer/Counter 8 (TC8) */ + TC9_IRQn = 50, /**< 50 SAME70Q20 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70Q20 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70Q20 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70Q20 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70Q20 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70Q20 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70Q20 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70Q20 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70Q20 Floating Point Unit Registers (FPU) */ + SDRAMC_IRQn = 62, /**< 62 SAME70Q20 SDRAM Controller (SDRAMC) */ + RSWDT_IRQn = 63, /**< 63 SAME70Q20 Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70Q20 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70Q20 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70Q20 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70Q20 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70Q20 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 12 Parallel I/O Controller C */ + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 17 Parallel I/O Controller E */ + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 26 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 27 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 28 Timer/Counter 5 */ + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pfnSPI1_Handler; /* 42 Serial Peripheral Interface 1 */ + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pfnTC6_Handler; /* 47 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 48 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 49 Timer/Counter 8 */ + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pfnSDRAMC_Handler; /* 62 SDRAM Controller (SDRAMC) */ + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SDRAMC_Handler ( void ); +void SPI0_Handler ( void ); +void SPI1_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70Q20 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70Q20 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70Q20 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70Q20 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70Q20 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70Q20 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70Q20 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70Q20 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70Q20 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70Q20 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70Q20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/sdramc.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/spi1.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/smc.h" +#include "instance/sdramc.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (17) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_SPI1 (42) /**< \brief Serial Peripheral Interface 1 (SPI1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC6 (47) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (48) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (49) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_SDRAMC (62) /**< \brief SDRAM Controller (SDRAMC) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 (0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC (0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 ((Spi *)0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC ((Smc *)0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70q20.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (64u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020C01UL) +#define CHIP_EXID (0x00000002UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70Q20 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70Q20_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h new file mode 100644 index 00000000..59e0e9e7 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h @@ -0,0 +1,735 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q20B_ +#define _SAME70Q20B_ + +/** \addtogroup SAME70Q20B_definitions SAME70Q20B definitions + This file defines all structures and symbols for SAME70Q20B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70Q20B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70Q20B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70Q20B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70Q20B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70Q20B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70Q20B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70Q20B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70Q20B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70Q20B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70Q20B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70Q20B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70Q20B Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAME70Q20B Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAME70Q20B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70Q20B USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70Q20B USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70Q20B Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 17, /**< 17 SAME70Q20B Parallel I/O Controller E (PIOE) */ + HSMCI_IRQn = 18, /**< 18 SAME70Q20B Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70Q20B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70Q20B Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70Q20B Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70Q20B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70Q20B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70Q20B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70Q20B Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAME70Q20B Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAME70Q20B Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAME70Q20B Timer/Counter 5 (TC5) */ + AFEC0_IRQn = 29, /**< 29 SAME70Q20B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70Q20B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70Q20B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70Q20B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70Q20B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70Q20B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70Q20B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70Q20B Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70Q20B Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70Q20B Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70Q20B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70Q20B Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70Q20B Two Wire Interface 2 HS (TWIHS2) */ + SPI1_IRQn = 42, /**< 42 SAME70Q20B Serial Peripheral Interface 1 (SPI1) */ + QSPI_IRQn = 43, /**< 43 SAME70Q20B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70Q20B UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70Q20B UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70Q20B UART 4 (UART4) */ + TC6_IRQn = 47, /**< 47 SAME70Q20B Timer/Counter 6 (TC6) */ + TC7_IRQn = 48, /**< 48 SAME70Q20B Timer/Counter 7 (TC7) */ + TC8_IRQn = 49, /**< 49 SAME70Q20B Timer/Counter 8 (TC8) */ + TC9_IRQn = 50, /**< 50 SAME70Q20B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70Q20B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70Q20B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70Q20B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70Q20B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70Q20B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70Q20B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70Q20B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70Q20B Floating Point Unit Registers (FPU) */ + SDRAMC_IRQn = 62, /**< 62 SAME70Q20B SDRAM Controller (SDRAMC) */ + RSWDT_IRQn = 63, /**< 63 SAME70Q20B Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70Q20B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70Q20B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70Q20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70Q20B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70Q20B Floating Point Unit Registers (FPU) */ + I2SC0_IRQn = 69, /**< 69 SAME70Q20B Inter-IC Sound Controller (I2SC0) */ + I2SC1_IRQn = 70, /**< 70 SAME70Q20B Inter-IC Sound Controller (I2SC1) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70Q20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70Q20B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70Q20B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 12 Parallel I/O Controller C */ + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 17 Parallel I/O Controller E */ + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 26 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 27 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 28 Timer/Counter 5 */ + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pfnSPI1_Handler; /* 42 Serial Peripheral Interface 1 */ + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pfnTC6_Handler; /* 47 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 48 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 49 Timer/Counter 8 */ + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pfnSDRAMC_Handler; /* 62 SDRAM Controller (SDRAMC) */ + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pfnI2SC0_Handler; /* 69 Inter-IC Sound Controller (I2SC0) */ + void* pfnI2SC1_Handler; /* 70 Inter-IC Sound Controller (I2SC1) */ + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void I2SC0_Handler ( void ); +void I2SC1_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SDRAMC_Handler ( void ); +void SPI0_Handler ( void ); +void SPI1_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70Q20B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70Q20B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70Q20B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70Q20B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70Q20B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70Q20B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70Q20B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70Q20B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70Q20B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70Q20 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70Q20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/i2sc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/sdramc.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/spi1.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/smc.h" +#include "instance/sdramc.h" +#include "instance/matrix.h" +#include "instance/i2sc0.h" +#include "instance/i2sc1.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (17) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_SPI1 (42) /**< \brief Serial Peripheral Interface 1 (SPI1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC6 (47) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (48) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (49) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_SDRAMC (62) /**< \brief SDRAM Controller (SDRAMC) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ +#define ID_I2SC0 (69) /**< \brief Inter-IC Sound controller (I2SC0) */ +#define ID_I2SC1 (70) /**< \brief Inter-IC Sound controller (I2SC1) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 (0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC (0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 (0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define I2SC1 (0x40090000U) /**< \brief (I2SC1 ) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 ((Spi *)0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC ((Smc *)0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 ((I2sc *)0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define I2SC1 ((I2sc *)0x40090000U) /**< \brief (I2SC1 ) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q20B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70q20b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x100000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (2048u) +#define IFLASH_NB_OF_LOCK_BITS (64u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020C01UL) +#define CHIP_EXID (0x00000002UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70Q20B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70Q20B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h new file mode 100644 index 00000000..f9459965 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h @@ -0,0 +1,716 @@ +/** + * \file + * + * Copyright (c) 2015-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q21_ +#define _SAME70Q21_ + +/** \addtogroup SAME70Q21_definitions SAME70Q21 definitions + This file defines all structures and symbols for SAME70Q21: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70Q21 specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70Q21 Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70Q21 Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70Q21 Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70Q21 Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70Q21 Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70Q21 Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70Q21 Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70Q21 UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70Q21 UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70Q21 Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70Q21 Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAME70Q21 Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAME70Q21 USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70Q21 USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70Q21 USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70Q21 Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 17, /**< 17 SAME70Q21 Parallel I/O Controller E (PIOE) */ + HSMCI_IRQn = 18, /**< 18 SAME70Q21 Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70Q21 Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70Q21 Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70Q21 Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70Q21 Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70Q21 Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70Q21 Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70Q21 Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAME70Q21 Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAME70Q21 Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAME70Q21 Timer/Counter 5 (TC5) */ + AFEC0_IRQn = 29, /**< 29 SAME70Q21 Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70Q21 Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70Q21 Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70Q21 Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70Q21 Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70Q21 USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70Q21 Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70Q21 Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70Q21 Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70Q21 Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70Q21 Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70Q21 Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70Q21 Two Wire Interface 2 HS (TWIHS2) */ + SPI1_IRQn = 42, /**< 42 SAME70Q21 Serial Peripheral Interface 1 (SPI1) */ + QSPI_IRQn = 43, /**< 43 SAME70Q21 Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70Q21 UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70Q21 UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70Q21 UART 4 (UART4) */ + TC6_IRQn = 47, /**< 47 SAME70Q21 Timer/Counter 6 (TC6) */ + TC7_IRQn = 48, /**< 48 SAME70Q21 Timer/Counter 7 (TC7) */ + TC8_IRQn = 49, /**< 49 SAME70Q21 Timer/Counter 8 (TC8) */ + TC9_IRQn = 50, /**< 50 SAME70Q21 Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70Q21 Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70Q21 Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70Q21 AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70Q21 True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70Q21 DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70Q21 Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70Q21 Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70Q21 Floating Point Unit Registers (FPU) */ + SDRAMC_IRQn = 62, /**< 62 SAME70Q21 SDRAM Controller (SDRAMC) */ + RSWDT_IRQn = 63, /**< 63 SAME70Q21 Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70Q21 System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70Q21 System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70Q21 Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70Q21 Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70Q21 Floating Point Unit Registers (FPU) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 12 Parallel I/O Controller C */ + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 17 Parallel I/O Controller E */ + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 26 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 27 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 28 Timer/Counter 5 */ + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pfnSPI1_Handler; /* 42 Serial Peripheral Interface 1 */ + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pfnTC6_Handler; /* 47 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 48 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 49 Timer/Counter 8 */ + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pfnSDRAMC_Handler; /* 62 SDRAM Controller (SDRAMC) */ + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pvReserved69; + void* pvReserved70; + void* pvReserved71; + void* pvReserved72; + void* pvReserved73; +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SDRAMC_Handler ( void ); +void SPI0_Handler ( void ); +void SPI1_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70Q21 core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70Q21 does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70Q21 uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70Q21 does provide a FPU */ +#define __FPU_DP 1 /**< SAME70Q21 Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70Q21 does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70Q21 does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70Q21 does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70Q21 does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 0 /**< SAME70Q21 Revision A */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70Q21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/sdramc.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/spi1.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/smc.h" +#include "instance/sdramc.h" +#include "instance/matrix.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (17) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_SPI1 (42) /**< \brief Serial Peripheral Interface 1 (SPI1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC6 (47) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (48) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (49) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_SDRAMC (62) /**< \brief SDRAM Controller (SDRAMC) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 (0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC (0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 ((Spi *)0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC ((Smc *)0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70q21.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x200000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (4096u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020E00UL) +#define CHIP_EXID (0x00000002UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70Q21 */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70Q21_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h new file mode 100644 index 00000000..aee8699e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h @@ -0,0 +1,735 @@ +/** + * \file + * + * Copyright (c) 2017-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAME70Q21B_ +#define _SAME70Q21B_ + +/** \addtogroup SAME70Q21B_definitions SAME70Q21B definitions + This file defines all structures and symbols for SAME70Q21B: + - registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions +*/ +/*@{*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#include +#endif + +/* ************************************************************************** */ +/* CMSIS DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21B_cmsis CMSIS Definitions */ +/*@{*/ + +/**< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M7 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + MemoryManagement_IRQn = -12, /**< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /**< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /**< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /**< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 Cortex-M7 System Tick Interrupt */ +/****** SAME70Q21B specific Interrupt Numbers *********************************/ + + SUPC_IRQn = 0, /**< 0 SAME70Q21B Supply Controller (SUPC) */ + RSTC_IRQn = 1, /**< 1 SAME70Q21B Reset Controller (RSTC) */ + RTC_IRQn = 2, /**< 2 SAME70Q21B Real Time Clock (RTC) */ + RTT_IRQn = 3, /**< 3 SAME70Q21B Real Time Timer (RTT) */ + WDT_IRQn = 4, /**< 4 SAME70Q21B Watchdog Timer (WDT) */ + PMC_IRQn = 5, /**< 5 SAME70Q21B Power Management Controller (PMC) */ + EFC_IRQn = 6, /**< 6 SAME70Q21B Enhanced Embedded Flash Controller (EFC) */ + UART0_IRQn = 7, /**< 7 SAME70Q21B UART 0 (UART0) */ + UART1_IRQn = 8, /**< 8 SAME70Q21B UART 1 (UART1) */ + PIOA_IRQn = 10, /**< 10 SAME70Q21B Parallel I/O Controller A (PIOA) */ + PIOB_IRQn = 11, /**< 11 SAME70Q21B Parallel I/O Controller B (PIOB) */ + PIOC_IRQn = 12, /**< 12 SAME70Q21B Parallel I/O Controller C (PIOC) */ + USART0_IRQn = 13, /**< 13 SAME70Q21B USART 0 (USART0) */ + USART1_IRQn = 14, /**< 14 SAME70Q21B USART 1 (USART1) */ + USART2_IRQn = 15, /**< 15 SAME70Q21B USART 2 (USART2) */ + PIOD_IRQn = 16, /**< 16 SAME70Q21B Parallel I/O Controller D (PIOD) */ + PIOE_IRQn = 17, /**< 17 SAME70Q21B Parallel I/O Controller E (PIOE) */ + HSMCI_IRQn = 18, /**< 18 SAME70Q21B Multimedia Card Interface (HSMCI) */ + TWIHS0_IRQn = 19, /**< 19 SAME70Q21B Two Wire Interface 0 HS (TWIHS0) */ + TWIHS1_IRQn = 20, /**< 20 SAME70Q21B Two Wire Interface 1 HS (TWIHS1) */ + SPI0_IRQn = 21, /**< 21 SAME70Q21B Serial Peripheral Interface 0 (SPI0) */ + SSC_IRQn = 22, /**< 22 SAME70Q21B Synchronous Serial Controller (SSC) */ + TC0_IRQn = 23, /**< 23 SAME70Q21B Timer/Counter 0 (TC0) */ + TC1_IRQn = 24, /**< 24 SAME70Q21B Timer/Counter 1 (TC1) */ + TC2_IRQn = 25, /**< 25 SAME70Q21B Timer/Counter 2 (TC2) */ + TC3_IRQn = 26, /**< 26 SAME70Q21B Timer/Counter 3 (TC3) */ + TC4_IRQn = 27, /**< 27 SAME70Q21B Timer/Counter 4 (TC4) */ + TC5_IRQn = 28, /**< 28 SAME70Q21B Timer/Counter 5 (TC5) */ + AFEC0_IRQn = 29, /**< 29 SAME70Q21B Analog Front End 0 (AFEC0) */ + DACC_IRQn = 30, /**< 30 SAME70Q21B Digital To Analog Converter (DACC) */ + PWM0_IRQn = 31, /**< 31 SAME70Q21B Pulse Width Modulation 0 (PWM0) */ + ICM_IRQn = 32, /**< 32 SAME70Q21B Integrity Check Monitor (ICM) */ + ACC_IRQn = 33, /**< 33 SAME70Q21B Analog Comparator (ACC) */ + USBHS_IRQn = 34, /**< 34 SAME70Q21B USB Host / Device Controller (USBHS) */ + MCAN0_INT0_IRQn = 35, /**< 35 SAME70Q21B Controller Area Network (MCAN0) */ + MCAN0_INT1_IRQn = 36, /**< 36 SAME70Q21B Controller Area Network (MCAN0) */ + MCAN1_INT0_IRQn = 37, /**< 37 SAME70Q21B Controller Area Network (MCAN1) */ + MCAN1_INT1_IRQn = 38, /**< 38 SAME70Q21B Controller Area Network (MCAN1) */ + GMAC_IRQn = 39, /**< 39 SAME70Q21B Ethernet MAC (GMAC) */ + AFEC1_IRQn = 40, /**< 40 SAME70Q21B Analog Front End 1 (AFEC1) */ + TWIHS2_IRQn = 41, /**< 41 SAME70Q21B Two Wire Interface 2 HS (TWIHS2) */ + SPI1_IRQn = 42, /**< 42 SAME70Q21B Serial Peripheral Interface 1 (SPI1) */ + QSPI_IRQn = 43, /**< 43 SAME70Q21B Quad I/O Serial Peripheral Interface (QSPI) */ + UART2_IRQn = 44, /**< 44 SAME70Q21B UART 2 (UART2) */ + UART3_IRQn = 45, /**< 45 SAME70Q21B UART 3 (UART3) */ + UART4_IRQn = 46, /**< 46 SAME70Q21B UART 4 (UART4) */ + TC6_IRQn = 47, /**< 47 SAME70Q21B Timer/Counter 6 (TC6) */ + TC7_IRQn = 48, /**< 48 SAME70Q21B Timer/Counter 7 (TC7) */ + TC8_IRQn = 49, /**< 49 SAME70Q21B Timer/Counter 8 (TC8) */ + TC9_IRQn = 50, /**< 50 SAME70Q21B Timer/Counter 9 (TC9) */ + TC10_IRQn = 51, /**< 51 SAME70Q21B Timer/Counter 10 (TC10) */ + TC11_IRQn = 52, /**< 52 SAME70Q21B Timer/Counter 11 (TC11) */ + AES_IRQn = 56, /**< 56 SAME70Q21B AES (AES) */ + TRNG_IRQn = 57, /**< 57 SAME70Q21B True Random Generator (TRNG) */ + XDMAC_IRQn = 58, /**< 58 SAME70Q21B DMA (XDMAC) */ + ISI_IRQn = 59, /**< 59 SAME70Q21B Camera Interface (ISI) */ + PWM1_IRQn = 60, /**< 60 SAME70Q21B Pulse Width Modulation 1 (PWM1) */ + FPU_IRQn = 61, /**< 61 SAME70Q21B Floating Point Unit Registers (FPU) */ + SDRAMC_IRQn = 62, /**< 62 SAME70Q21B SDRAM Controller (SDRAMC) */ + RSWDT_IRQn = 63, /**< 63 SAME70Q21B Reinforced Safety Watchdog Timer (RSWDT) */ + CCW_IRQn = 64, /**< 64 SAME70Q21B System Control Registers (SystemControl) */ + CCF_IRQn = 65, /**< 65 SAME70Q21B System Control Registers (SystemControl) */ + GMAC_Q1_IRQn = 66, /**< 66 SAME70Q21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q2_IRQn = 67, /**< 67 SAME70Q21B Gigabit Ethernet MAC (GMAC) */ + IXC_IRQn = 68, /**< 68 SAME70Q21B Floating Point Unit Registers (FPU) */ + I2SC0_IRQn = 69, /**< 69 SAME70Q21B Inter-IC Sound Controller (I2SC0) */ + I2SC1_IRQn = 70, /**< 70 SAME70Q21B Inter-IC Sound Controller (I2SC1) */ + GMAC_Q3_IRQn = 71, /**< 71 SAME70Q21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q4_IRQn = 72, /**< 72 SAME70Q21B Gigabit Ethernet MAC (GMAC) */ + GMAC_Q5_IRQn = 73, /**< 73 SAME70Q21B Gigabit Ethernet MAC (GMAC) */ + + PERIPH_COUNT_IRQn = 74 /**< Number of peripheral IDs */ +} IRQn_Type; + +typedef struct _DeviceVectors +{ + /* Stack pointer */ + void* pvStack; + + /* Cortex-M handlers */ + void* pfnReset_Handler; + void* pfnNMI_Handler; + void* pfnHardFault_Handler; + void* pfnMemManage_Handler; + void* pfnBusFault_Handler; + void* pfnUsageFault_Handler; + void* pfnReserved1_Handler; + void* pfnReserved2_Handler; + void* pfnReserved3_Handler; + void* pfnReserved4_Handler; + void* pfnSVC_Handler; + void* pfnDebugMon_Handler; + void* pfnReserved5_Handler; + void* pfnPendSV_Handler; + void* pfnSysTick_Handler; + + /* Peripheral handlers */ + void* pfnSUPC_Handler; /* 0 Supply Controller */ + void* pfnRSTC_Handler; /* 1 Reset Controller */ + void* pfnRTC_Handler; /* 2 Real Time Clock */ + void* pfnRTT_Handler; /* 3 Real Time Timer */ + void* pfnWDT_Handler; /* 4 Watchdog Timer */ + void* pfnPMC_Handler; /* 5 Power Management Controller */ + void* pfnEFC_Handler; /* 6 Enhanced Embedded Flash Controller */ + void* pfnUART0_Handler; /* 7 UART 0 */ + void* pfnUART1_Handler; /* 8 UART 1 */ + void* pvReserved9; + void* pfnPIOA_Handler; /* 10 Parallel I/O Controller A */ + void* pfnPIOB_Handler; /* 11 Parallel I/O Controller B */ + void* pfnPIOC_Handler; /* 12 Parallel I/O Controller C */ + void* pfnUSART0_Handler; /* 13 USART 0 */ + void* pfnUSART1_Handler; /* 14 USART 1 */ + void* pfnUSART2_Handler; /* 15 USART 2 */ + void* pfnPIOD_Handler; /* 16 Parallel I/O Controller D */ + void* pfnPIOE_Handler; /* 17 Parallel I/O Controller E */ + void* pfnHSMCI_Handler; /* 18 Multimedia Card Interface */ + void* pfnTWIHS0_Handler; /* 19 Two Wire Interface 0 HS */ + void* pfnTWIHS1_Handler; /* 20 Two Wire Interface 1 HS */ + void* pfnSPI0_Handler; /* 21 Serial Peripheral Interface 0 */ + void* pfnSSC_Handler; /* 22 Synchronous Serial Controller */ + void* pfnTC0_Handler; /* 23 Timer/Counter 0 */ + void* pfnTC1_Handler; /* 24 Timer/Counter 1 */ + void* pfnTC2_Handler; /* 25 Timer/Counter 2 */ + void* pfnTC3_Handler; /* 26 Timer/Counter 3 */ + void* pfnTC4_Handler; /* 27 Timer/Counter 4 */ + void* pfnTC5_Handler; /* 28 Timer/Counter 5 */ + void* pfnAFEC0_Handler; /* 29 Analog Front End 0 */ + void* pfnDACC_Handler; /* 30 Digital To Analog Converter */ + void* pfnPWM0_Handler; /* 31 Pulse Width Modulation 0 */ + void* pfnICM_Handler; /* 32 Integrity Check Monitor */ + void* pfnACC_Handler; /* 33 Analog Comparator */ + void* pfnUSBHS_Handler; /* 34 USB Host / Device Controller */ + void* pfnMCAN0_INT0_Handler; /* 35 Controller Area Network (MCAN0) */ + void* pfnMCAN0_INT1_Handler; /* 36 Controller Area Network (MCAN0) */ + void* pfnMCAN1_INT0_Handler; /* 37 Controller Area Network (MCAN1) */ + void* pfnMCAN1_INT1_Handler; /* 38 Controller Area Network (MCAN1) */ + void* pfnGMAC_Handler; /* 39 Ethernet MAC */ + void* pfnAFEC1_Handler; /* 40 Analog Front End 1 */ + void* pfnTWIHS2_Handler; /* 41 Two Wire Interface 2 HS */ + void* pfnSPI1_Handler; /* 42 Serial Peripheral Interface 1 */ + void* pfnQSPI_Handler; /* 43 Quad I/O Serial Peripheral Interface */ + void* pfnUART2_Handler; /* 44 UART 2 */ + void* pfnUART3_Handler; /* 45 UART 3 */ + void* pfnUART4_Handler; /* 46 UART 4 */ + void* pfnTC6_Handler; /* 47 Timer/Counter 6 */ + void* pfnTC7_Handler; /* 48 Timer/Counter 7 */ + void* pfnTC8_Handler; /* 49 Timer/Counter 8 */ + void* pfnTC9_Handler; /* 50 Timer/Counter 9 */ + void* pfnTC10_Handler; /* 51 Timer/Counter 10 */ + void* pfnTC11_Handler; /* 52 Timer/Counter 11 */ + void* pvReserved53; + void* pvReserved54; + void* pvReserved55; + void* pfnAES_Handler; /* 56 AES */ + void* pfnTRNG_Handler; /* 57 True Random Generator */ + void* pfnXDMAC_Handler; /* 58 DMA */ + void* pfnISI_Handler; /* 59 Camera Interface */ + void* pfnPWM1_Handler; /* 60 Pulse Width Modulation 1 */ + void* pfnFPU_Handler; /* 61 Floating Point Unit Registers (FPU) */ + void* pfnSDRAMC_Handler; /* 62 SDRAM Controller (SDRAMC) */ + void* pfnRSWDT_Handler; /* 63 Reinforced Safety Watchdog Timer (RSWDT) */ + void* pfnCCW_Handler; /* 64 System Control Registers (SystemControl) */ + void* pfnCCF_Handler; /* 65 System Control Registers (SystemControl) */ + void* pfnGMAC_Q1_Handler;/* 66 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q2_Handler;/* 67 Gigabit Ethernet MAC (GMAC) */ + void* pfnIXC_Handler; /* 68 Floating Point Unit Registers (FPU) */ + void* pfnI2SC0_Handler; /* 69 Inter-IC Sound Controller (I2SC0) */ + void* pfnI2SC1_Handler; /* 70 Inter-IC Sound Controller (I2SC1) */ + void* pfnGMAC_Q3_Handler;/* 71 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q4_Handler;/* 72 Gigabit Ethernet MAC (GMAC) */ + void* pfnGMAC_Q5_Handler;/* 73 Gigabit Ethernet MAC (GMAC) */ +} DeviceVectors; + +/* Cortex-M7 core handlers */ +void Reset_Handler ( void ); +void NMI_Handler ( void ); +void HardFault_Handler ( void ); +void MemManage_Handler ( void ); +void BusFault_Handler ( void ); +void UsageFault_Handler ( void ); +void SVC_Handler ( void ); +void DebugMon_Handler ( void ); +void PendSV_Handler ( void ); +void SysTick_Handler ( void ); + +/* Peripherals handlers */ +void ACC_Handler ( void ); +void AES_Handler ( void ); +void AFEC0_Handler ( void ); +void AFEC1_Handler ( void ); +void CCF_Handler ( void ); +void CCW_Handler ( void ); +void DACC_Handler ( void ); +void EFC_Handler ( void ); +void FPU_Handler ( void ); +void GMAC_Handler ( void ); +void HSMCI_Handler ( void ); +void ICM_Handler ( void ); +void ISI_Handler ( void ); +void I2SC0_Handler ( void ); +void I2SC1_Handler ( void ); +void IXC_Handler ( void ); +void MCAN0_INT0_Handler ( void ); +void MCAN0_INT1_Handler ( void ); +void MCAN1_INT0_Handler ( void ); +void MCAN1_INT1_Handler ( void ); +void PIOA_Handler ( void ); +void PIOB_Handler ( void ); +void PIOC_Handler ( void ); +void PIOD_Handler ( void ); +void PIOE_Handler ( void ); +void PMC_Handler ( void ); +void PWM0_Handler ( void ); +void PWM1_Handler ( void ); +void GMAC_Q1_Handler ( void ); +void GMAC_Q2_Handler ( void ); +void GMAC_Q3_Handler ( void ); +void GMAC_Q4_Handler ( void ); +void GMAC_Q5_Handler ( void ); +void QSPI_Handler ( void ); +void RSTC_Handler ( void ); +void RSWDT_Handler ( void ); +void RTC_Handler ( void ); +void RTT_Handler ( void ); +void SDRAMC_Handler ( void ); +void SPI0_Handler ( void ); +void SPI1_Handler ( void ); +void SSC_Handler ( void ); +void SUPC_Handler ( void ); +void TC0_Handler ( void ); +void TC1_Handler ( void ); +void TC2_Handler ( void ); +void TC3_Handler ( void ); +void TC4_Handler ( void ); +void TC5_Handler ( void ); +void TC6_Handler ( void ); +void TC7_Handler ( void ); +void TC8_Handler ( void ); +void TC9_Handler ( void ); +void TC10_Handler ( void ); +void TC11_Handler ( void ); +void TRNG_Handler ( void ); +void TWIHS0_Handler ( void ); +void TWIHS1_Handler ( void ); +void TWIHS2_Handler ( void ); +void UART0_Handler ( void ); +void UART1_Handler ( void ); +void UART2_Handler ( void ); +void UART3_Handler ( void ); +void UART4_Handler ( void ); +void USART0_Handler ( void ); +void USART1_Handler ( void ); +void USART2_Handler ( void ); +void USBHS_Handler ( void ); +void WDT_Handler ( void ); +void XDMAC_Handler ( void ); + +/** + * \brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ + +#define __CM7_REV 0x0000 /**< SAME70Q21B core revision number ([15:8] revision number, [7:0] patch number) */ +#define __MPU_PRESENT 1 /**< SAME70Q21B does provide a MPU */ +#define __NVIC_PRIO_BITS 3 /**< SAME70Q21B uses 3 Bits for the Priority Levels */ +#define __FPU_PRESENT 1 /**< SAME70Q21B does provide a FPU */ +#define __FPU_DP 1 /**< SAME70Q21B Double precision FPU */ +#define __ICACHE_PRESENT 1 /**< SAME70Q21B does provide an Instruction Cache */ +#define __DCACHE_PRESENT 1 /**< SAME70Q21B does provide a Data Cache */ +#define __DTCM_PRESENT 1 /**< SAME70Q21B does provide a Data TCM */ +#define __ITCM_PRESENT 1 /**< SAME70Q21B does provide an Instruction TCM */ +#define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used */ +#define __SAM_M7_REVB 1 /**< SAME70Q21 Revision B */ + +/* + * \brief CMSIS includes + */ + +#include +#if !defined DONT_USE_CMSIS_INIT +#include "system_same70.h" +#endif /* DONT_USE_CMSIS_INIT */ + +/*@}*/ + +/* ************************************************************************** */ +/** SOFTWARE PERIPHERAL API DEFINITION FOR SAME70Q21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21B_api Peripheral Software API */ +/*@{*/ + +#include "component/acc.h" +#include "component/aes.h" +#include "component/afec.h" +#include "component/chipid.h" +#include "component/dacc.h" +#include "component/efc.h" +#include "component/gmac.h" +#include "component/gpbr.h" +#include "component/hsmci.h" +#include "component/i2sc.h" +#include "component/icm.h" +#include "component/isi.h" +#include "component/matrix.h" +#include "component/mcan.h" +#include "component/pio.h" +#include "component/pmc.h" +#include "component/pwm.h" +#include "component/qspi.h" +#include "component/rstc.h" +#include "component/rswdt.h" +#include "component/rtc.h" +#include "component/rtt.h" +#include "component/sdramc.h" +#include "component/smc.h" +#include "component/spi.h" +#include "component/ssc.h" +#include "component/supc.h" +#include "component/tc.h" +#include "component/trng.h" +#include "component/twihs.h" +#include "component/uart.h" +#include "component/usart.h" +#include "component/usbhs.h" +#include "component/utmi.h" +#include "component/wdt.h" +#include "component/xdmac.h" +/*@}*/ + +/* ************************************************************************** */ +/* REGISTER ACCESS DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21B_reg Registers Access Definitions */ +/*@{*/ + +#include "instance/hsmci.h" +#include "instance/ssc.h" +#include "instance/spi0.h" +#include "instance/tc0.h" +#include "instance/tc1.h" +#include "instance/tc2.h" +#include "instance/twihs0.h" +#include "instance/twihs1.h" +#include "instance/pwm0.h" +#include "instance/usart0.h" +#include "instance/usart1.h" +#include "instance/usart2.h" +#include "instance/mcan0.h" +#include "instance/mcan1.h" +#include "instance/usbhs.h" +#include "instance/afec0.h" +#include "instance/dacc.h" +#include "instance/acc.h" +#include "instance/icm.h" +#include "instance/isi.h" +#include "instance/gmac.h" +#include "instance/tc3.h" +#include "instance/spi1.h" +#include "instance/pwm1.h" +#include "instance/twihs2.h" +#include "instance/afec1.h" +#include "instance/aes.h" +#include "instance/trng.h" +#include "instance/xdmac.h" +#include "instance/qspi.h" +#include "instance/smc.h" +#include "instance/sdramc.h" +#include "instance/matrix.h" +#include "instance/i2sc0.h" +#include "instance/i2sc1.h" +#include "instance/utmi.h" +#include "instance/pmc.h" +#include "instance/uart0.h" +#include "instance/chipid.h" +#include "instance/uart1.h" +#include "instance/efc.h" +#include "instance/pioa.h" +#include "instance/piob.h" +#include "instance/pioc.h" +#include "instance/piod.h" +#include "instance/pioe.h" +#include "instance/rstc.h" +#include "instance/supc.h" +#include "instance/rtt.h" +#include "instance/wdt.h" +#include "instance/rtc.h" +#include "instance/gpbr.h" +#include "instance/rswdt.h" +#include "instance/uart2.h" +#include "instance/uart3.h" +#include "instance/uart4.h" +/*@}*/ + +/* ************************************************************************** */ +/* PERIPHERAL ID DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21B_id Peripheral Ids Definitions */ +/*@{*/ + +#define ID_SUPC ( 0) /**< \brief Supply Controller (SUPC) */ +#define ID_RSTC ( 1) /**< \brief Reset Controller (RSTC) */ +#define ID_RTC ( 2) /**< \brief Real Time Clock (RTC) */ +#define ID_RTT ( 3) /**< \brief Real Time Timer (RTT) */ +#define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */ +#define ID_PMC ( 5) /**< \brief Power Management Controller (PMC) */ +#define ID_EFC ( 6) /**< \brief Enhanced Embedded Flash Controller (EFC) */ +#define ID_UART0 ( 7) /**< \brief UART 0 (UART0) */ +#define ID_UART1 ( 8) /**< \brief UART 1 (UART1) */ +#define ID_SMC ( 9) /**< \brief Static Memory Controller (SMC) */ +#define ID_PIOA (10) /**< \brief Parallel I/O Controller A (PIOA) */ +#define ID_PIOB (11) /**< \brief Parallel I/O Controller B (PIOB) */ +#define ID_PIOC (12) /**< \brief Parallel I/O Controller C (PIOC) */ +#define ID_USART0 (13) /**< \brief USART 0 (USART0) */ +#define ID_USART1 (14) /**< \brief USART 1 (USART1) */ +#define ID_USART2 (15) /**< \brief USART 2 (USART2) */ +#define ID_PIOD (16) /**< \brief Parallel I/O Controller D (PIOD) */ +#define ID_PIOE (17) /**< \brief Parallel I/O Controller E (PIOE) */ +#define ID_HSMCI (18) /**< \brief Multimedia Card Interface (HSMCI) */ +#define ID_TWIHS0 (19) /**< \brief Two Wire Interface 0 HS (TWIHS0) */ +#define ID_TWIHS1 (20) /**< \brief Two Wire Interface 1 HS (TWIHS1) */ +#define ID_SPI0 (21) /**< \brief Serial Peripheral Interface 0 (SPI0) */ +#define ID_SSC (22) /**< \brief Synchronous Serial Controller (SSC) */ +#define ID_TC0 (23) /**< \brief Timer/Counter 0 (TC0) */ +#define ID_TC1 (24) /**< \brief Timer/Counter 1 (TC1) */ +#define ID_TC2 (25) /**< \brief Timer/Counter 2 (TC2) */ +#define ID_TC3 (26) /**< \brief Timer/Counter 3 (TC3) */ +#define ID_TC4 (27) /**< \brief Timer/Counter 4 (TC4) */ +#define ID_TC5 (28) /**< \brief Timer/Counter 5 (TC5) */ +#define ID_AFEC0 (29) /**< \brief Analog Front End 0 (AFEC0) */ +#define ID_DACC (30) /**< \brief Digital To Analog Converter (DACC) */ +#define ID_PWM0 (31) /**< \brief Pulse Width Modulation 0 (PWM0) */ +#define ID_ICM (32) /**< \brief Integrity Check Monitor (ICM) */ +#define ID_ACC (33) /**< \brief Analog Comparator (ACC) */ +#define ID_USBHS (34) /**< \brief USB Host / Device Controller (USBHS) */ +#define ID_MCAN0 (35) /**< \brief MCAN Controller 0 (MCAN0) */ +#define ID_MCAN1 (37) /**< \brief MCAN Controller 1 (MCAN1) */ +#define ID_GMAC (39) /**< \brief Ethernet MAC (GMAC) */ +#define ID_AFEC1 (40) /**< \brief Analog Front End 1 (AFEC1) */ +#define ID_TWIHS2 (41) /**< \brief Two Wire Interface 2 HS (TWIHS2) */ +#define ID_SPI1 (42) /**< \brief Serial Peripheral Interface 1 (SPI1) */ +#define ID_QSPI (43) /**< \brief Quad I/O Serial Peripheral Interface (QSPI) */ +#define ID_UART2 (44) /**< \brief UART 2 (UART2) */ +#define ID_UART3 (45) /**< \brief UART 3 (UART3) */ +#define ID_UART4 (46) /**< \brief UART 4 (UART4) */ +#define ID_TC6 (47) /**< \brief Timer/Counter 6 (TC6) */ +#define ID_TC7 (48) /**< \brief Timer/Counter 7 (TC7) */ +#define ID_TC8 (49) /**< \brief Timer/Counter 8 (TC8) */ +#define ID_TC9 (50) /**< \brief Timer/Counter 9 (TC9) */ +#define ID_TC10 (51) /**< \brief Timer/Counter 10 (TC10) */ +#define ID_TC11 (52) /**< \brief Timer/Counter 11 (TC11) */ +#define ID_AES (56) /**< \brief AES (AES) */ +#define ID_TRNG (57) /**< \brief True Random Generator (TRNG) */ +#define ID_XDMAC (58) /**< \brief DMA (XDMAC) */ +#define ID_ISI (59) /**< \brief Camera Interface (ISI) */ +#define ID_PWM1 (60) /**< \brief Pulse Width Modulation 1 (PWM1) */ +#define ID_SDRAMC (62) /**< \brief SDRAM Controller (SDRAMC) */ +#define ID_RSWDT (63) /**< \brief Reinforced Secure Watchdog Timer (RSWDT) */ +#define ID_IXC (68) /**< \brief Floating Point Unit - IXC (ARM) */ +#define ID_I2SC0 (69) /**< \brief Inter-IC Sound controller (I2SC0) */ +#define ID_I2SC1 (70) /**< \brief Inter-IC Sound controller (I2SC1) */ + +#define ID_PERIPH_COUNT (74) /**< \brief Number of peripheral IDs */ +/*@}*/ + +/* ************************************************************************** */ +/* BASE ADDRESS DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21B_base Peripheral Base Address Definitions */ +/*@{*/ + +#if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) +#define HSMCI (0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC (0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 (0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 (0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 (0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 (0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 (0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 (0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 (0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 (0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 (0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 (0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 (0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 (0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS (0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 (0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC (0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC (0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM (0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI (0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC (0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 (0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 (0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 (0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 (0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 (0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES (0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG (0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC (0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI (0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC (0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC (0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX (0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 (0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define I2SC1 (0x40090000U) /**< \brief (I2SC1 ) Base Address */ +#define UTMI (0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC (0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 (0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID (0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 (0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC (0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA (0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB (0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC (0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD (0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE (0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC (0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC (0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT (0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT (0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC (0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR (0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT (0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 (0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 (0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 (0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#else +#define HSMCI ((Hsmci *)0x40000000U) /**< \brief (HSMCI ) Base Address */ +#define SSC ((Ssc *)0x40004000U) /**< \brief (SSC ) Base Address */ +#define SPI0 ((Spi *)0x40008000U) /**< \brief (SPI0 ) Base Address */ +#define TC0 ((Tc *)0x4000C000U) /**< \brief (TC0 ) Base Address */ +#define TC1 ((Tc *)0x40010000U) /**< \brief (TC1 ) Base Address */ +#define TC2 ((Tc *)0x40014000U) /**< \brief (TC2 ) Base Address */ +#define TWIHS0 ((Twihs *)0x40018000U) /**< \brief (TWIHS0) Base Address */ +#define TWIHS1 ((Twihs *)0x4001C000U) /**< \brief (TWIHS1) Base Address */ +#define PWM0 ((Pwm *)0x40020000U) /**< \brief (PWM0 ) Base Address */ +#define USART0 ((Usart *)0x40024000U) /**< \brief (USART0) Base Address */ +#define USART1 ((Usart *)0x40028000U) /**< \brief (USART1) Base Address */ +#define USART2 ((Usart *)0x4002C000U) /**< \brief (USART2) Base Address */ +#define MCAN0 ((Mcan *)0x40030000U) /**< \brief (MCAN0 ) Base Address */ +#define MCAN1 ((Mcan *)0x40034000U) /**< \brief (MCAN1 ) Base Address */ +#define USBHS ((Usbhs *)0x40038000U) /**< \brief (USBHS ) Base Address */ +#define AFEC0 ((Afec *)0x4003C000U) /**< \brief (AFEC0 ) Base Address */ +#define DACC ((Dacc *)0x40040000U) /**< \brief (DACC ) Base Address */ +#define ACC ((Acc *)0x40044000U) /**< \brief (ACC ) Base Address */ +#define ICM ((Icm *)0x40048000U) /**< \brief (ICM ) Base Address */ +#define ISI ((Isi *)0x4004C000U) /**< \brief (ISI ) Base Address */ +#define GMAC ((Gmac *)0x40050000U) /**< \brief (GMAC ) Base Address */ +#define TC3 ((Tc *)0x40054000U) /**< \brief (TC3 ) Base Address */ +#define SPI1 ((Spi *)0x40058000U) /**< \brief (SPI1 ) Base Address */ +#define PWM1 ((Pwm *)0x4005C000U) /**< \brief (PWM1 ) Base Address */ +#define TWIHS2 ((Twihs *)0x40060000U) /**< \brief (TWIHS2) Base Address */ +#define AFEC1 ((Afec *)0x40064000U) /**< \brief (AFEC1 ) Base Address */ +#define AES ((Aes *)0x4006C000U) /**< \brief (AES ) Base Address */ +#define TRNG ((Trng *)0x40070000U) /**< \brief (TRNG ) Base Address */ +#define XDMAC ((Xdmac *)0x40078000U) /**< \brief (XDMAC ) Base Address */ +#define QSPI ((Qspi *)0x4007C000U) /**< \brief (QSPI ) Base Address */ +#define SMC ((Smc *)0x40080000U) /**< \brief (SMC ) Base Address */ +#define SDRAMC ((Sdramc *)0x40084000U) /**< \brief (SDRAMC) Base Address */ +#define MATRIX ((Matrix *)0x40088000U) /**< \brief (MATRIX) Base Address */ +#define I2SC0 ((I2sc *)0x4008C000U) /**< \brief (I2SC0 ) Base Address */ +#define I2SC1 ((I2sc *)0x40090000U) /**< \brief (I2SC1 ) Base Address */ +#define UTMI ((Utmi *)0x400E0400U) /**< \brief (UTMI ) Base Address */ +#define PMC ((Pmc *)0x400E0600U) /**< \brief (PMC ) Base Address */ +#define UART0 ((Uart *)0x400E0800U) /**< \brief (UART0 ) Base Address */ +#define CHIPID ((Chipid *)0x400E0940U) /**< \brief (CHIPID) Base Address */ +#define UART1 ((Uart *)0x400E0A00U) /**< \brief (UART1 ) Base Address */ +#define EFC ((Efc *)0x400E0C00U) /**< \brief (EFC ) Base Address */ +#define PIOA ((Pio *)0x400E0E00U) /**< \brief (PIOA ) Base Address */ +#define PIOB ((Pio *)0x400E1000U) /**< \brief (PIOB ) Base Address */ +#define PIOC ((Pio *)0x400E1200U) /**< \brief (PIOC ) Base Address */ +#define PIOD ((Pio *)0x400E1400U) /**< \brief (PIOD ) Base Address */ +#define PIOE ((Pio *)0x400E1600U) /**< \brief (PIOE ) Base Address */ +#define RSTC ((Rstc *)0x400E1800U) /**< \brief (RSTC ) Base Address */ +#define SUPC ((Supc *)0x400E1810U) /**< \brief (SUPC ) Base Address */ +#define RTT ((Rtt *)0x400E1830U) /**< \brief (RTT ) Base Address */ +#define WDT ((Wdt *)0x400E1850U) /**< \brief (WDT ) Base Address */ +#define RTC ((Rtc *)0x400E1860U) /**< \brief (RTC ) Base Address */ +#define GPBR ((Gpbr *)0x400E1890U) /**< \brief (GPBR ) Base Address */ +#define RSWDT ((Rswdt *)0x400E1900U) /**< \brief (RSWDT ) Base Address */ +#define UART2 ((Uart *)0x400E1A00U) /**< \brief (UART2 ) Base Address */ +#define UART3 ((Uart *)0x400E1C00U) /**< \brief (UART3 ) Base Address */ +#define UART4 ((Uart *)0x400E1E00U) /**< \brief (UART4 ) Base Address */ +#endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ +/*@}*/ + +/* ************************************************************************** */ +/* PIO DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ +/** \addtogroup SAME70Q21B_pio Peripheral Pio Definitions */ +/*@{*/ + +#include "pio/same70q21b.h" +/*@}*/ + +/* ************************************************************************** */ +/* MEMORY MAPPING DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ + +#define IFLASH_SIZE (0x200000u) +#define IFLASH_PAGE_SIZE (512u) +#define IFLASH_LOCK_REGION_SIZE (16384u) +#define IFLASH_NB_OF_PAGES (4096u) +#define IFLASH_NB_OF_LOCK_BITS (128u) +#define IRAM_SIZE (0x60000u) + +#define QSPIMEM_ADDR (0x80000000u) /**< QSPI Memory base address */ +#define AXIMX_ADDR (0xA0000000u) /**< AXI Bus Matrix base address */ +#define ITCM_ADDR (0x00000000u) /**< Instruction Tightly Coupled Memory base address */ +#define IFLASH_ADDR (0x00400000u) /**< Internal Flash base address */ +#define IROM_ADDR (0x00800000u) /**< Internal ROM base address */ +#define DTCM_ADDR (0x20000000u) /**< Data Tightly Coupled Memory base address */ +#define IRAM_ADDR (0x20400000u) /**< Internal RAM base address */ +#define EBI_CS0_ADDR (0x60000000u) /**< EBI Chip Select 0 base address */ +#define EBI_CS1_ADDR (0x61000000u) /**< EBI Chip Select 1 base address */ +#define EBI_CS2_ADDR (0x62000000u) /**< EBI Chip Select 2 base address */ +#define EBI_CS3_ADDR (0x63000000u) /**< EBI Chip Select 3 base address */ +#define SDRAM_CS_ADDR (0x70000000u) /**< SDRAM Chip Select base address */ + +/* ************************************************************************** */ +/* MISCELLANEOUS DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ + +#define CHIP_JTAGID (0x05B3D03FUL) +#define CHIP_CIDR (0xA1020E01UL) +#define CHIP_EXID (0x00000002UL) + +/* ************************************************************************** */ +/* ELECTRICAL DEFINITIONS FOR SAME70Q21B */ +/* ************************************************************************** */ + +/* %ATMEL_ELECTRICAL% */ + +/* Device characteristics */ +#define CHIP_FREQ_SLCK_RC_MIN (20000UL) +#define CHIP_FREQ_SLCK_RC (32000UL) +#define CHIP_FREQ_SLCK_RC_MAX (44000UL) +#define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL) +#define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL) +#define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL) +#define CHIP_FREQ_CPU_MAX (300000000UL) +#define CHIP_FREQ_XTAL_32K (32768UL) +#define CHIP_FREQ_XTAL_12M (12000000UL) + +/* Embedded Flash Read Wait State (for Worst-Case Conditions) */ +#define CHIP_FREQ_FWS_0 (23000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ +#define CHIP_FREQ_FWS_1 (46000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ +#define CHIP_FREQ_FWS_2 (69000000UL) /**< \brief Maximum operating frequency when FWS is 2 */ +#define CHIP_FREQ_FWS_3 (92000000UL) /**< \brief Maximum operating frequency when FWS is 3 */ +#define CHIP_FREQ_FWS_4 (115000000UL) /**< \brief Maximum operating frequency when FWS is 4 */ +#define CHIP_FREQ_FWS_5 (138000000UL) /**< \brief Maximum operating frequency when FWS is 5 */ +#define CHIP_FREQ_FWS_6 (150000000UL) /**< \brief Maximum operating frequency when FWS is 6 */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +#endif /* _SAME70Q21B_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c new file mode 100644 index 00000000..e8b360cb --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c @@ -0,0 +1,432 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "same70.h" + +#if __FPU_USED /* CMSIS defined value to indicate usage of FPU */ +#include "fpu.h" +#endif + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M7 core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void MemManage_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void BusFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DebugMon_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void SUPC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RSTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EFC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOA_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PIOB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_PIOC_INSTANCE_ +void PIOC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_PIOC_INSTANCE_ */ +#ifdef _SAME70_USART0_INSTANCE_ +void USART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_USART0_INSTANCE_ */ +#ifdef _SAME70_USART1_INSTANCE_ +void USART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_USART1_INSTANCE_ */ +#ifdef _SAME70_USART2_INSTANCE_ +void USART2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_USART2_INSTANCE_ */ +void PIOD_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_PIOE_INSTANCE_ +void PIOE_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_PIOE_INSTANCE_ */ +#ifdef _SAME70_HSMCI_INSTANCE_ +void HSMCI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_HSMCI_INSTANCE_ */ +void TWIHS0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TWIHS1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_SPI0_INSTANCE_ +void SPI0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_SPI0_INSTANCE_ */ +void SSC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_TC1_INSTANCE_ +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TC1_INSTANCE_ */ +#ifdef _SAME70_TC1_INSTANCE_ +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TC1_INSTANCE_ */ +#ifdef _SAME70_TC1_INSTANCE_ +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TC1_INSTANCE_ */ +void AFEC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_DACC_INSTANCE_ +void DACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_DACC_INSTANCE_ */ +void PWM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void ICM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void ACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void USBHS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void MCAN0_INT0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void MCAN0_INT1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_MCAN1_INSTANCE_ +void MCAN1_INT0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void MCAN1_INT1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_MCAN1_INSTANCE_ */ +void GMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void AFEC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_TWIHS2_INSTANCE_ +void TWIHS2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TWIHS2_INSTANCE_ */ +#ifdef _SAME70_SPI1_INSTANCE_ +void SPI1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_SPI1_INSTANCE_ */ +void QSPI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void UART2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_UART3_INSTANCE_ +void UART3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_UART3_INSTANCE_ */ +#ifdef _SAME70_UART4_INSTANCE_ +void UART4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_UART4_INSTANCE_ */ +#ifdef _SAME70_TC2_INSTANCE_ +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TC2_INSTANCE_ */ +#ifdef _SAME70_TC2_INSTANCE_ +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TC2_INSTANCE_ */ +#ifdef _SAME70_TC2_INSTANCE_ +void TC8_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_TC2_INSTANCE_ */ +void TC9_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC10_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC11_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void AES_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TRNG_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void XDMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void ISI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PWM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void FPU_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_SDRAMC_INSTANCE_ +void SDRAMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_SDRAMC_INSTANCE_ */ +void RSWDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void CCW_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void CCF_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void GMAC_Q1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void GMAC_Q2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void IXC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef _SAME70_I2SC0_INSTANCE_ +void I2SC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_I2SC0_INSTANCE_ */ +#ifdef _SAME70_I2SC1_INSTANCE_ +void I2SC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif /* _SAME70_I2SC1_INSTANCE_ */ +#if (__SAM_M7_REVB == 1) +void GMAC_Q3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void GMAC_Q4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void GMAC_Q5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pfnMemManage_Handler = (void*) MemManage_Handler, + .pfnBusFault_Handler = (void*) BusFault_Handler, + .pfnUsageFault_Handler = (void*) UsageFault_Handler, + .pfnReserved1_Handler = (void*) (0UL), /* Reserved */ + .pfnReserved2_Handler = (void*) (0UL), /* Reserved */ + .pfnReserved3_Handler = (void*) (0UL), /* Reserved */ + .pfnReserved4_Handler = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pfnDebugMon_Handler = (void*) DebugMon_Handler, + .pfnReserved5_Handler = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnSUPC_Handler = (void*) SUPC_Handler, /* 0 Supply Controller */ + .pfnRSTC_Handler = (void*) RSTC_Handler, /* 1 Reset Controller */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 2 Real Time Clock */ + .pfnRTT_Handler = (void*) RTT_Handler, /* 3 Real Time Timer */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 4 Watchdog Timer */ + .pfnPMC_Handler = (void*) PMC_Handler, /* 5 Power Management Controller */ + .pfnEFC_Handler = (void*) EFC_Handler, /* 6 Enhanced Embedded Flash Controller */ + .pfnUART0_Handler = (void*) UART0_Handler, /* 7 UART 0 */ + .pfnUART1_Handler = (void*) UART1_Handler, /* 8 UART 1 */ + .pvReserved9 = (void*) (0UL), /* 9 Reserved */ + .pfnPIOA_Handler = (void*) PIOA_Handler, /* 10 Parallel I/O Controller A */ + .pfnPIOB_Handler = (void*) PIOB_Handler, /* 11 Parallel I/O Controller B */ +#ifdef _SAME70_PIOC_INSTANCE_ + .pfnPIOC_Handler = (void*) PIOC_Handler, /* 12 Parallel I/O Controller C */ +#else + .pvReserved12 = (void*) (0UL), /* 12 Reserved */ +#endif /* _SAME70_PIOC_INSTANCE_ */ +#ifdef _SAME70_USART0_INSTANCE_ + .pfnUSART0_Handler = (void*) USART0_Handler, /* 13 USART 0 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif /* _SAME70_USART0_INSTANCE_ */ +#ifdef _SAME70_USART1_INSTANCE_ + .pfnUSART1_Handler = (void*) USART1_Handler, /* 14 USART 1 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif /* _SAME70_USART1_INSTANCE_ */ +#ifdef _SAME70_USART2_INSTANCE_ + .pfnUSART2_Handler = (void*) USART2_Handler, /* 15 USART 2 */ +#else + .pvReserved15 = (void*) (0UL), /* 15 Reserved */ +#endif /* _SAME70_USART2_INSTANCE_ */ + .pfnPIOD_Handler = (void*) PIOD_Handler, /* 16 Parallel I/O Controller D */ +#ifdef _SAME70_PIOE_INSTANCE_ + .pfnPIOE_Handler = (void*) PIOE_Handler, /* 17 Parallel I/O Controller E */ +#else + .pvReserved17 = (void*) (0UL), /* 17 Reserved */ +#endif /* _SAME70_PIOE_INSTANCE_ */ +#ifdef _SAME70_HSMCI_INSTANCE_ + .pfnHSMCI_Handler = (void*) HSMCI_Handler, /* 18 Multimedia Card Interface */ +#else + .pvReserved18 = (void*) (0UL), /* 18 Reserved */ +#endif /* _SAME70_HSMCI_INSTANCE_ */ + .pfnTWIHS0_Handler = (void*) TWIHS0_Handler, /* 19 Two Wire Interface 0 HS */ + .pfnTWIHS1_Handler = (void*) TWIHS1_Handler, /* 20 Two Wire Interface 1 HS */ +#ifdef _SAME70_SPI0_INSTANCE_ + .pfnSPI0_Handler = (void*) SPI0_Handler, /* 21 Serial Peripheral Interface 0 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif /* _SAME70_SPI0_INSTANCE_ */ + .pfnSSC_Handler = (void*) SSC_Handler, /* 22 Synchronous Serial Controller */ + .pfnTC0_Handler = (void*) TC0_Handler, /* 23 Timer/Counter 0 */ + .pfnTC1_Handler = (void*) TC1_Handler, /* 24 Timer/Counter 1 */ + .pfnTC2_Handler = (void*) TC2_Handler, /* 25 Timer/Counter 2 */ +#ifdef _SAME70_TC1_INSTANCE_ + .pfnTC3_Handler = (void*) TC3_Handler, /* 26 Timer/Counter 3 */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif /* _SAME70_TC1_INSTANCE_ */ +#ifdef _SAME70_TC1_INSTANCE_ + .pfnTC4_Handler = (void*) TC4_Handler, /* 27 Timer/Counter 4 */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif /* _SAME70_TC1_INSTANCE_ */ +#ifdef _SAME70_TC1_INSTANCE_ + .pfnTC5_Handler = (void*) TC5_Handler, /* 28 Timer/Counter 5 */ +#else + .pvReserved28 = (void*) (0UL), /* 28 Reserved */ +#endif /* _SAME70_TC1_INSTANCE_ */ + .pfnAFEC0_Handler = (void*) AFEC0_Handler, /* 29 Analog Front End 0 */ +#ifdef _SAME70_DACC_INSTANCE_ + .pfnDACC_Handler = (void*) DACC_Handler, /* 30 Digital To Analog Converter */ +#else + .pvReserved30 = (void*) (0UL), /* 30 Reserved */ +#endif /* _SAME70_DACC_INSTANCE_ */ + .pfnPWM0_Handler = (void*) PWM0_Handler, /* 31 Pulse Width Modulation 0 */ + .pfnICM_Handler = (void*) ICM_Handler, /* 32 Integrity Check Monitor */ + .pfnACC_Handler = (void*) ACC_Handler, /* 33 Analog Comparator */ + .pfnUSBHS_Handler = (void*) USBHS_Handler, /* 34 USB Host / Device Controller */ + .pfnMCAN0_INT0_Handler = (void*) MCAN0_INT0_Handler, /* 35 Controller Area Network */ + .pfnMCAN0_INT1_Handler = (void*) MCAN0_INT1_Handler, /* 36 Controller Area Network */ +#ifdef _SAME70_MCAN1_INSTANCE_ + .pfnMCAN1_INT0_Handler = (void*) MCAN1_INT0_Handler, /* 37 Controller Area Network */ + .pfnMCAN1_INT1_Handler = (void*) MCAN1_INT1_Handler, /* 38 Controller Area Network */ +#else + .pvReserved37 = (void*) (0UL), /* 37 Reserved */ + .pvReserved38 = (void*) (0UL), /* 38 Reserved */ +#endif /* _SAME70_MCAN1_INSTANCE_ */ + .pfnGMAC_Handler = (void*) GMAC_Handler, /* 39 Ethernet MAC */ + .pfnAFEC1_Handler = (void*) AFEC1_Handler, /* 40 Analog Front End 1 */ +#ifdef _SAME70_TWIHS2_INSTANCE_ + .pfnTWIHS2_Handler = (void*) TWIHS2_Handler, /* 41 Two Wire Interface 2 HS */ +#else + .pvReserved41 = (void*) (0UL), /* 41 Reserved */ +#endif /* _SAME70_TWIHS2_INSTANCE_ */ +#ifdef _SAME70_SPI1_INSTANCE_ + .pfnSPI1_Handler = (void*) SPI1_Handler, /* 42 Serial Peripheral Interface 1 */ +#else + .pvReserved42 = (void*) (0UL), /* 42 Reserved */ +#endif /* _SAME70_SPI1_INSTANCE_ */ + .pfnQSPI_Handler = (void*) QSPI_Handler, /* 43 Quad I/O Serial Peripheral Interface */ + .pfnUART2_Handler = (void*) UART2_Handler, /* 44 UART 2 */ +#ifdef _SAME70_UART3_INSTANCE_ + .pfnUART3_Handler = (void*) UART3_Handler, /* 45 UART 3 */ +#else + .pvReserved45 = (void*) (0UL), /* 45 Reserved */ +#endif /* _SAME70_UART3_INSTANCE_ */ +#ifdef _SAME70_UART4_INSTANCE_ + .pfnUART4_Handler = (void*) UART4_Handler, /* 46 UART 4 */ +#else + .pvReserved46 = (void*) (0UL), /* 46 Reserved */ +#endif /* _SAME70_UART4_INSTANCE_ */ +#ifdef _SAME70_TC2_INSTANCE_ + .pfnTC6_Handler = (void*) TC6_Handler, /* 47 Timer/Counter 6 */ +#else + .pvReserved47 = (void*) (0UL), /* 47 Reserved */ +#endif /* _SAME70_TC2_INSTANCE_ */ +#ifdef _SAME70_TC2_INSTANCE_ + .pfnTC7_Handler = (void*) TC7_Handler, /* 48 Timer/Counter 7 */ +#else + .pvReserved48 = (void*) (0UL), /* 48 Reserved */ +#endif /* _SAME70_TC2_INSTANCE_ */ +#ifdef _SAME70_TC2_INSTANCE_ + .pfnTC8_Handler = (void*) TC8_Handler, /* 49 Timer/Counter 8 */ +#else + .pvReserved49 = (void*) (0UL), /* 49 Reserved */ +#endif /* _SAME70_TC2_INSTANCE_ */ + .pfnTC9_Handler = (void*) TC9_Handler, /* 50 Timer/Counter 9 */ + .pfnTC10_Handler = (void*) TC10_Handler, /* 51 Timer/Counter 10 */ + .pfnTC11_Handler = (void*) TC11_Handler, /* 52 Timer/Counter 11 */ + .pvReserved53 = (void*) (0UL), /* 53 Reserved */ + .pvReserved54 = (void*) (0UL), /* 54 Reserved */ + .pvReserved55 = (void*) (0UL), /* 55 Reserved */ + .pfnAES_Handler = (void*) AES_Handler, /* 56 AES */ + .pfnTRNG_Handler = (void*) TRNG_Handler, /* 57 True Random Generator */ + .pfnXDMAC_Handler = (void*) XDMAC_Handler, /* 58 DMA */ + .pfnISI_Handler = (void*) ISI_Handler, /* 59 Camera Interface */ + .pfnPWM1_Handler = (void*) PWM1_Handler, /* 60 Pulse Width Modulation 1 */ + .pfnFPU_Handler = (void*) FPU_Handler, /* 61 Floating Point Unit Registers */ +#ifdef _SAME70_SDRAMC_INSTANCE_ + .pfnSDRAMC_Handler = (void*) SDRAMC_Handler, /* 62 SDRAM Controller */ +#else + .pvReserved62 = (void*) (0UL), /* 62 Reserved */ +#endif /* _SAME70_SDRAMC_INSTANCE_ */ + .pfnRSWDT_Handler = (void*) RSWDT_Handler, /* 63 Reinforced Secure Watchdog Timer */ + .pfnCCW_Handler = (void*) CCW_Handler, /* 64 System Control Registers */ + .pfnCCF_Handler = (void*) CCF_Handler, /* 65 System Control Registers */ + .pfnGMAC_Q1_Handler= (void*) GMAC_Q1_Handler,/* 66 Gigabit Ethernet MAC */ + .pfnGMAC_Q2_Handler= (void*) GMAC_Q2_Handler,/* 67 Gigabit Ethernet MAC */ + .pfnIXC_Handler = (void*) IXC_Handler, /* 68 Floating Point Unit Registers */ +#ifdef _SAME70_I2SC0_INSTANCE_ + .pfnI2SC0_Handler = (void*) I2SC0_Handler, /* 69 Inter-IC Sound controller */ +#else + .pvReserved69 = (void*) (0UL), /* 69 Reserved */ +#endif /* _SAME70_I2SC0_INSTANCE_ */ +#ifdef _SAME70_I2SC1_INSTANCE_ + .pfnI2SC1_Handler = (void*) I2SC1_Handler, /* 70 Inter-IC Sound controller */ +#else + .pvReserved70 = (void*) (0UL), /* 70 Reserved */ +#endif /* _SAME70_I2SC1_INSTANCE_ */ +#if (__SAM_M7_REVB == 1) + .pfnGMAC_Q3_Handler= (void*) GMAC_Q3_Handler,/* 71 Gigabit Ethernet MAC */ + .pfnGMAC_Q4_Handler= (void*) GMAC_Q4_Handler,/* 72 Gigabit Ethernet MAC */ + .pfnGMAC_Q5_Handler= (void*) GMAC_Q5_Handler /* 73 Gigabit Ethernet MAC */ +#else + .pvReserved71 = (void*) (0UL), /* 71 Reserved */ + .pvReserved72 = (void*) (0UL), /* 72 Reserved */ + .pvReserved73 = (void*) (0UL) /* 73 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + +#if __FPU_USED + fpu_enable(); +#endif + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c new file mode 100644 index 00000000..ef0e9961 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c @@ -0,0 +1,255 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include "same70.h" + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +/* %ATMEL_SYSTEM% */ +/* Clock Settings (600MHz PLL VDDIO 3.3V and VDDCORE 1.2V) */ +/* Clock Settings (300MHz HCLK, 150MHz MCK)=> PRESC = 2, MDIV = 2 */ +#define SYS_BOARD_OSCOUNT (CKGR_MOR_MOSCXTST(0x8U)) +#define SYS_BOARD_PLLAR (CKGR_PLLAR_ONE | CKGR_PLLAR_MULA(0x31U) | \ + CKGR_PLLAR_PLLACOUNT(0x3fU) | CKGR_PLLAR_DIVA(0x1U)) +#define SYS_BOARD_MCKR (PMC_MCKR_PRES_CLK_2 | PMC_MCKR_CSS_PLLA_CLK | (1<<8)) + +uint32_t SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + +/** + * \brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ + void SystemInit( void ) +{ + /* Set FWS according to SYS_BOARD_MCKR configuration */ + EFC->EEFC_FMR = EEFC_FMR_FWS(5); + + /* Initialize main oscillator */ + if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) ) + { + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | SYS_BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN; + + while ( !(PMC->PMC_SR & PMC_SR_MOSCXTS) ) + { + } + } + + /* Switch to 3-20MHz Xtal oscillator */ + PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD | SYS_BOARD_OSCOUNT | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCSEL; + + while ( !(PMC->PMC_SR & PMC_SR_MOSCSELS) ) + { + } + + PMC->PMC_MCKR = (PMC->PMC_MCKR & ~(uint32_t)PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + + while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) + { + } + + /* Initialize PLLA */ + PMC->CKGR_PLLAR = SYS_BOARD_PLLAR; + while ( !(PMC->PMC_SR & PMC_SR_LOCKA) ) + { + } + + /* Switch to main clock */ + PMC->PMC_MCKR = (SYS_BOARD_MCKR & ~PMC_MCKR_CSS_Msk) | PMC_MCKR_CSS_MAIN_CLK; + while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) + { + } + + /* Switch to PLLA */ + PMC->PMC_MCKR = SYS_BOARD_MCKR; + while ( !(PMC->PMC_SR & PMC_SR_MCKRDY) ) + { + } + + SystemCoreClock = CHIP_FREQ_CPU_MAX; +} + +void SystemCoreClockUpdate( void ) +{ + /* Determine clock frequency according to clock register values */ + switch (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) + { + case PMC_MCKR_CSS_SLOW_CLK: /* Slow clock */ + if ( SUPC->SUPC_SR & SUPC_SR_OSCSEL ) + { + SystemCoreClock = CHIP_FREQ_XTAL_32K; + } + else + { + SystemCoreClock = CHIP_FREQ_SLCK_RC; + } + break; + + case PMC_MCKR_CSS_MAIN_CLK: /* Main clock */ + if ( PMC->CKGR_MOR & CKGR_MOR_MOSCSEL ) + { + SystemCoreClock = CHIP_FREQ_XTAL_12M; + } + else + { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch ( PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk ) + { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + + default: + break; + } + } + break; + + case PMC_MCKR_CSS_PLLA_CLK: /* PLLA clock */ + if ( PMC->CKGR_MOR & CKGR_MOR_MOSCSEL ) + { + SystemCoreClock = CHIP_FREQ_XTAL_12M ; + } + else + { + SystemCoreClock = CHIP_FREQ_MAINCK_RC_4MHZ; + + switch ( PMC->CKGR_MOR & CKGR_MOR_MOSCRCF_Msk ) + { + case CKGR_MOR_MOSCRCF_4_MHz: + break; + + case CKGR_MOR_MOSCRCF_8_MHz: + SystemCoreClock *= 2U; + break; + + case CKGR_MOR_MOSCRCF_12_MHz: + SystemCoreClock *= 3U; + break; + + default: + break; + } + } + + if ( (uint32_t) (PMC->PMC_MCKR & (uint32_t) PMC_MCKR_CSS_Msk) == PMC_MCKR_CSS_PLLA_CLK ) + { + SystemCoreClock *= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_MULA_Msk) >> CKGR_PLLAR_MULA_Pos) + 1U); + SystemCoreClock /= ((((PMC->CKGR_PLLAR) & CKGR_PLLAR_DIVA_Msk) >> CKGR_PLLAR_DIVA_Pos)); + } + break; + + default: + break; + } + + if ( (PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) == PMC_MCKR_PRES_CLK_3 ) + { + SystemCoreClock /= 3U; + } + else + { + SystemCoreClock >>= ((PMC->PMC_MCKR & PMC_MCKR_PRES_Msk) >> PMC_MCKR_PRES_Pos); + } +} +/** + * Initialize flash. + */ +void system_init_flash( uint32_t ul_clk ) +{ + /* Set FWS for embedded Flash access according to operating frequency */ + if ( ul_clk < CHIP_FREQ_FWS_0 ) + { + EFC->EEFC_FMR = EEFC_FMR_FWS(0)|EEFC_FMR_CLOE; + } + else + { + if (ul_clk < CHIP_FREQ_FWS_1) + { + EFC->EEFC_FMR = EEFC_FMR_FWS(1)|EEFC_FMR_CLOE; + } + else + { + if (ul_clk < CHIP_FREQ_FWS_2) + { + EFC->EEFC_FMR = EEFC_FMR_FWS(2)|EEFC_FMR_CLOE; + } + else + { + if ( ul_clk < CHIP_FREQ_FWS_3 ) + { + EFC->EEFC_FMR = EEFC_FMR_FWS(3)|EEFC_FMR_CLOE; + } + else + { + if ( ul_clk < CHIP_FREQ_FWS_4 ) + { + EFC->EEFC_FMR = EEFC_FMR_FWS(4)|EEFC_FMR_CLOE; + } + else + { + if ( ul_clk < CHIP_FREQ_FWS_5 ) + { + EFC->EEFC_FMR = EEFC_FMR_FWS(5)|EEFC_FMR_CLOE; + } + else + { + EFC->EEFC_FMR = EEFC_FMR_FWS(6)|EEFC_FMR_CLOE; + } + } + } + } + } + } +} +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h new file mode 100644 index 00000000..f605ccca --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h @@ -0,0 +1,75 @@ +/** + * \file + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef SYSTEM_SAME70_H_INCLUDED +#define SYSTEM_SAME70_H_INCLUDED + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/* @endcond */ + +#include + +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/** + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void); + +/** + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void); + +/** + * Initialize flash. + */ +void system_init_flash(uint32_t dw_clk); + +/* @cond 0 */ +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/* @endcond */ + +#endif /* SYSTEM_SAME70_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h new file mode 100644 index 00000000..67cd4ebb --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h @@ -0,0 +1,1189 @@ +/** + * \file + * + * \brief Commonly used includes, types and macros. + * + * Copyright (c) 2010-2019 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef UTILS_COMPILER_H +#define UTILS_COMPILER_H + +/** + * \defgroup group_sam_utils Compiler abstraction layer and code utilities + * + * Compiler abstraction layer and code utilities for AT91SAM. + * This module provides various abstraction layers and utilities to make code compatible between different compilers. + * + * \{ + */ +#include + +#if (defined __ICCARM__) +# include +#endif + +#include +#include "preprocessor.h" + +#include + +//_____ D E C L A R A T I O N S ____________________________________________ + +#ifndef __ASSEMBLY__ // Not defined for assembling. + +#include +#include +#include +#include + +#ifdef __ICCARM__ +/*! \name Compiler Keywords + * + * Port of some keywords from GCC to IAR Embedded Workbench. + */ +//! @{ +#define __asm__ asm +#define __inline__ inline +#define __volatile__ +//! @} + +#endif + +#define FUNC_PTR void * +/** + * \def UNUSED + * \brief Marking \a v as a unused parameter or value. + */ +#define UNUSED(v) (void)(v) + +/** + * \def unused + * \brief Marking \a v as a unused parameter or value. + */ +#define unused(v) do { (void)(v); } while(0) + +/** + * \def barrier + * \brief Memory barrier + */ +#define barrier() __DMB() + +/** + * \brief Emit the compiler pragma \a arg. + * + * \param arg The pragma directive as it would appear after \e \#pragma + * (i.e. not stringified). + */ +#define COMPILER_PRAGMA(arg) _Pragma(#arg) + +/** + * \def COMPILER_PACK_SET(alignment) + * \brief Set maximum alignment for subsequent struct and union + * definitions to \a alignment. + */ +#define COMPILER_PACK_SET(alignment) COMPILER_PRAGMA(pack(alignment)) + +/** + * \def COMPILER_PACK_RESET() + * \brief Set default alignment for subsequent struct and union + * definitions. + */ +#define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack()) + + +/** + * \brief Set aligned boundary. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) +#elif (defined __ICCARM__) +# define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) +#endif + +/** + * \brief Set word-aligned boundary. + */ +#if (defined __GNUC__) || defined(__CC_ARM) +#define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#elif (defined __ICCARM__) +#define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#endif + +/** + * \def __always_inline + * \brief The function should always be inlined. + * + * This annotation instructs the compiler to ignore its inlining + * heuristics and inline the function no matter how big it thinks it + * becomes. + */ +#if defined(__CC_ARM) +# define __always_inline __forceinline +#elif (defined __GNUC__) +#ifdef __always_inline +# undef __always_inline +#endif +# define __always_inline inline __attribute__((__always_inline__)) +#elif (defined __ICCARM__) +# define __always_inline _Pragma("inline=forced") +#endif + +/** + * \def __no_inline + * \brief The function should not be inlined. + * + * This annotation instructs the compiler to ignore its inlining + * heuristics and not inline the function. + */ +#if defined(__CC_ARM) +# define __no_inline __attribute__((noinline)) +#elif (defined __GNUC__) +# define __no_inline __attribute__((__noinline__)) +#elif (defined __ICCARM__) +# define __no_inline _Pragma("inline=never") +#endif + +/*! \brief This macro is used to test fatal errors. + * + * The macro tests if the expression is false. If it is, a fatal error is + * detected and the application hangs up. If TEST_SUITE_DEFINE_ASSERT_MACRO + * is defined, a unit test version of the macro is used, to allow execution + * of further tests after a false expression. + * + * \param expr Expression to evaluate and supposed to be nonzero. + */ +#if defined(_ASSERT_ENABLE_) +# if defined(TEST_SUITE_DEFINE_ASSERT_MACRO) + // Assert() is defined in unit_test/suite.h +# include "unit_test/suite.h" +# else +#undef TEST_SUITE_DEFINE_ASSERT_MACRO +# define Assert(expr) \ + {\ + if (!(expr)) while (true);\ + } +# endif +#else +# define Assert(expr) ((void) 0) +#endif + +/* Define WEAK attribute */ +#if defined ( __CC_ARM ) /* Keil µVision 4 */ +# define WEAK __attribute__ ((weak)) +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +# define WEAK __weak +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ +# define WEAK __attribute__ ((weak)) +#endif + +/* Define NO_INIT attribute */ +#if defined ( __CC_ARM ) +# define NO_INIT __attribute__((zero_init)) +#elif defined ( __ICCARM__ ) +# define NO_INIT __no_init +#elif defined ( __GNUC__ ) +# define NO_INIT __attribute__((section(".no_init"))) +#endif + +/* Define RAMFUNC attribute */ +#if defined ( __CC_ARM ) /* Keil µVision 4 */ +# define RAMFUNC __attribute__ ((section(".ramfunc"))) +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +# define RAMFUNC __ramfunc +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ +# define RAMFUNC __attribute__ ((section(".ramfunc"))) +#endif + +/* Define OPTIMIZE_HIGH attribute */ +#if defined ( __CC_ARM ) /* Keil µVision 4 */ +# define OPTIMIZE_HIGH _Pragma("O3") +#elif defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ +# define OPTIMIZE_HIGH _Pragma("optimize=high") +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ +# define OPTIMIZE_HIGH __attribute__((optimize("s"))) +#endif + +#include "interrupt.h" + +/*! \name Usual Types + */ +//! @{ +typedef unsigned char Bool; //!< Boolean. +#ifndef __cplusplus +#if !defined(__bool_true_false_are_defined) +typedef unsigned char bool; //!< Boolean. +#endif +#endif +typedef int8_t S8 ; //!< 8-bit signed integer. +typedef uint8_t U8 ; //!< 8-bit unsigned integer. +typedef int16_t S16; //!< 16-bit signed integer. +typedef uint16_t U16; //!< 16-bit unsigned integer. +typedef uint16_t le16_t; +typedef uint16_t be16_t; +typedef int32_t S32; //!< 32-bit signed integer. +typedef uint32_t U32; //!< 32-bit unsigned integer. +typedef uint32_t le32_t; +typedef uint32_t be32_t; +typedef int64_t S64; //!< 64-bit signed integer. +typedef uint64_t U64; //!< 64-bit unsigned integer. +typedef float F32; //!< 32-bit floating-point number. +typedef double F64; //!< 64-bit floating-point number. +typedef uint32_t iram_size_t; +//! @} + + +/*! \name Status Types + */ +//! @{ +typedef bool Status_bool_t; //!< Boolean status. +typedef U8 Status_t; //!< 8-bit-coded status. +//! @} + + +/*! \name Aliasing Aggregate Types + */ +//! @{ + +//! 16-bit union. +typedef union +{ + S16 s16 ; + U16 u16 ; + S8 s8 [2]; + U8 u8 [2]; +} Union16; + +//! 32-bit union. +typedef union +{ + S32 s32 ; + U32 u32 ; + S16 s16[2]; + U16 u16[2]; + S8 s8 [4]; + U8 u8 [4]; +} Union32; + +//! 64-bit union. +typedef union +{ + S64 s64 ; + U64 u64 ; + S32 s32[2]; + U32 u32[2]; + S16 s16[4]; + U16 u16[4]; + S8 s8 [8]; + U8 u8 [8]; +} Union64; + +//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + S64 *s64ptr; + U64 *u64ptr; + S32 *s32ptr; + U32 *u32ptr; + S16 *s16ptr; + U16 *u16ptr; + S8 *s8ptr ; + U8 *u8ptr ; +} UnionPtr; + +//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + volatile S64 *s64ptr; + volatile U64 *u64ptr; + volatile S32 *s32ptr; + volatile U32 *u32ptr; + volatile S16 *s16ptr; + volatile U16 *u16ptr; + volatile S8 *s8ptr ; + volatile U8 *u8ptr ; +} UnionVPtr; + +//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + const S64 *s64ptr; + const U64 *u64ptr; + const S32 *s32ptr; + const U32 *u32ptr; + const S16 *s16ptr; + const U16 *u16ptr; + const S8 *s8ptr ; + const U8 *u8ptr ; +} UnionCPtr; + +//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef union +{ + const volatile S64 *s64ptr; + const volatile U64 *u64ptr; + const volatile S32 *s32ptr; + const volatile U32 *u32ptr; + const volatile S16 *s16ptr; + const volatile U16 *u16ptr; + const volatile S8 *s8ptr ; + const volatile U8 *u8ptr ; +} UnionCVPtr; + +//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + S64 *s64ptr; + U64 *u64ptr; + S32 *s32ptr; + U32 *u32ptr; + S16 *s16ptr; + U16 *u16ptr; + S8 *s8ptr ; + U8 *u8ptr ; +} StructPtr; + +//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + volatile S64 *s64ptr; + volatile U64 *u64ptr; + volatile S32 *s32ptr; + volatile U32 *u32ptr; + volatile S16 *s16ptr; + volatile U16 *u16ptr; + volatile S8 *s8ptr ; + volatile U8 *u8ptr ; +} StructVPtr; + +//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + const S64 *s64ptr; + const U64 *u64ptr; + const S32 *s32ptr; + const U32 *u32ptr; + const S16 *s16ptr; + const U16 *u16ptr; + const S8 *s8ptr ; + const U8 *u8ptr ; +} StructCPtr; + +//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. +typedef struct +{ + const volatile S64 *s64ptr; + const volatile U64 *u64ptr; + const volatile S32 *s32ptr; + const volatile U32 *u32ptr; + const volatile S16 *s16ptr; + const volatile U16 *u16ptr; + const volatile S8 *s8ptr ; + const volatile U8 *u8ptr ; +} StructCVPtr; + +//! @} + +#endif // #ifndef __ASSEMBLY__ + +/*! \name Usual Constants + */ +//! @{ +#define DISABLE 0 +#define ENABLE 1 +#ifndef __cplusplus +#if !defined(__bool_true_false_are_defined) +#define false 0 +#define true 1 +#endif +#endif +#define PASS 0 +#define FAIL 1 +#define LOW 0 +#define HIGH 1 +//! @} + + +#ifndef __ASSEMBLY__ // not for assembling. + +//! \name Optimization Control +//@{ + +/** + * \def likely(exp) + * \brief The expression \a exp is likely to be true + */ +#ifndef likely +# define likely(exp) (exp) +#endif + +/** + * \def unlikely(exp) + * \brief The expression \a exp is unlikely to be true + */ +#ifndef unlikely +# define unlikely(exp) (exp) +#endif + +/** + * \def is_constant(exp) + * \brief Determine if an expression evaluates to a constant value. + * + * \param exp Any expression + * + * \return true if \a exp is constant, false otherwise. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define is_constant(exp) __builtin_constant_p(exp) +#else +# define is_constant(exp) (0) +#endif + +//! @} + +/*! \name Bit-Field Handling + */ +//! @{ + +/*! \brief Reads the bits of a value specified by a given bit-mask. + * + * \param value Value to read bits from. + * \param mask Bit-mask indicating bits to read. + * + * \return Read bits. + */ +#define Rd_bits( value, mask) ((value) & (mask)) + +/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue to write bits to. + * \param mask Bit-mask indicating bits to write. + * \param bits Bits to write. + * + * \return Resulting value with written bits. + */ +#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ + ((bits ) & (mask))) + +/*! \brief Tests the bits of a value specified by a given bit-mask. + * + * \param value Value of which to test bits. + * \param mask Bit-mask indicating bits to test. + * + * \return \c 1 if at least one of the tested bits is set, else \c 0. + */ +#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) + +/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue of which to clear bits. + * \param mask Bit-mask indicating bits to clear. + * + * \return Resulting value with cleared bits. + */ +#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) + +/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue of which to set bits. + * \param mask Bit-mask indicating bits to set. + * + * \return Resulting value with set bits. + */ +#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) + +/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue of which to toggle bits. + * \param mask Bit-mask indicating bits to toggle. + * + * \return Resulting value with toggled bits. + */ +#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) + +/*! \brief Reads the bit-field of a value specified by a given bit-mask. + * + * \param value Value to read a bit-field from. + * \param mask Bit-mask indicating the bit-field to read. + * + * \return Read bit-field. + */ +#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) + +/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. + * + * \param lvalue C lvalue to write a bit-field to. + * \param mask Bit-mask indicating the bit-field to write. + * \param bitfield Bit-field to write. + * + * \return Resulting value with written bit-field. + */ +#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) + +//! @} + + +/*! \name Zero-Bit Counting + * + * Under GCC, __builtin_clz and __builtin_ctz behave like macros when + * applied to constant expressions (values known at compile time), so they are + * more optimized than the use of the corresponding assembly instructions and + * they can be used as constant expressions e.g. to initialize objects having + * static storage duration, and like the corresponding assembly instructions + * when applied to non-constant expressions (values unknown at compile time), so + * they are more optimized than an assembly periphrasis. Hence, clz and ctz + * ensure a possible and optimized behavior for both constant and non-constant + * expressions. + */ +//! @{ + +/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. + * + * \param u Value of which to count the leading zero bits. + * + * \return The count of leading zero bits in \a u. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define clz(u) ((u) ? __builtin_clz(u) : 32) +#elif (defined __ICCARM__) +# define clz(u) ((u) ? __CLZ(u) : 32) +#else +# define clz(u) (((u) == 0) ? 32 : \ + ((u) & (1ul << 31)) ? 0 : \ + ((u) & (1ul << 30)) ? 1 : \ + ((u) & (1ul << 29)) ? 2 : \ + ((u) & (1ul << 28)) ? 3 : \ + ((u) & (1ul << 27)) ? 4 : \ + ((u) & (1ul << 26)) ? 5 : \ + ((u) & (1ul << 25)) ? 6 : \ + ((u) & (1ul << 24)) ? 7 : \ + ((u) & (1ul << 23)) ? 8 : \ + ((u) & (1ul << 22)) ? 9 : \ + ((u) & (1ul << 21)) ? 10 : \ + ((u) & (1ul << 20)) ? 11 : \ + ((u) & (1ul << 19)) ? 12 : \ + ((u) & (1ul << 18)) ? 13 : \ + ((u) & (1ul << 17)) ? 14 : \ + ((u) & (1ul << 16)) ? 15 : \ + ((u) & (1ul << 15)) ? 16 : \ + ((u) & (1ul << 14)) ? 17 : \ + ((u) & (1ul << 13)) ? 18 : \ + ((u) & (1ul << 12)) ? 19 : \ + ((u) & (1ul << 11)) ? 20 : \ + ((u) & (1ul << 10)) ? 21 : \ + ((u) & (1ul << 9)) ? 22 : \ + ((u) & (1ul << 8)) ? 23 : \ + ((u) & (1ul << 7)) ? 24 : \ + ((u) & (1ul << 6)) ? 25 : \ + ((u) & (1ul << 5)) ? 26 : \ + ((u) & (1ul << 4)) ? 27 : \ + ((u) & (1ul << 3)) ? 28 : \ + ((u) & (1ul << 2)) ? 29 : \ + ((u) & (1ul << 1)) ? 30 : \ + 31) +#endif + +/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. + * + * \param u Value of which to count the trailing zero bits. + * + * \return The count of trailing zero bits in \a u. + */ +#if (defined __GNUC__) || (defined __CC_ARM) +# define ctz(u) ((u) ? __builtin_ctz(u) : 32) +#else +# define ctz(u) ((u) & (1ul << 0) ? 0 : \ + (u) & (1ul << 1) ? 1 : \ + (u) & (1ul << 2) ? 2 : \ + (u) & (1ul << 3) ? 3 : \ + (u) & (1ul << 4) ? 4 : \ + (u) & (1ul << 5) ? 5 : \ + (u) & (1ul << 6) ? 6 : \ + (u) & (1ul << 7) ? 7 : \ + (u) & (1ul << 8) ? 8 : \ + (u) & (1ul << 9) ? 9 : \ + (u) & (1ul << 10) ? 10 : \ + (u) & (1ul << 11) ? 11 : \ + (u) & (1ul << 12) ? 12 : \ + (u) & (1ul << 13) ? 13 : \ + (u) & (1ul << 14) ? 14 : \ + (u) & (1ul << 15) ? 15 : \ + (u) & (1ul << 16) ? 16 : \ + (u) & (1ul << 17) ? 17 : \ + (u) & (1ul << 18) ? 18 : \ + (u) & (1ul << 19) ? 19 : \ + (u) & (1ul << 20) ? 20 : \ + (u) & (1ul << 21) ? 21 : \ + (u) & (1ul << 22) ? 22 : \ + (u) & (1ul << 23) ? 23 : \ + (u) & (1ul << 24) ? 24 : \ + (u) & (1ul << 25) ? 25 : \ + (u) & (1ul << 26) ? 26 : \ + (u) & (1ul << 27) ? 27 : \ + (u) & (1ul << 28) ? 28 : \ + (u) & (1ul << 29) ? 29 : \ + (u) & (1ul << 30) ? 30 : \ + (u) & (1ul << 31) ? 31 : \ + 32) +#endif + +//! @} + + +/*! \name Bit Reversing + */ +//! @{ + +/*! \brief Reverses the bits of \a u8. + * + * \param u8 U8 of which to reverse the bits. + * + * \return Value resulting from \a u8 with reversed bits. + */ +#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) + +/*! \brief Reverses the bits of \a u16. + * + * \param u16 U16 of which to reverse the bits. + * + * \return Value resulting from \a u16 with reversed bits. + */ +#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) + +/*! \brief Reverses the bits of \a u32. + * + * \param u32 U32 of which to reverse the bits. + * + * \return Value resulting from \a u32 with reversed bits. + */ +#define bit_reverse32(u32) __RBIT(u32) + +/*! \brief Reverses the bits of \a u64. + * + * \param u64 U64 of which to reverse the bits. + * + * \return Value resulting from \a u64 with reversed bits. + */ +#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ + ((U64)bit_reverse32((U64)(u64)) << 32))) + +//! @} + + +/*! \name Alignment + */ +//! @{ + +/*! \brief Tests alignment of the number \a val with the \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. + */ +#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) + +/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return Alignment of the number \a val with respect to the \a n boundary. + */ +#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) + +/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. + * + * \param lval Input/output lvalue. + * \param n Boundary. + * \param alg Alignment. + * + * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. + */ +#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) + +/*! \brief Aligns the number \a val with the upper \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return Value resulting from the number \a val aligned with the upper \a n boundary. + */ +#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) + +/*! \brief Aligns the number \a val with the lower \a n boundary. + * + * \param val Input value. + * \param n Boundary. + * + * \return Value resulting from the number \a val aligned with the lower \a n boundary. + */ +#define Align_down(val, n ) ( (val) & ~((n) - 1)) + +//! @} + + +/*! \name Mathematics + * + * The same considerations as for clz and ctz apply here but GCC does not + * provide built-in functions to access the assembly instructions abs, min and + * max and it does not produce them by itself in most cases, so two sets of + * macros are defined here: + * - Abs, Min and Max to apply to constant expressions (values known at + * compile time); + * - abs, min and max to apply to non-constant expressions (values unknown at + * compile time), abs is found in stdlib.h. + */ +//! @{ + +/*! \brief Takes the absolute value of \a a. + * + * \param a Input value. + * + * \return Absolute value of \a a. + * + * \note More optimized if only used with values known at compile time. + */ +#define Abs(a) (((a) < 0 ) ? -(a) : (a)) + +/*! \brief Takes the minimal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Minimal value of \a a and \a b. + * + * \note More optimized if only used with values known at compile time. + */ +#define Min(a, b) (((a) < (b)) ? (a) : (b)) + +/*! \brief Takes the maximal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Maximal value of \a a and \a b. + * + * \note More optimized if only used with values known at compile time. + */ +#define Max(a, b) (((a) > (b)) ? (a) : (b)) + +// abs() is already defined by stdlib.h + +/*! \brief Takes the minimal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Minimal value of \a a and \a b. + * + * \note More optimized if only used with values unknown at compile time. + */ +#define min(a, b) Min(a, b) + +/*! \brief Takes the maximal value of \a a and \a b. + * + * \param a Input value. + * \param b Input value. + * + * \return Maximal value of \a a and \a b. + * + * \note More optimized if only used with values unknown at compile time. + */ +#define max(a, b) Max(a, b) + +//! @} + + +/*! \brief Calls the routine at address \a addr. + * + * It generates a long call opcode. + * + * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if + * it is invoked from the CPU supervisor mode. + * + * \param addr Address of the routine to call. + * + * \note It may be used as a long jump opcode in some special cases. + */ +#define Long_call(addr) ((*(void (*)(void))(addr))()) + + +/*! \name MCU Endianism Handling + * ARM is MCU little endianism. + */ +//! @{ +#define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. +#define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. + +#define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. +#define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. +#define MSB0W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 1st rank of \a u32. +#define MSB1W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 2nd rank of \a u32. +#define MSB2W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 3rd rank of \a u32. +#define MSB3W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 4th rank of \a u32. +#define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. +#define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. +#define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. +#define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. + +#define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. +#define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. +#define MSH0(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 1st rank of \a u64. +#define MSH1(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 2nd rank of \a u64. +#define MSH2(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 3rd rank of \a u64. +#define MSH3(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 4th rank of \a u64. +#define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. +#define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. +#define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. +#define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. +#define MSB0D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 1st rank of \a u64. +#define MSB1D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 2nd rank of \a u64. +#define MSB2D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 3rd rank of \a u64. +#define MSB3D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 4th rank of \a u64. +#define MSB4D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 5th rank of \a u64. +#define MSB5D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 6th rank of \a u64. +#define MSB6D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 7th rank of \a u64. +#define MSB7D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 8th rank of \a u64. +#define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. +#define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. +#define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. +#define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. +#define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. +#define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. +#define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. +#define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. + +#define BE16(x) swap16(x) +#define LE16(x) (x) + +#define le16_to_cpu(x) (x) +#define cpu_to_le16(x) (x) +#define LE16_TO_CPU(x) (x) +#define CPU_TO_LE16(x) (x) + +#define be16_to_cpu(x) swap16(x) +#define cpu_to_be16(x) swap16(x) +#define BE16_TO_CPU(x) swap16(x) +#define CPU_TO_BE16(x) swap16(x) + +#define le32_to_cpu(x) (x) +#define cpu_to_le32(x) (x) +#define LE32_TO_CPU(x) (x) +#define CPU_TO_LE32(x) (x) + +#define be32_to_cpu(x) swap32(x) +#define cpu_to_be32(x) swap32(x) +#define BE32_TO_CPU(x) swap32(x) +#define CPU_TO_BE32(x) swap32(x) +//! @} + + +/*! \name Endianism Conversion + * + * The same considerations as for clz and ctz apply here but GCC's + * __builtin_bswap_32 and __builtin_bswap_64 do not behave like macros when + * applied to constant expressions, so two sets of macros are defined here: + * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known + * at compile time); + * - swap16, swap32 and swap64 to apply to non-constant expressions (values + * unknown at compile time). + */ +//! @{ + +/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). + * + * \param u16 U16 of which to toggle the endianism. + * + * \return Value resulting from \a u16 with toggled endianism. + * + * \note More optimized if only used with values known at compile time. + */ +#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ + ((U16)(u16) << 8))) + +/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). + * + * \param u32 U32 of which to toggle the endianism. + * + * \return Value resulting from \a u32 with toggled endianism. + * + * \note More optimized if only used with values known at compile time. + */ +#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ + ((U32)Swap16((U32)(u32)) << 16))) + +/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). + * + * \param u64 U64 of which to toggle the endianism. + * + * \return Value resulting from \a u64 with toggled endianism. + * + * \note More optimized if only used with values known at compile time. + */ +#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ + ((U64)Swap32((U64)(u64)) << 32))) + +/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). + * + * \param u16 U16 of which to toggle the endianism. + * + * \return Value resulting from \a u16 with toggled endianism. + * + * \note More optimized if only used with values unknown at compile time. + */ +#define swap16(u16) Swap16(u16) + +/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). + * + * \param u32 U32 of which to toggle the endianism. + * + * \return Value resulting from \a u32 with toggled endianism. + * + * \note More optimized if only used with values unknown at compile time. + */ +#if (defined __GNUC__) +# define swap32(u32) ((U32)__builtin_bswap32((U32)(u32))) +#else +# define swap32(u32) Swap32(u32) +#endif + +/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). + * + * \param u64 U64 of which to toggle the endianism. + * + * \return Value resulting from \a u64 with toggled endianism. + * + * \note More optimized if only used with values unknown at compile time. + */ +#if (defined __GNUC__) +# define swap64(u64) ((U64)__builtin_bswap64((U64)(u64))) +#else +# define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ + ((U64)swap32((U64)(u64)) << 32))) +#endif + +//! @} + + +/*! \name Target Abstraction + */ +//! @{ + +#define _GLOBEXT_ extern //!< extern storage-class specifier. +#define _CONST_TYPE_ const //!< const type qualifier. +#define _MEM_TYPE_SLOW_ //!< Slow memory type. +#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. +#define _MEM_TYPE_FAST_ //!< Fast memory type. + +typedef U8 Byte; //!< 8-bit unsigned integer. + +#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. +#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. +#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. +#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. + +#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. +#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. +#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. +#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. +#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. +#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. +#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. +#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. + +//! @} + +/** + * \brief Calculate \f$ \left\lceil \frac{a}{b} \right\rceil \f$ using + * integer arithmetic. + * + * \param a An integer + * \param b Another integer + * + * \return (\a a / \a b) rounded up to the nearest integer. + */ +#define div_ceil(a, b) (((a) + (b) - 1) / (b)) + +#endif // #ifndef __ASSEMBLY__ + + +#if defined(__ICCARM__) +#define SHORTENUM __packed +#elif defined(__GNUC__) +#define SHORTENUM __attribute__((packed)) +#endif + +/* No operation */ +#if defined(__ICCARM__) +#define nop() __no_operation() +#elif defined(__GNUC__) +#define nop() __NOP() +#endif + +#define FLASH_DECLARE(x) const x +#define FLASH_EXTERN(x) extern const x +#define PGM_READ_BYTE(x) *(x) +#define PGM_READ_WORD(x) *(x) +#define PGM_READ_DWORD(x) *(x) +#define MEMCPY_ENDIAN memcpy +#define PGM_READ_BLOCK(dst, src, len) memcpy((dst), (src), (len)) + +/*Defines the Flash Storage for the request and response of MAC*/ +#define CMD_ID_OCTET (0) + +/* Converting of values from CPU endian to little endian. */ +#define CPU_ENDIAN_TO_LE16(x) (x) +#define CPU_ENDIAN_TO_LE32(x) (x) +#define CPU_ENDIAN_TO_LE64(x) (x) + +/* Converting of values from little endian to CPU endian. */ +#define LE16_TO_CPU_ENDIAN(x) (x) +#define LE32_TO_CPU_ENDIAN(x) (x) +#define LE64_TO_CPU_ENDIAN(x) (x) + +/* Converting of constants from little endian to CPU endian. */ +#define CLE16_TO_CPU_ENDIAN(x) (x) +#define CLE32_TO_CPU_ENDIAN(x) (x) +#define CLE64_TO_CPU_ENDIAN(x) (x) + +/* Converting of constants from CPU endian to little endian. */ +#define CCPU_ENDIAN_TO_LE16(x) (x) +#define CCPU_ENDIAN_TO_LE32(x) (x) +#define CCPU_ENDIAN_TO_LE64(x) (x) + +#define ADDR_COPY_DST_SRC_16(dst, src) ((dst) = (src)) +#define ADDR_COPY_DST_SRC_64(dst, src) ((dst) = (src)) + +/** + * @brief Converts a 64-Bit value into a 8 Byte array + * + * @param[in] value 64-Bit value + * @param[out] data Pointer to the 8 Byte array to be updated with 64-Bit value + * @ingroup apiPalApi + */ +static inline void convert_64_bit_to_byte_array(uint64_t value, uint8_t *data) +{ + uint8_t val_index = 0; + + while (val_index < 8) + { + data[val_index++] = value & 0xFF; + value = value >> 8; + } +} + +/** + * @brief Converts a 16-Bit value into a 2 Byte array + * + * @param[in] value 16-Bit value + * @param[out] data Pointer to the 2 Byte array to be updated with 16-Bit value + * @ingroup apiPalApi + */ +static inline void convert_16_bit_to_byte_array(uint16_t value, uint8_t *data) +{ + data[0] = value & 0xFF; + data[1] = (value >> 8) & 0xFF; +} + +/* Converts a 16-Bit value into a 2 Byte array */ +static inline void convert_spec_16_bit_to_byte_array(uint16_t value, uint8_t *data) +{ + data[0] = value & 0xFF; + data[1] = (value >> 8) & 0xFF; +} + +/* Converts a 16-Bit value into a 2 Byte array */ +static inline void convert_16_bit_to_byte_address(uint16_t value, uint8_t *data) +{ + data[0] = value & 0xFF; + data[1] = (value >> 8) & 0xFF; +} + +/* + * @brief Converts a 2 Byte array into a 16-Bit value + * + * @param data Specifies the pointer to the 2 Byte array + * + * @return 16-Bit value + * @ingroup apiPalApi + */ +static inline uint16_t convert_byte_array_to_16_bit(uint8_t *data) +{ + return (data[0] | ((uint16_t)data[1] << 8)); +} + +/* Converts a 8 Byte array into a 32-Bit value */ +static inline uint32_t convert_byte_array_to_32_bit(uint8_t *data) +{ + union + { + uint32_t u32; + uint8_t u8[8]; + }long_addr; + uint8_t index; + for (index = 0; index < 4; index++) + { + long_addr.u8[index] = *data++; + } + return long_addr.u32; +} + +/** + * @brief Converts a 8 Byte array into a 64-Bit value + * + * @param data Specifies the pointer to the 8 Byte array + * + * @return 64-Bit value + * @ingroup apiPalApi + */ +static inline uint64_t convert_byte_array_to_64_bit(uint8_t *data) +{ + union + { + uint64_t u64; + uint8_t u8[8]; + } long_addr; + + uint8_t val_index; + + for (val_index = 0; val_index < 8; val_index++) + { + long_addr.u8[val_index] = *data++; + } + + return long_addr.u64; +} +/** + * \} + */ + +#endif /* UTILS_COMPILER_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h new file mode 100644 index 00000000..76781e6d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h @@ -0,0 +1,84 @@ +/** + * \file + * + * \brief FPU support for SAM. + * + * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _FPU_H_INCLUDED_ +#define _FPU_H_INCLUDED_ + +#include + +/** Address for ARM CPACR */ +#define ADDR_CPACR 0xE000ED88 + +/** CPACR Register */ +#define REG_CPACR (*((volatile uint32_t *)ADDR_CPACR)) + +/** + * \brief Enable FPU + */ +__always_inline static void fpu_enable(void) +{ + irqflags_t flags; + flags = cpu_irq_save(); + REG_CPACR |= (0xFu << 20); + __DSB(); + __ISB(); + cpu_irq_restore(flags); +} + +/** + * \brief Disable FPU + */ +__always_inline static void fpu_disable(void) +{ + irqflags_t flags; + flags = cpu_irq_save(); + REG_CPACR &= ~(0xFu << 20); + __DSB(); + __ISB(); + cpu_irq_restore(flags); +} + +/** + * \brief Check if FPU is enabled + * + * \return Return ture if FPU is enabled, otherwise return false. + */ +__always_inline static bool fpu_is_enabled(void) +{ + return (REG_CPACR & (0xFu << 20)); +} + +#endif /* _FPU_H_INCLUDED_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h new file mode 100644 index 00000000..9b0fdc09 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h @@ -0,0 +1,147 @@ +/** + * \file + * + * \brief Arch file for SAM. + * + * This file defines common SAM series. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _SAM_IO_ +#define _SAM_IO_ + +/* SAM3 family */ + +/* SAM3S series */ +#if (SAM3S) +# if (SAM3S8 || SAM3SD8) +# include "sam3s8.h" +# else +# include "sam3s.h" +# endif +#endif + +/* SAM3U series */ +#if (SAM3U) +# include "sam3u.h" +#endif + +/* SAM3N series */ +#if (SAM3N) +# include "sam3n.h" +#endif + +/* SAM3XA series */ +#if (SAM3XA) +# include "sam3xa.h" +#endif + +/* SAM4S series */ +#if (SAM4S) +# include "sam4s.h" +#endif + +/* SAM4L series */ +#if (SAM4L) +# include "sam4l.h" +#endif + +/* SAM4E series */ +#if (SAM4E) +# include "sam4e.h" +#endif + +/* SAM4N series */ +#if (SAM4N) +# include "sam4n.h" +#endif + +/* SAM4C series */ +#if (SAM4C) +# include "sam4c.h" +#endif + +/* SAM4CM series */ +#if (SAM4CM) +# if (SAM4CMP32 || SAM4CMS32) +# include "sam4cm32.h" +# else +# include "sam4cm.h" +# endif +#endif + +/* SAM4CP series */ +#if (SAM4CP) +# include "sam4cp.h" +#endif + +/* SAMG51 series */ +#if (SAMG51) +# include "samg51.h" +#endif + +/* SAMG53 series */ +#if (SAMG53) +# include "samg53.h" +#endif + +/* SAMG54 series */ +#if (SAMG54) +# include "samg54.h" +#endif + +/* SAMG55 series */ +#if (SAMG55) +# include "samg55.h" +#endif + +/* SAMV71 series */ +#if (SAMV71) +# include "samv71.h" +#endif + +/* SAMV70 series */ +#if (SAMV70) +# include "samv70.h" +#endif + +/* SAME70 series */ +#if (SAME70) +# include "same70.h" +#endif + +/* SAMS70 series */ +#if (SAMS70) +# include "sams70.h" +#endif + +#endif /* _SAM_IO_ */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld new file mode 100644 index 00000000..ff960430 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld @@ -0,0 +1,174 @@ +/** + * \file + * + * Copyright (c) 2015 Microchip Technology Inc. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * \asf_license_stop + * + */ + +/*------------------------------------------------------------------------------ + * Linker script for running in internal FLASH on the ATSAME70Q21 + *----------------------------------------------------------------------------*/ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00200000 + ram (rwx) : ORIGIN = 0x20400000, LENGTH = 0x00060000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : 0x2000; +__ram_end__ = ORIGIN(ram) + LENGTH(ram) - 4; + +/* The heapsize used by the application. NOTE: you need to adjust according to your application. */ +HEAP_SIZE = DEFINED(HEAP_SIZE) ? HEAP_SIZE : 0x200; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + /* heap section */ + .heap (NOLOAD): + { + . = ALIGN(8); + _sheap = .; + . = . + HEAP_SIZE; + . = ALIGN(8); + _eheap = .; + } > ram + + . = ALIGN(4); + _end = . ; + _ram_end_ = ORIGIN(ram) + LENGTH(ram) -1 ; +} + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in new file mode 100644 index 00000000..1ba06e0b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in @@ -0,0 +1,486 @@ +# List of available make goals: +# +# all Default target, builds the project +# clean Clean up the project +# rebuild Rebuild the project +# debug_flash Builds the project and debug in flash +# debug_sram Builds the project and debug in sram +# +# doc Build the documentation +# cleandoc Clean up the documentation +# rebuilddoc Rebuild the documentation +# +# \file +# +# Copyright (c) 2011 - 2018 Microchip Technology Inc. and its subsidiaries. +# +# \asf_license_start +# +# \page License +# +# Subject to your compliance with these terms, you may use Microchip +# software and any derivatives exclusively with Microchip products. +# It is your responsibility to comply with third party license terms applicable +# to your use of third party software (including open source software) that +# may accompany Microchip software. +# +# THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, +# WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, +# INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, +# AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE +# LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL +# LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE +# SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE +# POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT +# ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY +# RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, +# THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. +# +# \asf_license_stop +# + +# Include the config.mk file from the current working path, e.g., where the +# user called make. +include config.mk + +# Tool to use to generate documentation from the source code +DOCGEN ?= doxygen + +# Look for source files relative to the top-level source directory +VPATH := $(PRJ_PATH) + +# Output target file +project_type := $(PROJECT_TYPE) + +# Output target file +ifeq ($(project_type),flash) +target := $(TARGET_FLASH) +linker_script := $(PRJ_PATH)/$(LINKER_SCRIPT_FLASH) +debug_script := $(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH) +else +target := $(TARGET_SRAM) +linker_script := $(PRJ_PATH)/$(LINKER_SCRIPT_SRAM) +debug_script := $(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM) +endif + +# Output project name (target name minus suffix) +project := $(basename $(target)) + +# Output target file (typically ELF or static library) +ifeq ($(suffix $(target)),.a) +target_type := lib +else +ifeq ($(suffix $(target)),.elf) +target_type := elf +else +$(error "Target type $(target_type) is not supported") +endif +endif + +# Allow override of operating system detection. The user can add OS=Linux or +# OS=Windows on the command line to explicit set the host OS. +# +# This allows to work around broken uname utility on certain systems. +ifdef OS + ifeq ($(strip $(OS)), Linux) + os_type := Linux + endif + ifeq ($(strip $(OS)), Windows) + os_type := windows32_64 + endif +endif + +os_type ?= $(strip $(shell uname)) + +ifeq ($(os_type),windows32) +os := Windows +else +ifeq ($(os_type),windows64) +os := Windows +else +ifeq ($(os_type),windows32_64) +os ?= Windows +else +ifeq ($(os_type),) +os := Windows +else +# Default to Linux style operating system. Both Cygwin and mingw are fully +# compatible (for this Makefile) with Linux. +os := Linux +endif +endif +endif +endif + +# Output documentation directory and configuration file. +docdir := ../doxygen/html +doccfg := ../doxygen/doxyfile.doxygen + +CROSS ?= arm-none-eabi- +AR := $(CROSS)ar +AS := $(CROSS)as +CC := $(CROSS)gcc +CPP := $(CROSS)gcc -E +CXX := $(CROSS)g++ +LD := $(CROSS)g++ +NM := $(CROSS)nm +OBJCOPY := $(CROSS)objcopy +OBJDUMP := $(CROSS)objdump +SIZE := $(CROSS)size +GDB := $(CROSS)gdb + +RM := rm +ifeq ($(os),Windows) +RMDIR := rmdir /S /Q +else +RMDIR := rmdir -p --ignore-fail-on-non-empty +endif + +# On Windows, we need to override the shell to force the use of cmd.exe +ifeq ($(os),Windows) +SHELL := cmd +endif + +# Strings for beautifying output +MSG_CLEAN_FILES = "RM *.o *.d" +MSG_CLEAN_DIRS = "RMDIR $(strip $(clean-dirs))" +MSG_CLEAN_DOC = "RMDIR $(docdir)" +MSG_MKDIR = "MKDIR $(dir $@)" + +MSG_INFO = "INFO " +MSG_PREBUILD = "PREBUILD $(PREBUILD_CMD)" +MSG_POSTBUILD = "POSTBUILD $(POSTBUILD_CMD)" + +MSG_ARCHIVING = "AR $@" +MSG_ASSEMBLING = "AS $@" +MSG_BINARY_IMAGE = "OBJCOPY $@" +MSG_COMPILING = "CC $@" +MSG_COMPILING_CXX = "CXX $@" +MSG_EXTENDED_LISTING = "OBJDUMP $@" +MSG_IHEX_IMAGE = "OBJCOPY $@" +MSG_LINKING = "LN $@" +MSG_PREPROCESSING = "CPP $@" +MSG_SIZE = "SIZE $@" +MSG_SYMBOL_TABLE = "NM $@" + +MSG_GENERATING_DOC = "DOXYGEN $(docdir)" + +# Don't use make's built-in rules and variables +MAKEFLAGS += -rR + +# Don't print 'Entering directory ...' +MAKEFLAGS += --no-print-directory + +# Function for reversing the order of a list +reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1)) + +# Hide command output by default, but allow the user to override this +# by adding V=1 on the command line. +# +# This is inspired by the Kbuild system used by the Linux kernel. +ifdef V + ifeq ("$(origin V)", "command line") + VERBOSE = $(V) + endif +endif +ifndef VERBOSE + VERBOSE = 0 +endif + +ifeq ($(VERBOSE), 1) + Q = +else + Q = @ +endif + +arflags-gnu-y := $(ARFLAGS) +asflags-gnu-y := $(ASFLAGS) +cflags-gnu-y := $(CFLAGS) +cxxflags-gnu-y := $(CXXFLAGS) +cppflags-gnu-y := $(CPPFLAGS) +cpuflags-gnu-y := +dbgflags-gnu-y := $(DBGFLAGS) +libflags-gnu-y := $(foreach LIB,$(LIBS),-l$(LIB)) +ldflags-gnu-y := $(LDFLAGS) +flashflags-gnu-y := +clean-files := +clean-dirs := + +clean-files += $(wildcard $(target) $(project).map) +clean-files += $(wildcard $(project).hex $(project).bin) +clean-files += $(wildcard $(project).lss $(project).sym) +clean-files += $(wildcard $(build)) + +# Use pipes instead of temporary files for communication between processes +cflags-gnu-y += -pipe +asflags-gnu-y += -pipe +ldflags-gnu-y += -pipe + +# Archiver flags. +arflags-gnu-y += rcs + +# Always enable warnings. And be very careful about implicit +# declarations. +cflags-gnu-y += -Wall -Wstrict-prototypes -Wmissing-prototypes +cflags-gnu-y += -Werror-implicit-function-declaration +cxxflags-gnu-y += -Wall +# IAR doesn't allow arithmetic on void pointers, so warn about that. +cflags-gnu-y += -Wpointer-arith +cxxflags-gnu-y += -Wpointer-arith + +# Preprocessor flags. +cppflags-gnu-y += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),-I$(INC)) +asflags-gnu-y += $(foreach INC,$(addprefix $(PRJ_PATH)/,$(INC_PATH)),'-Wa,-I$(INC)') + +# CPU specific flags. +cpuflags-gnu-y += -mcpu=$(ARCH) -mthumb -D=__$(PART)__ + +# Dependency file flags. +depflags = -MD -MP -MQ $@ + +# Debug specific flags. +ifdef BUILD_DEBUG_LEVEL +dbgflags-gnu-y += -g$(BUILD_DEBUG_LEVEL) +else +dbgflags-gnu-y += -g3 +endif + +# Optimization specific flags. +ifdef BUILD_OPTIMIZATION +optflags-gnu-y = -O$(BUILD_OPTIMIZATION) +else +optflags-gnu-y = $(OPTIMIZATION) +endif + +# Always preprocess assembler files. +asflags-gnu-y += -x assembler-with-cpp +# Compile C files using the GNU99 standard. +cflags-gnu-y += -std=gnu99 +# Compile C++ files using the GNU++98 standard. +cxxflags-gnu-y += -std=gnu++98 + +# Don't use strict aliasing (very common in embedded applications). +cflags-gnu-y += -fno-strict-aliasing +cxxflags-gnu-y += -fno-strict-aliasing + +# Separate each function and data into its own separate section to allow +# garbage collection of unused sections. +cflags-gnu-y += -ffunction-sections -fdata-sections +cxxflags-gnu-y += -ffunction-sections -fdata-sections + +# Various cflags. +cflags-gnu-y += -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int +cflags-gnu-y += -Wmain -Wparentheses +cflags-gnu-y += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused +cflags-gnu-y += -Wuninitialized -Wunknown-pragmas -Wfloat-equal -Wundef +cflags-gnu-y += -Wshadow -Wbad-function-cast -Wwrite-strings +cflags-gnu-y += -Wsign-compare -Waggregate-return +cflags-gnu-y += -Wmissing-declarations +cflags-gnu-y += -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations +cflags-gnu-y += -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long +cflags-gnu-y += -Wunreachable-code +cflags-gnu-y += -Wcast-align +cflags-gnu-y += --param max-inline-insns-single=500 + +# Garbage collect unreferred sections when linking. +ldflags-gnu-y += -Wl,--gc-sections + +# Use the linker script if provided by the project. +ifneq ($(strip $(linker_script)),) +ldflags-gnu-y += -Wl,-T $(linker_script) +endif + +# Output a link map file and a cross reference table +ldflags-gnu-y += -Wl,-Map=$(project).map,--cref + +# Add library search paths relative to the top level directory. +ldflags-gnu-y += $(foreach _LIB_PATH,$(addprefix $(PRJ_PATH)/,$(LIB_PATH)),-L$(_LIB_PATH)) + +a_flags = $(cpuflags-gnu-y) $(depflags) $(cppflags-gnu-y) $(asflags-gnu-y) -D__ASSEMBLY__ +c_flags = $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cflags-gnu-y) +cxx_flags= $(cpuflags-gnu-y) $(dbgflags-gnu-y) $(depflags) $(optflags-gnu-y) $(cppflags-gnu-y) $(cxxflags-gnu-y) +l_flags = -Wl,--entry=Reset_Handler -Wl,--cref $(cpuflags-gnu-y) $(optflags-gnu-y) $(ldflags-gnu-y) +ar_flags = $(arflags-gnu-y) + +# Source files list and part informations must already be included before +# running this makefile + +# If a custom build directory is specified, use it -- force trailing / in directory name. +ifdef BUILD_DIR + build-dir := $(dir $(BUILD_DIR))$(if $(notdir $(BUILD_DIR)),$(notdir $(BUILD_DIR))/) +else + build-dir = +endif + +# Create object files list from source files list. +obj-y := $(addprefix $(build-dir), $(addsuffix .o,$(basename $(CSRCS) $(ASSRCS)))) +# Create dependency files list from source files list. +dep-files := $(wildcard $(foreach f,$(obj-y),$(basename $(f)).d)) + +clean-files += $(wildcard $(obj-y)) +clean-files += $(dep-files) + +clean-dirs += $(call reverse,$(sort $(wildcard $(dir $(obj-y))))) + +# Default target. +.PHONY: all +ifeq ($(project_type),all) +all: + $(MAKE) all PROJECT_TYPE=flash + $(MAKE) all PROJECT_TYPE=sram +else +ifeq ($(target_type),lib) +all: $(target) $(project).lss $(project).sym +else +ifeq ($(target_type),elf) +all: prebuild $(target) $(project).lss $(project).sym $(project).hex $(project).bin postbuild +endif +endif +endif + +prebuild: +ifneq ($(strip $(PREBUILD_CMD)),) + @echo $(MSG_PREBUILD) + $(Q)$(PREBUILD_CMD) +endif + +postbuild: +ifneq ($(strip $(POSTBUILD_CMD)),) + @echo $(MSG_POSTBUILD) + $(Q)$(POSTBUILD_CMD) +endif + +# Clean up the project. +.PHONY: clean +clean: + @$(if $(strip $(clean-files)),echo $(MSG_CLEAN_FILES)) + $(if $(strip $(clean-files)),$(Q)$(RM) $(clean-files),) + @$(if $(strip $(clean-dirs)),echo $(MSG_CLEAN_DIRS)) +# Remove created directories, and make sure we only remove existing +# directories, since recursive rmdir might help us a bit on the way. +ifeq ($(os),Windows) + $(Q)$(if $(strip $(clean-dirs)), \ + $(RMDIR) $(strip $(subst /,\,$(clean-dirs)))) +else + $(Q)$(if $(strip $(clean-dirs)), \ + for directory in $(strip $(clean-dirs)); do \ + if [ -d "$$directory" ]; then \ + $(RMDIR) $$directory; \ + fi \ + done \ + ) +endif + +# Rebuild the project. +.PHONY: rebuild +rebuild: clean all + +# Debug the project in flash. +.PHONY: debug_flash +debug_flash: all + $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_FLASH)" -ex "reset" -readnow -se $(TARGET_FLASH) + +# Debug the project in sram. +.PHONY: debug_sram +debug_sram: all + $(GDB) -x "$(PRJ_PATH)/$(DEBUG_SCRIPT_SRAM)" -ex "reset" -readnow -se $(TARGET_SRAM) + +.PHONY: objfiles +objfiles: $(obj-y) + +# Create object files from C source files. +$(build-dir)%.o: %.c $(MAKEFILE_PATH) config.mk + $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) +ifeq ($(os),Windows) + $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) +else + $(Q)test -d $(dir $@) || mkdir -p $(dir $@) +endif + @echo $(MSG_COMPILING) + $(Q)$(CC) $(c_flags) -c $< -o $@ + +# Create object files from C++ source files. +$(build-dir)%.o: %.cpp $(MAKEFILE_PATH) config.mk + $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) +ifeq ($(os),Windows) + $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) +else + $(Q)test -d $(dir $@) || mkdir -p $(dir $@) +endif + @echo $(MSG_COMPILING_CXX) + $(Q)$(CXX) $(cxx_flags) -c $< -o $@ + +# Preprocess and assemble: create object files from assembler source files. +$(build-dir)%.o: %.S $(MAKEFILE_PATH) config.mk + $(Q)test -d $(dir $@) || echo $(MSG_MKDIR) +ifeq ($(os),Windows) + $(Q)test -d $(patsubst %/,%,$(dir $@)) || mkdir $(subst /,\,$(dir $@)) +else + $(Q)test -d $(dir $@) || mkdir -p $(dir $@) +endif + @echo $(MSG_ASSEMBLING) + $(Q)$(CC) $(a_flags) -c $< -o $@ + +# Include all dependency files to add depedency to all header files in use. +include $(dep-files) + +ifeq ($(target_type),lib) +# Archive object files into an archive +$(target): $(MAKEFILE_PATH) config.mk $(obj-y) + @echo $(MSG_ARCHIVING) + $(Q)$(AR) $(ar_flags) $@ $(obj-y) + @echo $(MSG_SIZE) + $(Q)$(SIZE) -Bxt $@ +else +ifeq ($(target_type),elf) +# Link the object files into an ELF file. Also make sure the target is rebuilt +# if the common Makefile.sam.in or project config.mk is changed. +$(target): $(linker_script) $(MAKEFILE_PATH) config.mk $(obj-y) + @echo $(MSG_LINKING) + $(Q)$(LD) $(l_flags) $(obj-y) $(libflags-gnu-y) -o $@ + @echo $(MSG_SIZE) + $(Q)$(SIZE) -Ax $@ + $(Q)$(SIZE) -Bx $@ +endif +endif + +# Create extended function listing from target output file. +%.lss: $(target) + @echo $(MSG_EXTENDED_LISTING) + $(Q)$(OBJDUMP) -h -S $< > $@ + +# Create symbol table from target output file. +%.sym: $(target) + @echo $(MSG_SYMBOL_TABLE) + $(Q)$(NM) -n $< > $@ + +# Create Intel HEX image from ELF output file. +%.hex: $(target) + @echo $(MSG_IHEX_IMAGE) + $(Q)$(OBJCOPY) -O ihex $(flashflags-gnu-y) $< $@ + +# Create binary image from ELF output file. +%.bin: $(target) + @echo $(MSG_BINARY_IMAGE) + $(Q)$(OBJCOPY) -O binary $< $@ + +# Provide information about the detected host operating system. +.SECONDARY: info-os +info-os: + @echo $(MSG_INFO)$(os) build host detected + +# Build Doxygen generated documentation. +.PHONY: doc +doc: + @echo $(MSG_GENERATING_DOC) + $(Q)cd $(dir $(doccfg)) && $(DOCGEN) $(notdir $(doccfg)) + +# Clean Doxygen generated documentation. +.PHONY: cleandoc +cleandoc: + @$(if $(wildcard $(docdir)),echo $(MSG_CLEAN_DOC)) + $(Q)$(if $(wildcard $(docdir)),$(RM) --recursive $(docdir)) + +# Rebuild the Doxygen generated documentation. +.PHONY: rebuilddoc +rebuilddoc: cleandoc doc diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h new file mode 100644 index 00000000..7cacde3d --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h @@ -0,0 +1,329 @@ +/** + * \file + * + * \brief Preprocessor macro repeating utils. + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _MREPEAT_H_ +#define _MREPEAT_H_ + +/** + * \defgroup group_sam_utils_mrepeat Preprocessor - Macro Repeat + * + * \ingroup group_sam_utils + * + * \{ + */ + +#include "preprocessor.h" + + +//! Maximal number of repetitions supported by MREPEAT. +#define MREPEAT_LIMIT 256 + +/*! \brief Macro repeat. + * + * This macro represents a horizontal repetition construct. + * + * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. + * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with + * the current repetition number and the auxiliary data argument. + * \param data Auxiliary data passed to macro. + * + * \return macro(0, data) macro(1, data) ... macro(count - 1, data) + */ +#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) + +#define MREPEAT0( macro, data) +#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) +#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) +#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) +#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) +#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) +#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) +#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) +#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) +#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) +#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) +#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) +#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) +#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) +#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) +#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) +#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) +#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) +#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) +#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) +#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) +#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) +#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) +#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) +#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) +#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) +#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) +#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) +#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) +#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) +#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) +#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) +#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) +#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) +#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) +#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) +#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) +#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) +#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) +#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) +#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) +#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) +#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) +#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) +#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) +#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) +#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) +#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) +#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) +#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) +#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) +#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) +#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) +#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) +#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) +#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) +#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) +#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) +#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) +#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) +#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) +#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) +#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) +#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) +#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) +#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) +#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) +#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) +#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) +#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) +#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) +#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) +#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) +#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) +#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) +#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) +#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) +#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) +#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) +#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) +#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) +#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) +#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) +#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) +#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) +#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) +#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) +#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) +#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) +#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) +#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) +#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) +#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) +#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) +#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) +#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) +#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) +#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) +#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) +#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) +#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) +#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) +#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) +#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) +#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) +#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) +#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) +#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) +#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) +#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) +#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) +#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) +#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) +#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) +#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) +#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) +#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) +#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) +#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) +#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) +#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) +#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) +#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) +#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) +#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) +#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) +#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) +#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) +#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) +#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) +#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) +#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) +#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) +#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) +#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) +#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) +#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) +#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) +#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) +#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) +#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) +#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) +#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) +#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) +#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) +#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) +#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) +#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) +#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) +#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) +#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) +#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) +#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) +#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) +#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) +#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) +#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) +#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) +#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) +#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) +#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) +#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) +#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) +#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) +#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) +#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) +#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) +#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) +#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) +#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) +#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) +#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) +#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) +#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) +#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) +#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) +#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) +#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) +#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) +#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) +#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) +#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) +#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) +#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) +#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) +#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) +#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) +#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) +#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) +#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) +#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) +#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) +#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) +#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) +#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) +#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) +#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) +#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) +#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) +#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) +#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) +#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) +#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) +#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) +#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) +#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) +#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) +#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) +#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) +#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) +#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) +#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) +#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) +#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) +#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) +#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) +#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) +#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) +#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) +#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) +#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) +#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) +#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) +#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) +#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) +#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) +#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) +#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) +#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) +#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) +#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) +#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) +#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) +#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) +#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) +#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) +#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) +#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) +#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) +#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) +#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) +#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) +#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) +#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) +#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) +#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) +#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) +#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) +#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) +#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) +#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) +#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) +#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) +#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) +#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) +#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) +#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) + +/** + * \} + */ + +#endif // _MREPEAT_H_ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h new file mode 100644 index 00000000..abf2c11e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h @@ -0,0 +1,45 @@ +/** + * \file + * + * \brief Preprocessor utils. + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _PREPROCESSOR_H_ +#define _PREPROCESSOR_H_ + +#include "tpaste.h" +#include "stringz.h" +#include "mrepeat.h" + + +#endif // _PREPROCESSOR_H_ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h new file mode 100644 index 00000000..8e917041 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h @@ -0,0 +1,75 @@ +/** + * \file + * + * \brief Preprocessor stringizing utils. + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _STRINGZ_H_ +#define _STRINGZ_H_ + +/** + * \defgroup group_sam_utils_stringz Preprocessor - Stringize + * + * \ingroup group_sam_utils + * + * \{ + */ + +/*! \brief Stringize. + * + * Stringize a preprocessing token, this token being allowed to be \#defined. + * + * May be used only within macros with the token passed as an argument if the token is \#defined. + * + * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) + * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to + * writing "A0". + */ +#define STRINGZ(x) #x + +/*! \brief Absolute stringize. + * + * Stringize a preprocessing token, this token being allowed to be \#defined. + * + * No restriction of use if the token is \#defined. + * + * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is + * equivalent to writing "A0". + */ +#define ASTRINGZ(x) STRINGZ(x) + +/** + * \} + */ + +#endif // _STRINGZ_H_ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h new file mode 100644 index 00000000..68499289 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h @@ -0,0 +1,95 @@ +/** + * \file + * + * \brief Preprocessor token pasting utils. + * + * Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef _TPASTE_H_ +#define _TPASTE_H_ + +/** + * \defgroup group_sam_utils_tpaste Preprocessor - Token Paste + * + * \ingroup group_sam_utils + * + * \{ + */ + +/*! \name Token Paste + * + * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. + * + * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. + * + * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by + * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is + * equivalent to writing U32. + */ +//! @{ +#define TPASTE2( a, b) a##b +#define TPASTE3( a, b, c) a##b##c +#define TPASTE4( a, b, c, d) a##b##c##d +#define TPASTE5( a, b, c, d, e) a##b##c##d##e +#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f +#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g +#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h +#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i +#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j +//! @} + +/*! \name Absolute Token Paste + * + * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. + * + * No restriction of use if the tokens are \#defined. + * + * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined + * as 32 is equivalent to writing U32. + */ +//! @{ +#define ATPASTE2( a, b) TPASTE2( a, b) +#define ATPASTE3( a, b, c) TPASTE3( a, b, c) +#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) +#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) +#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) +#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) +#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) +#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) +#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) +//! @} + +/** + * \} + */ + +#endif // _TPASTE_H_ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h new file mode 100644 index 00000000..225e751b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h @@ -0,0 +1,103 @@ +/** + * \file + * + * \brief Status code definitions. + * + * This file defines various status codes returned by functions, + * indicating success or failure as well as what kind of failure. + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef STATUS_CODES_H_INCLUDED +#define STATUS_CODES_H_INCLUDED + +/* Note: this is a local workaround to avoid a pre-processor clash due to the + * lwIP macro ERR_TIMEOUT. */ +#if (defined(LWIP_HDR_ERR_H) || defined(__LWIP_ERR_H__)) && defined(ERR_TIMEOUT) +#if (ERR_TIMEOUT != -3) + +/* Internal check to make sure that the later restore of lwIP's ERR_TIMEOUT + * macro is set to the correct value. Note that it is highly improbable that + * this value ever changes in lwIP. */ +#error ASF developers: check lwip err.h new value for ERR_TIMEOUT +#endif +#undef ERR_TIMEOUT +#endif + +/** + * Status code that may be returned by shell commands and protocol + * implementations. + * + * \note Any change to these status codes and the corresponding + * message strings is strictly forbidden. New codes can be added, + * however, but make sure that any message string tables are updated + * at the same time. + */ +enum status_code { + STATUS_OK = 0, //!< Success + STATUS_ERR_BUSY = 0x19, + STATUS_ERR_DENIED = 0x1C, + STATUS_ERR_TIMEOUT = 0x12, + ERR_IO_ERROR = -1, //!< I/O error + ERR_FLUSHED = -2, //!< Request flushed from queue + ERR_TIMEOUT = -3, //!< Operation timed out + ERR_BAD_DATA = -4, //!< Data integrity check failed + ERR_PROTOCOL = -5, //!< Protocol error + ERR_UNSUPPORTED_DEV = -6, //!< Unsupported device + ERR_NO_MEMORY = -7, //!< Insufficient memory + ERR_INVALID_ARG = -8, //!< Invalid argument + ERR_BAD_ADDRESS = -9, //!< Bad address + ERR_BUSY = -10, //!< Resource is busy + ERR_BAD_FORMAT = -11, //!< Data format not recognized + ERR_NO_TIMER = -12, //!< No timer available + ERR_TIMER_ALREADY_RUNNING = -13, //!< Timer already running + ERR_TIMER_NOT_RUNNING = -14, //!< Timer not running + ERR_ABORTED = -15, //!< Operation aborted by user + /** + * \brief Operation in progress + * + * This status code is for driver-internal use when an operation + * is currently being performed. + * + * \note Drivers should never return this status code to any + * callers. It is strictly for internal use. + */ + OPERATION_IN_PROGRESS = -128, +}; + +typedef enum status_code status_code_t; + +#if defined(LWIP_HDR_ERR_H) +#define ERR_TIMEOUT -3 +#endif + +#endif /* STATUS_CODES_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c new file mode 100644 index 00000000..d74ba717 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c @@ -0,0 +1,134 @@ +/** + * \file + * + * \brief Syscalls for SAM (GCC). + * + * Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#include +#include +#include +#include + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +extern "C" { +#endif +/**INDENT-ON**/ +/// @endcond + +#undef errno +extern int errno; +extern int _end; +extern int __ram_end__; + +extern caddr_t _sbrk(int incr); +extern int link(char *old, char *new); +extern int _close(int file); +extern int _fstat(int file, struct stat *st); +extern int _isatty(int file); +extern int _lseek(int file, int ptr, int dir); +extern void _exit(int status); +extern void _kill(int pid, int sig); +extern int _getpid(void); + +extern caddr_t _sbrk(int incr) +{ + static unsigned char *heap = NULL; + unsigned char *prev_heap; + int ramend = (int)&__ram_end__; + + if (heap == NULL) { + heap = (unsigned char *)&_end; + } + prev_heap = heap; + + if (((int)prev_heap + incr) > ramend) { + return (caddr_t) -1; + } + + heap += incr; + + return (caddr_t) prev_heap; +} + +extern int link(char *old, char *new) +{ + return -1; +} + +extern int _close(int file) +{ + return -1; +} + +extern int _fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + + return 0; +} + +extern int _isatty(int file) +{ + return 1; +} + +extern int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +extern void _exit(int status) +{ + asm("BKPT #0"); + for (;;); +} + +extern void _kill(int pid, int sig) +{ + return; +} + +extern int _getpid(void) +{ + return -1; +} + +/// @cond 0 +/**INDENT-OFF**/ +#ifdef __cplusplus +} +#endif +/**INDENT-ON**/ +/// @endcond diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt new file mode 100644 index 00000000..422f7fe8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt @@ -0,0 +1,20 @@ +/* + * Only the CMSIS required parts for ASF are included here, go to the below + * address for the full package: + * http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php + * + * The library file thirdparty/CMSIS/Lib/GCC/libarm_cortexM4lf_math_softfp.a was generated by ATMEL, which + * is support -mfloat-abi=softfp compiler flag, and this is also the default selection for device that + * have FPU module and enabled. + * If customer want to use -mfloat-abi=hard compiler flag, the project compile/link flag and link library + * should be manual modified. The library thirdparty/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a is used for + * -mfloat-abi=hard configration. + * + * __CORTEX_SC is not defined for cortex-m0+, and may cause compiler warning, so the include file + * thirdparty/CMSIS/Include/core_cmInstr.h was modified to void such warning. + * Modified from: + * #if (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) + * to: + * #if (__CORTEX_M >= 0x03) || ((defined(__CORTEX_SC)) && (__CORTEX_SC >= 300)) + * + */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c67c8672dbf9fdcf4bf64a22791e24c9f1688d1d GIT binary patch literal 179946 zcmdSARdgK7vaTzzm@Q_qn3*kRvY1&dW@gD2Gcz+<%*@QpXfZQOSN7a2IbP5i3js^~jb^w69wY38QBg>yI(t390 z;#Nl1A7*|Z0t^X0x&gj^eBht~R)&9E{5JM)zW(^26SQ`;av)%#lQcE7*C1f}ZH|C} z`LBlcuZI0k!$|+T(IWV#&EMVs!{�JHUs{ztqbE?5!Q`3;^~Y+C;3a9DX+p1b@jE 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

-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

4@+o^W>VaQIc%93|-p(KNG*_h^!tqtqn=-d=u+P zT!V68ks|IYu?)9gDIVL>k0=}KbAavJrrH?-=5b@HUHJo=Ju!NZ;x~PUhyl@wGlLW zL2z5;pGF~e-0znVa7d}ki_51V4%6Fe7`tk|4aGvLp5bdmXWHV6O0013@JGQ!{tt|-zm5}cg_`u^somabd8&t3SK)Vz@I|&+%Ml!~#Luk&v$H&o! zRs7<|=QN7A0$l;$9OMt51u&;GANewYwnFeil&9~z{v@$Rw`FjiZt-V`3H@tAX)6Vp2Ua zccmrQECq9V8)kLO=4cT@W)b0?WoM^Q#_xoyEqVN5+8}} zYjY%>w;0kViZQHV-qOVgcbT&<^vcy2Ocq;vg7`k`4mwZ!+~H)_a0U6pC}h_VCrkWB zZsD?`n2X=7mXE<|zpPXW$o&rHeSh+Hm+@Hh^LEy8pt!(21g$hEWV7G>+hy$TXjAW8 zr^=3xxCU<8Wo$y)L8hZ`mP>fV0EBO3kg>POb8Pex^7btB*vHkO>& zO0~2YT@Tcsf}a?y z1cI~&W8&8#ba%)ct1#A9%+RkUOA|@lPj?pz;?_r%gSF=1HdF%$)Tyi`vxgYZp&A}- zttave`>7g3{V&05fm_8b%lovc2HfGCf|BvZcYdFcz8BpJzN$mTMvohytgb(9XPq|F z*_vaxw*9%;vs-op+L?cC{5VqaCk2TZpeGB-BKM6ejGwTKzcD@1&#s}uar26LvOZBD z2u3?+tyt1W$&abH?WZ9Ku@4$UxV=wyXRm!8Tn<{R@DVul6>cWZ2)%P7tYsDja(m)# zz?=Or1T81d1ykE=>E^v9na#CQ=&-L>TFBB?C!2@;t@FX_+bqT_LJI#;_K~6R%+&_f zDCC15tY5eDXzkP;DuCK7+?EHD*6%q!hoR6t)Y~h+vZ$E=Es?Ky=_;^R=>i6Pk z2YA1`5*P59MLXfSuP{M*2QHN%E&!V{=H@~aGnM!|Aku!5yMR9M;j~}uhtF{xs;%w& zpM|niX6>B%=^Xf;n=)_gyM=3i#@T1QTO_$h;gdZZI0Sw56?caoK#=;~fkA=Ne&`e5 zWZWtIs+BlH2n5b)5o*mqDOd3wz*gba zaD<(c7-#xAdV*l!u4|p1wcO3#pulPqHHvU%)3YZeSwoXgOf9OAbDA_6I$P4^x$E}T-ILrJa@)}y@j2t&2&oWOF`{S@(ZO~oyw^R znK?a|eSUdC;WNxnPh2M0F++|qiC1h7Sz__boXggFn3WJJB4_q>K(j|JQ%*%}lvHxi zxXc}eP1Ku<_n7hn<|uyH82`8C{aL}`q)@3*s8s}J3bgo6l{0NkGgSDTjyO$^-o*fP@KZx{UTE>PBc8-1Q1Kk9o0*#h?-CcB2|c9i23&+ zj?S)m@PHNjHP|Tyz4}_{Gmj=K=i7T*VDpf;DOrpvN-uxrDTqj;3{a;g@uv^b!y(fA zi^=Mi=b(Hb?^*hmG~!r(iN}PpE4wDVelH{^=#2M4RrI=~wQwPFiwTlilCh>O?oH>z z)qpBZeTUPd%6^7T5kzy0utT1L5WW7rgLaK=tD-9@unjJv9l8=B(b{8R!2S9_;xxb0 z{p(k(yk%9g=C|}|(CTEX?^cWQ0_?kRw!b3WQOO{6cxeg+2y|f{;G88+v3=4H-Ek~+ zydM$2w-_4?e>Kmo?ddz=)cA5UNp*zh&p-V` zp0vCK$GsO9v!?=mV|2F~i9@=Lt<2LTj1N%6@f^1ea#nv%Wc?EUrhW}h)OR?|o7ua{ zuSM{U-rMxqIxeKFC~hRn%ZS5QTfrYvq-ips4SkCicD9pB{B!D-@$Ki#o*Wi#O-txy zUA!gl&wJ}19`;|8z=8=AGiOi521R4@i`rWe?WQa2L@~oq{Exs&QXVwjA3H-Hze=KY zR*BA7cnFpP%rc`1C`@aPZO?wSc?V?>KNd>t!Z~2>wo0~n1&OtjU!9A&5cOR!$DG3U z-Ql6Mfq3@AcChSGYVKaGeJ+~psd-YX>DKW)cwKExO>XzKQjE4OcPu%e7)+0tW+ym! z>8v`^&c1)@>%FqZFFR0FjTDJ1#rAw8y~t_ZrY>Nq#+rTPdQ2I8CL7W#;+;$HV$jcZ zB)hNVbzDrhnbBpB9%C`2b{c1#+n4hrkxUVk@}jC%bhWw@$hVNZe+q5ESb}d27$Hh1 zgGFg!OjWTwhWIJ0cNs51j$ki>1vN$dg>NA{%dy$(`j%tyl@(6lXRRA@u}1!92E|+L z&v7l}KTUD+h&b#t?C5lTzO03`y$ShDPG?wk$=`f9CRRNhx+?KAk0ByW?jpxFtScF>7B36Icx@lL zS1A!unT~Fys+2b!q=uWpd(iVBq@yuGC;g!L%)d}d#Oe0LatV7kHFs`IownQY!$<}6Z=v)zdzPH>qMf z4fpCygpOWiRr}lf*!z9F<#NIu=j&HlJmoU4T2b`D&mo(jE50cDNku0go@cB+wfzEl zl0NgTNttoK#5a`J8*0q)4JGh~Y6IO2ULjrVe;xOWdBefK;h5iWkeJQlt0C~S!vpqx zjZBTfb_3ZneqX}=EU!@dO1Goh1IoDmHM0PCRZeJn_)gJt>+J<(foJuNl#y`rI*QEs zRF56oB6H7&jBepmDnC!=^P#$K=0(itmMo90pl))0jOZh|x8QNnM+ySJsn7dYy2**D zh~|?#w#Ws33!nG*g-fDR5b-8^Y$pU zzYUx7rcjxDgCTE|AQ7 zo7|j&$TGnrmy?KAPGExSTx#*Hi;9R=MqmOpx<*l8g7jR>%q_7j0-BuV8}G%LuHfrW3kSavTMYRM*ZIA0S;lI-FVDfQD!$@@P;pK z5@)+ru~o4(eWxN^$b8r_88q35Gc;Ic##-`iK%$M2?xA@+b~+mJ2eu=rQh)jgY&FxI zs)y|CgP<>{MbEW6JjQeQ$(%s)(V3&|kHrU}ICc*0ofP6HYlD<#Q@!d5fv+p^_m>I7 z={&Ahbi&hgYUu~52MH6m8C^%$Mu+v4yT$XDt5s`iUy%$e)T(Do=JTy?;N>*(9MAGE z45Qb423Lw_7Ia7I+Dknu5{o|DY$Mwa5C+t3%33udUm*iJsJRrG>(p4Kv~WKY$r zZ;R*atm+`C5Q7n+LNos2c?C`FnUQO`)<}Jw$#IttCbl1!$gd%QvRhbY(2QU}DORBP zg(vxhcn5q86QY~i;zGt98Q~J1s#FUDD$&Og(+;ON>{4X))O16&v#t1BH{m*u21pPY@;ytV8#(yB&@E88=Zv)oc_%8NkHr@RI~gUsG+UDqrB z+@V2@3mXS_hk8pa24tMnUZYLR$>6r9lU@VAq>B-Et|rDN&Ogh6wW{{jHi;|Wf3w~I zy8H+@f8*a56-rO3>Llaa5dB85!CaiEtFyKBUK}5-sXk)7apPZHvGljxoi|uqT@ZH* z_icX}7c$Y9`+iJ*!}>`5nCm<9GHq8=G0%O3^H}b?dh(kXR3>(V={@DQqunIxUVgYU z>b$InHan@e<<;C;p7nXJ+(B%~fqOykn5seg#Os!wdwIlxeVM_%qMaNyv;$CDq_&wx;Q+Y)pur(@58E;m#*9~|TEt{O<}@ajQGn{MY?js*>}y7&ek z4X_L_3~LTuqD6G&agF47aYno zCG(Dh4CEe<+?d6opRO8N%`G0;QVqQFI7D8$8hcTdHQdk;T}NSrC= zw?=NnSXvkyY&2ztP)f1daRf#*jNjZsoU+1RCE2aT6 z;svx3wBx=TV--WRg`oV9$S3OjJVB%AWcH(i8tPt$`t`-U7RxkbI8uEfO)w| zJu=(GebRBal134-6Sqkfuw7lF5}AF}KIOQ3L8BB|W#?5QP0NrjLk!Q@Rg6WtJyT4W zuHl1>>WVE>LcgvBQ{0}ei5~@e)7(`Y4P@*pNlMQQUaE$PJ4v>?oDGK3YBrg;xz?@> zFL&J9kL>)hrV(g#$IGs{aVLI>hB3sPMv5_3k>($t?AL|tYTsBt%yL`jy@;H2w_;Wv z`)T#7gjD(|EBUhI2|4>9p$o!@g?l$4tML-6`*5VIK@;-`Px!0-@O1g0S_)eV!i+At zGpTLwkWW7srisETS+364P zT{-IkdCEnNoP5H3t4mbuHkFNfX7fsymlgny&f%!R9H+~OBgx;ytj@oQN8Tb1$2@D^ z81E>g_y*kP4Y&8J_A?B#wY@!d9a^HSW*r+&!1F9lp|1Yjdhfc#V`sC|H?m>2!_6j! zGz^`R$2ekdnqSA}K4inl(H0T0K~~Me6csTd=qRmggfnn-Y;=-H_$8!c`mZ{diGJ2u!*x+c=WLV>fs(HTExPCsvE&5sNVw==GRB&h1 zq3oDhm)Je!^BR0(hh5?4_1*?H?s0iHm1PvWaPM}(J@uw(3|W7tvSk%Jhf*a-ZX2>iH+)Su=T1MKnx>?8f`1##x7 zaprzfnY1KhHE##SSo)VtOYuxg`Ak}hu^LjC8cLXSX?Pkkm>P1J8fq995*VzwccWx5 z>GJS2q%baIFfLRu>0}j2y zY5E_6csTIIg~Cq`mTUzY1rj6~(_u9)y~OX)$PwbMDYq2P_{8 zImbUz9Hq(A&r1%xjQBBC2~7IY@(lSgdNe;voQ>|eVKzAD6a_AWEdzJOx!=3Jax?e@ zgj7^IKqIXht?z2y(c<`phWK{|9=(G1i{CX@rM@|IbE{RSOdsu7ah0SlLmNvH5~~mq zzbcT;n-#F0b2>v>Q79Yp7HVXLFYG?ino$gZGo}_rlY8;2|golLKWJs3m+a<$* z9E+)0ZVE%2-gQCY{%vH4tN+6bb2L-q;hv|KJtxEG--UZs9nPcnRUSLE>=9<6W7s1# zXpD7V=-wZ={G`I+w%2%=*f96^LO@|+D%M(Fh>vsAQ)EBh{;Epd(Bj|BCtiCkmai}q z{aqfP-R)^_0JFD#h_N`Y(dbmCI z@f(0!UUZ@1t7sURKL$lCK3DF!tmcHinngcEGi0&d6vv3OtBkasuE(>xnbGxy3D75} z$fTeh7HF7^yzW|!3J?uKo;TTt=h9f};(ZNzm)MP?k4$hyIb&RZy8h-+P5whR{UOHn zV~npffFL1`5o?fCYp9i))YFd7H9d3GdGxaHlD}frfPMD%5mNE!r#HLnHFo{HQZXy# zuGY_2+ke44({9tRe7k3m=6;`xvYFSHxNOg?(H|cyP86VU=q=Umk%XO7+L-9ydy*Oh z5qgdoT|5{9pp_%7iLLbj1izo~UkYDJjw&NGwTZ1P#sss-Lx^XB0R zk?HX9;bGAAMWpIa>k z$B&SVC&Fii?6y2d`iMnoST$N0rgt_Ld+nXUU6$EO$>@eq1W#5lsxfqJ%Oor;XOi3w zR4)i)eo#(_p5lgbP+b~HQ!cC66xWF|Zq}*FO`b?R(|4bK=V38n+9*+e+ka`4oUxl6 z&5%Gb>+Vq@BbMkY!hgEGU$EF_k5EpbyxJh6Hk=$x5JvnthK zX$!2bR({JI?-6V@cxG6r!s?;tYps$eD0ww-(%3$QUP#M1>|u~i^BuhKdxXSF83|~K z3dvMevVi#g-E6e;N0q1|)R}BP3si@>!wF{YLmB>C7~elEx4EAiXa!VMPvc zRJS2kqv@6CO1WdLpoHv5F0j^8j$MGHH~&kd>v6j#t1P;hYTrxEi!Cy)e>CgFD=d!a zxAr9P?h5be*0BA$#2GZ?1PTwHKB8yCfhUidB<|S^`s?m1v&hY&(}A$oOOhczbEo;) z=>v^lK0FZtkcA)nC$n94{!)Qo-4WeMMy>V?shieN>CHu7Wz{rEc+DBs5^=D(AVU#pS6vQ4`m0hPq&bf1! zQ2}Vg%Lz1CycF4F6=*o}&aq_mV~BoB`aSP~pbGedX=C^o!@HCBs`~aY@@{B3`lAWn zgw`3q?dC#AZfW(6p9L=1`cJ`=Kf5r|@di4vn1o>MdveIuor1MS(tKGxo^2)|pw>FI zEJH^NkGx!fw;mIL5J$t}tVa$Mvx~mbfo0H_%?3@6-A03&Pn#rX7%Jwgp%sRF?<8Pf zb42r2zLb!+&PzJ>LO#@Fr>(ct;;M&h{t#dLGsA&|ywzi?C-V6C^bK*IZCy&5Kte%U zL1w0B1QC{J`o4@79qhqUIqpAnU#GsD4VZ%_I}EvUtw&4KRX;9 zRPiX;&fcjTKv^Jud!PI5edN@A1=M>hJXJOtBYqL|kgi{qQ1EjSYvY9PIo^r9KM`3A zX#3tSe13dOzVcPyQ~I~|W@nR%Uy8Qc$plxvY(_1igRooHltO|o=31(kpkT_mqf~DK z+$Msf%waS9_t+I;+!YA-16lJ$N^4-nennF&7g5G@Ar0KI0eYpNp4)u<+dBvgg< z0aN`&jiY*t12;BK4W1VF9V*kcsbgOE6CbhfQz7ia)gc5vX1c`?z6y-ZqIq_|9YSi# zf$0Q&p9DI;sE~(u9WB57z(=Y#NPXt;T?i6Ma$H=K2qi^7AEPhZcuNztJoE^2_L%LE zhNiE5>Incq|NdJW-GXL^ySo6>*Md`B0>v6P>QI9)9C-B|6Mh0u8IBL|@4NU+yLH9W zF9>^-V?Mjg9hSStBMC{sayJ4z^_A54UY7TjIWHP7<8?UO{eYcNG^op&3#*E(PWVL z@Ez`J=<`UoUCP@#%&#EByl(P4!EY*riW?vN{6=)%;SeF*v|icSY9$NY^JWHlI*81l z3f%f~!0|)wcVhCxmAKI-sLe+liW+|!ygs*Bw^n_1nGuW4wvQ#UJq_&_0loIzG#Au} z>4#i13hKtUEeFqf>Z$(XqdCDJ^QDgP7_Q{FCl|j?Nz;vhD0Z0f`gS;^4 z#ZW=p8;Rp21sk7!Ze?>N@D6a&{G&`bR1oCzM_$p_?+8@b4LrOhU{R>M`xCmc{)x(8pE-AaT`?@Dt-7cxNhR5 zQHw7eFYRmqq5I&b1kEQM^eyTEQuv4l@|^m2)yxc&2v<;qARKXW;PGko(IN+W{0&ZE z9j#eokP*VWkAwU)`FE=vPC9To*FA@Aml24FykHj+fNH(PpbiAqd(0Ox;AU|AEwRaE z7VAQ^SDsq?U85;<$N-j=pmE|yItKv*Y}+dm@;*Ax?t-S@PvrZVLXO+*xe`*BA2ADb zWYyV(t$vIjg-^3jg>^*WXH})^;Z13&2PGt-l;Li2#Nj6Hm`Re|o2b#1VeB#nlTp~m z-S!~&O-A^GF+vQJh3S?l9_OXv1-z3yiUq3t-Vx@@iX} z6L{6}#aJ3oX94nZe$;ud>dcAvdigdHekaIq`aCr9v)ne`NP@=zGF_iu)k`OHTKcK^ zW4F1|vroTO%jT6llTRGMcRhdP=od9r+kn!WRxL9(yZ&>(Mq_B(4~qNd?a%r>kteWl|>nsWBp( z<47>t5;pWaY@fd3UBB<<>ZI^9vwe_%HV@&BsbGh_l)PsONkZehlbB11rQ#lMmJ&DZ zOgdKzEfUE!OaFxT2~y7)3OU2$YJNrAv@w%|%pAw&PhJ%S-1qoVlOLVE37i?rX`85} ze>va^c?#vQOk4}Z@fY*0Q3UUrb&yG(Aw*qvs^Km!J72Nvb)8}< zX^VZ#Ib>IhD4bg6UXHaxW#45?04w6yr*H|D#|{k`OftL^p~^9ddcN(+jj zjsSJeN}?*+7IVoeXh*ny`IX+QAkRA<`HHZG)N?0yI5Ycu7dc8j>W38Unrr8j_otb@ ze!Gpz0mSWNY~qWyczxx>%^H^yU!jRU9*3k8p!xCmhP&M&LMO8L7bR4{QTvdZo(q1> zx+++!iV%o1rb^kr7R4DEx8^&(BCHc9>`ASRoVJPn)JcCn+l12-LulXQYTA84E{~SR z{sSmm(QMF$>Y=B}2c27*;f-g&#q`ntWD{u%W7!u;@zN>d&=P?Z-iwLB2!o0DJST(W zD?DDwy1V9EzOw<#b@uOy{-IPC$>ZW8$?uj^9_@o&O0s@2OoBWVtqq}d;^1$xqNVE# zn)<3s-k#I|X=~*F{Bd%|ez`+`3+Uyw8-U(;nYH)a_2Z0qZ=@w|W$iued)Yha)yhK= z&8z71v=fiT7k?&2Huj=#2th#EJ=BCvnzd%W-f%@lo_H&x> zI=&HjbQ}7+zNk^|#!IV81*ON^nk}o2Xi1E$F(HB58UE<{F5vki4-T}4dW;VxR+a*{ zjZ{KKqst@!bwt1M70<)3`!(1O9z=?php@LuSd(HXNM$kmkN@Nj9u7!mn)}e{Etjj^ zxVb(YL1Gqp{hSi0P+CPx!S5pJb~JpV53H)D;}ftyW8zP8aEnPpXBQoP8)~2`VRSbx z{w4B#CU^>P{TNg>p(i+}M6Ns#)afQkUAFUkbxFoj{l@PT)sAEr+h-D`BtSWCbt#Rb z1|*)y(BLE?YPh_)gnR4&;)r*s{NTB!w27TfmGqrf09P}kP*qu6vRo|+u?3>BbfoFG zfU%NCYMe-{lkUn_5$QCU^*H+(_vcHXg$-&3?)DsZ4Bw!xM|JxUt^QoTsiF3hMd92?CYU~#%BBkF&f15GYQy08+=p3#dwjDB+y!`Es*rMGLqm1RGopJtW8we{3)r;^MS&5DE^w z75=3mj>v=Yqc zRhQtk?BDd=k3^>+V*g>H;@^{Js=8i2((okmh^uu;V9_GYV8!r_L3+!Y8&_p6UC>{R zrs&*RbF~$&MCrPEaaHNrs|~TL^;BqDHsge5lUoiDzC9bd{ZlttzC2Epz3Ie39o(&p z-s;#Z~{9zxxsP@Z<3tIw@NIu4kpd`m9Hf(;L?%!pDC9j&e zXPev@{2ZPHYYVi}y{oIGA{}Y|X#vJ={=BALG)7pCP*4QV+~Q0n$sy_@P6uhn_?NrX zD_-KlXk&L#vpU+IF}mlnTP73b*@{!=(ICmqNLMs%T{|>cr*@dfxaOrXm7#}RB1uu(Oh|?aAQEl2lqd|_Auh~aL%P&Aw zUS#D1`P&KVLz^sIq6_@8ITWW;G;mIz%IJo4{L!c-bZ|`X8pYG7vzjiKYJS#w+@!+7 zD`#%{Lh{_Zp2fqPLMPlX1thPx`6tbqmTiVUw#JU%$G@m!g*V#& zNATbDZ(P{9bV#_kxc>oeHa3#K@K2kSm4y3^Hj+e&zlVY(7xgS(*8^L zKjZ$J2QLT5fAQktew&HwZKnTP3m4Bnwf~azjqkrw|K|$W{?7XboNxHQ<=;8~rTe%1 ztBZf||E~Ov_OD!j`~DmL>WTY*E0LS`O|k!5gFI|+Dr95RBhe%IPt)-JZ`1r0iRG^? z-oF1%%kuX54>SDJ{!8EH4{m+-Hc|7YdD^nZE&*XRESL;TNN|E}kMr2GHc5dWcJ z_P@*h@6FG~_Fr24R|o&cl8y7tI{!J6_1}>K0?ZPYHZG=4%n~+VT}%O{#`Y$r%yOo7 z<}Ma*JCcou<-Z%OB&=M#Z|9qk5DMbIr=dssk?#ke`02(M-qj-=wh!|N$;_x9WJ%t2 zV&HrwL3+f8#}w(ONTDE~PnUa7Vu1yRujGhZ3u?wm8d$?{SJkyzwk~n)nbBSZP0#3& z-tw;UQ^OX&w7f39Uf-QBvQD!moI$LMZHruIYqd*Y#6a*wXXx8aQ2ysFIwjUe!1YVvVy)2@~e_mL>a zUs_-|4?C^424R@l-6j|#@!)4_XSjV|?xFdO$+=j~28wU%Ykvm}2i>lQK8!x}qPX^w ztS#1V@aWhVRq)Xtdytx=eXU{nj_(4OTsSwIwq>PO{uX0Jty@!JcR{2u zrLDq0tBPF`?Bif8`@?_D`s6rLEk`&Am-~LU-YlB%H`4XEP(IgV8njk@h8N${F8faM z%)$iDiECAv#h8Nf3O-^@IYfoGQ*(XWBO@-nigW4pWJZy>*;{^NYD_afCH$)0fLoCM zE~Ik%hkdJ1OV>sAK9LEd+}C)ex46bEe(g=WX%%fN#`j7QQ_TBrNU|GBbzyiML7nNP z-{3yUE`;1#F+B*hBITKN*@=;gqEgL3`s?V1hvNZ3U>dIsuyB98K67(f(#p_Wpp%-Z zewg4C{N%Ju`QRO=_8)JQ58#5ZOotlIC%7AbAv^=q`sXRzumX>V)x@h!&1uEuP>+WS z>TSHb#{xSsfgY8Aj!AzFVENX}Yk?QM+k9IS<13Ricjob3(c(wNbFBZ%;|h~f4;jXI z6?HL;ARgFvWy5(fF#I9nP9Y^Iqy1tYT75{=M$x`v=h*Oom22e@uk**=bKr7UwU@OK zD`u2$j$Qc)o7onzRik3mt2+LL%n`p0;^TVvW6$HssM=E)`rV7_MV8}^matOYW!qHL z>r3uqlEmX{Q*2AM)oiJd=ky?U0(PtEwrmoEevL!Nlc)3UaHg8NHc-Gh)cv6bvp^w5 zpvYn)_#Ey&M*?+d1aE`4BO@kuOU`Ak6sLN?;?E)0s6?XIVDXfcof;tPFh$TizTf+a zZZI5UYf*0d=A+1fw8+){9*OXIW3)jm)rA4~9xt*LpAwbtt`ekVnL%!-Xg>JBfiXfkFJdFON(7v?VJihWfcBEQ`uXd zI8~G6g4#5+v|i3^WcrMyGL~ww7B27*?e(k#4s#I=qob+0h8353X%FaA1UVIBB0iR_ z8UNHt%wx0L4Ud+qS|(&h<^9GG)bx1wicuhNg0d_zjOMA zietiEn2LV23>NDt?=be4MAE2%P1+cwuft;%v?eqlgK>=c#Wi#{=6Yfhxz*Z)oESM3 z&jTIA@g?YbZ(i2&L5BXnhE#x}n{}mR8;k*G55~TX$3%Ki{{Gl}=vZBqxn#gK%OANO zX0b5H#mPa2o+0X#>Wr~Kg0E_vRoXFu6By%6wKXNh!T2;ro{6eUeTd#@ZqX`wkBIX; z>a+{!()7K#TZwLJQ#0aAYUSFcV|=xp354hBMt5|A*a0%EvP9-4cVAkVbi8xak$m|_ zb@(DO)0~E_LN+GUK=XlL7`wik@2Fz&u$jWWy~C)b zoIT=Zlfb}FCAlpgA5m$8H53Vqujh!ssHn+TQJv!P1?e-hh4jrXvtWXAe8@)>b z5e6%KcHX^n$D)kxnqlbL-=V$qRxQw;**@JrE{?8tCx8JDq<=t zlcncs<^pL@R(txa{7%V{*f>g=KVDxuxxmK0<;7E}XD$h&)1@s>)tVQCHO0Oy ziuB|xAuH{qVJq$rlah^LwSFmoY>9NW%JUlewQcRiGihUHxmlVoNt&jzfHikza%sgC z!y=7`^2vyxKF_KwIa59XMNcik$hnF`j`HQ~{jHoadJlV98oh*f_rZtZ$TKgqwmW!3;M6*F(-Xl8!K&U~-brdE!n=H`DL?Y+5H*$2tG3pU zxVMHwRv7~5lFh~Wte?Py!y2RqsZKjnsz&pJ-yBjft4IPVao!P`Y7Oyy2Yr}2 za3{muFO5{)2~SdorLWySimaT^97uKpS@vTy(-j`c+(b^_P}K!;nx~Ne zFqh2Qg(Yk*RN|Qi9?BeVDN5 z;zds)$5t{OebKqLozC#PQ#T143uU{vFmr0{d%rBAERbGo#8g5KbI68ciRz}RiKrti zYH$XEH^Ruxqlmu?PuF*B(8eZ=Y(!S}7!i<^NM9{QInHh~9PUHrt4W&;@Hr>Q{dmGc z26S(~eytuX-$aQ?@XV1&jjre8aMnngKVQbSXc>+Y!jY)O66X9Aq3vQ7?R2A;h%AI_ z6oF+f?U;|10Zb?D*$3Jr8pUB1NLML?P=KXLU@?#@utpX=5iAc<$+JiRi-XK)Q*$li zjmoeJq|oERUqD{82f6R1l@(N>(eqfd4@o0h6fTi(9Ay^4ORVl|`y| zWls{&hqPxG=tI?00DKYywaK1`V-d@qbJGgNZv4a|mO0m;eIe_~%DWQ*2}_^1V)@5! z2-3cg^ql5-Xn=x%E#y6mz!u7$G++y9&mr(h0W_QIp$1x&IsZ(nAG0wFY+>k;1-8)i zAOQuKdz^s+^gR{19ugn}ne!SfMd|ZgEJZ0t5l~;Aha5;UZ;rW#94NrhBL)

45<* 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

  • YNJcs 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 folder. + * - arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit) + * - arm_cortexM7bfdp_math.lib (Cortex-M7, Big endian, Double Precision Floating Point Unit) + * - arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit) + * - arm_cortexM7bfsp_math.lib (Cortex-M7, Big endian and Single Precision Floating Point Unit on) + * - arm_cortexM7l_math.lib (Cortex-M7, Little endian) + * - arm_cortexM7b_math.lib (Cortex-M7, Big endian) + * - arm_cortexM4lf_math.lib (Cortex-M4, Little endian, Floating Point Unit) + * - arm_cortexM4bf_math.lib (Cortex-M4, Big endian, Floating Point Unit) + * - arm_cortexM4l_math.lib (Cortex-M4, Little endian) + * - arm_cortexM4b_math.lib (Cortex-M4, Big endian) + * - arm_cortexM3l_math.lib (Cortex-M3, Little endian) + * - arm_cortexM3b_math.lib (Cortex-M3, Big endian) + * - arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+, Little endian) + * - arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+, Big endian) + * - arm_ARMv8MBLl_math.lib (Armv8-M Baseline, Little endian) + * - arm_ARMv8MMLl_math.lib (Armv8-M Mainline, Little endian) + * - arm_ARMv8MMLlfsp_math.lib (Armv8-M Mainline, Little endian, Single Precision Floating Point Unit) + * - arm_ARMv8MMLld_math.lib (Armv8-M Mainline, Little endian, DSP instructions) + * - arm_ARMv8MMLldfsp_math.lib (Armv8-M Mainline, Little endian, DSP instructions, Single Precision Floating Point Unit) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M cores with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * Define the appropriate preprocessor macro ARM_MATH_CM7 or ARM_MATH_CM4 or ARM_MATH_CM3 or + * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application. + * For Armv8-M cores define preprocessor macro ARM_MATH_ARMV8MBL or ARM_MATH_ARMV8MML. + * Set preprocessor macro __DSP_PRESENT if Armv8-M Mainline core supports DSP instructions. + * + * + * Examples + * -------- + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Toolchain Support + * ------------ + * + * The library has been developed and tested with MDK version 5.14.0.0 + * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. + * + * Building the Library + * ------------ + * + * The library installer contains a project file to rebuild libraries on MDK toolchain in the CMSIS\\DSP_Lib\\Source\\ARM folder. + * - arm_cortexM_math.uvprojx + * + * + * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional preprocessor macros detailed above. + * + * Preprocessor Macros + * ------------ + * + * Each library project have different preprocessor macros. + * + * - UNALIGNED_SUPPORT_DISABLE: + * + * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access + * + * - ARM_MATH_BIG_ENDIAN: + * + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * - ARM_MATH_MATRIX_CHECK: + * + * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices + * + * - ARM_MATH_ROUNDING: + * + * Define macro ARM_MATH_ROUNDING for rounding on support functions + * + * - ARM_MATH_CMx: + * + * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target + * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and + * ARM_MATH_CM7 for building the library on cortex-M7. + * + * - ARM_MATH_ARMV8MxL: + * + * Define macro ARM_MATH_ARMV8MBL for building the library on Armv8-M Baseline target, ARM_MATH_ARMV8MML for building library + * on Armv8-M Mainline target. + * + * - __FPU_PRESENT: + * + * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for floating point libraries. + * + * - __DSP_PRESENT: + * + * Initialize macro __DSP_PRESENT = 1 when Armv8-M Mainline core supports DSP instructions. + * + *
    + * CMSIS-DSP in ARM::CMSIS Pack + * ----------------------------- + * + * The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories: + * |File/Folder |Content | + * |------------------------------|------------------------------------------------------------------------| + * |\b CMSIS\\Documentation\\DSP | This documentation | + * |\b CMSIS\\DSP_Lib | Software license agreement (license.txt) | + * |\b CMSIS\\DSP_Lib\\Examples | Example projects demonstrating the usage of the library functions | + * |\b CMSIS\\DSP_Lib\\Source | Source files for rebuilding the library | + * + *
    + * Revision History of CMSIS-DSP + * ------------ + * Please refer to \ref ChangeLog_pg. + * + * Copyright Notice + * ------------ + * + * Copyright (C) 2010-2015 Arm Limited. All rights reserved. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
    + *     typedef struct
    + *     {
    + *       uint16_t numRows;     // number of rows of the matrix.
    + *       uint16_t numCols;     // number of columns of the matrix.
    + *       float32_t *pData;     // points to the data of the matrix.
    + *     } arm_matrix_instance_f32;
    + * 
    + * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
    + *     pData[i*numCols + j]
    + * 
    + * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() + * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
    + * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
    + * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
    + * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
    + * 
    + * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
    + *     ARM_MATH_SIZE_MISMATCH
    + * 
    + * Otherwise the functions return + *
    + *     ARM_MATH_SUCCESS
    + * 
    + * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the \#define + *
    + *     ARM_MATH_MATRIX_CHECK
    + * 
    + * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#else + #error Unknown compiler +#endif + + +#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ + +#if defined(ARM_MATH_CM7) + #include "core_cm7.h" + #define ARM_MATH_DSP +#elif defined (ARM_MATH_CM4) + #include "core_cm4.h" + #define ARM_MATH_DSP +#elif defined (ARM_MATH_CM3) + #include "core_cm3.h" +#elif defined (ARM_MATH_CM0) + #include "core_cm0.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_CM0PLUS) + #include "core_cm0plus.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_ARMV8MBL) + #include "core_armv8mbl.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_ARMV8MML) + #include "core_armv8mml.h" + #if (defined (__DSP_PRESENT) && (__DSP_PRESENT == 1)) + #define ARM_MATH_DSP + #endif +#else + #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML" +#endif + +#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */ +#include "string.h" +#include "math.h" +#ifdef __cplusplus +extern "C" +{ +#endif + + + /** + * @brief Macros required for reciprocal calculation in Normalized LMS + */ + +#define DELTA_Q31 (0x100) +#define DELTA_Q15 0x5 +#define INDEX_MASK 0x0000003F +#ifndef PI + #define PI 3.14159265358979f +#endif + + /** + * @brief Macros required for SINE and COSINE Fast math approximations + */ + +#define FAST_MATH_TABLE_SIZE 512 +#define FAST_MATH_Q31_SHIFT (32 - 10) +#define FAST_MATH_Q15_SHIFT (16 - 10) +#define CONTROLLER_Q31_SHIFT (32 - 9) +#define TABLE_SPACING_Q31 0x400000 +#define TABLE_SPACING_Q15 0x80 + + /** + * @brief Macros required for SINE and COSINE Controller functions + */ + /* 1.31(q31) Fixed value of 2/360 */ + /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ +#define INPUT_SPACING 0xB60B61 + + /** + * @brief Macro for Unaligned Support + */ +#ifndef UNALIGNED_SUPPORT_DISABLE + #define ALIGN4 +#else + #if defined (__GNUC__) + #define ALIGN4 __attribute__((aligned(4))) + #else + #define ALIGN4 __align(4) + #endif +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + ARM_MATH_SUCCESS = 0, /**< No error */ + ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ + ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ + ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation. */ + ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ + ARM_MATH_SINGULAR = -5, /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */ + ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ + } arm_status; + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ + typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ + typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ + typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ + typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ + typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ + typedef double float64_t; + + /** + * @brief definition to read/write two 16 bit values. + */ +#if defined ( __CC_ARM ) + #define __SIMD32_TYPE int32_t __packed + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE __attribute__((always_inline)) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE __attribute__((always_inline)) + +#elif defined ( __GNUC__ ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE __attribute__((always_inline)) + +#elif defined ( __ICCARM__ ) + #define __SIMD32_TYPE int32_t __packed + #define CMSIS_UNUSED + #define CMSIS_INLINE + +#elif defined ( __TI_ARM__ ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE + +#elif defined ( __CSMC__ ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED + #define CMSIS_INLINE + +#elif defined ( __TASKING__ ) + #define __SIMD32_TYPE __unaligned int32_t + #define CMSIS_UNUSED + #define CMSIS_INLINE + +#else + #error Unknown compiler +#endif + +#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) +#define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) +#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) +#define __SIMD64(addr) (*(int64_t **) & (addr)) + +#if !defined (ARM_MATH_DSP) + /** + * @brief definition to pack two 16 bit values. + */ +#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ + (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) +#define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ + (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) + +#endif /* !defined (ARM_MATH_DSP) */ + + /** + * @brief definition to pack four 8 bit values. + */ +#ifndef ARM_MATH_BIG_ENDIAN + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) +#else + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) + +#endif + + + /** + * @brief Clips Q63 to Q31 values. + */ + CMSIS_INLINE __STATIC_INLINE q31_t clip_q63_to_q31( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; + } + + /** + * @brief Clips Q63 to Q15 values. + */ + CMSIS_INLINE __STATIC_INLINE q15_t clip_q63_to_q15( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); + } + + /** + * @brief Clips Q31 to Q7 values. + */ + CMSIS_INLINE __STATIC_INLINE q7_t clip_q31_to_q7( + q31_t x) + { + return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? + ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; + } + + /** + * @brief Clips Q31 to Q15 values. + */ + CMSIS_INLINE __STATIC_INLINE q15_t clip_q31_to_q15( + q31_t x) + { + return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? + ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; + } + + /** + * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. + */ + + CMSIS_INLINE __STATIC_INLINE q63_t mult32x64( + q63_t x, + q31_t y) + { + return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + + (((q63_t) (x >> 32) * y))); + } + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. + */ + + CMSIS_INLINE __STATIC_INLINE uint32_t arm_recip_q31( + q31_t in, + q31_t * dst, + q31_t * pRecipTable) + { + q31_t out; + uint32_t tempVal; + uint32_t index, i; + uint32_t signBits; + + if (in > 0) + { + signBits = ((uint32_t) (__CLZ( in) - 1)); + } + else + { + signBits = ((uint32_t) (__CLZ(-in) - 1)); + } + + /* Convert input sample to 1.31 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 24); + index = (index & INDEX_MASK); + + /* 1.31 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q63_t) in * out) >> 31); + tempVal = 0x7FFFFFFFu - tempVal; + /* 1.31 with exp 1 */ + /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */ + out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1U); + } + + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. + */ + CMSIS_INLINE __STATIC_INLINE uint32_t arm_recip_q15( + q15_t in, + q15_t * dst, + q15_t * pRecipTable) + { + q15_t out = 0; + uint32_t tempVal = 0; + uint32_t index = 0, i = 0; + uint32_t signBits = 0; + + if (in > 0) + { + signBits = ((uint32_t)(__CLZ( in) - 17)); + } + else + { + signBits = ((uint32_t)(__CLZ(-in) - 17)); + } + + /* Convert input sample to 1.15 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 8); + index = (index & INDEX_MASK); + + /* 1.15 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q31_t) in * out) >> 15); + tempVal = 0x7FFFu - tempVal; + /* 1.15 with exp 1 */ + out = (q15_t) (((q31_t) out * tempVal) >> 14); + /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */ + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1); + } + + +/* + * @brief C custom defined intrinsic function for M3 and M0 processors + */ +#if !defined (ARM_MATH_DSP) + + /* + * @brief C custom defined QADD8 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QADD8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QSUB8 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QSUB8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QADD16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QADD16( + uint32_t x, + uint32_t y) + { +/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */ + q31_t r = 0, s = 0; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHADD16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHADD16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSUB16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSUB16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QASX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHASX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSAX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSAX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SMUSDX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUSDX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + /* + * @brief C custom defined SMUADX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUADX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + + /* + * @brief C custom defined QADD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE int32_t __QADD( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y))); + } + + + /* + * @brief C custom defined QSUB for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE int32_t __QSUB( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y))); + } + + + /* + * @brief C custom defined SMLAD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMLAD( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLADX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMLADX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLSDX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMLSDX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint64_t __SMLALD( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALDX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint64_t __SMLALDX( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMUAD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUAD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SMUSD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUSD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SXTB16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SXTB16( + uint32_t x) + { + return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) | + ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) )); + } + + /* + * @brief C custom defined SMMLA for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE int32_t __SMMLA( + int32_t x, + int32_t y, + int32_t sum) + { + return (sum + (int32_t) (((int64_t) x * y) >> 32)); + } + +#endif /* !defined (ARM_MATH_DSP) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] S points to an instance of the Q7 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] S points to an instance of the Q15 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not a supported value. + */ + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] S points to an instance of the floating-point FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q15; + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_casd_df1_inst_f32; + + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float64_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f64; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q31; + + + /** + * @brief Floating-point matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pScratch); + + + /** + * @brief Q31, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + + /** + * @brief Q31 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix scaling. + * @param[in] pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData); + + + /** + * @brief Q15 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData); + + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData); + + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ +#if !defined (ARM_MATH_DSP) + q15_t A1; + q15_t A2; +#else + q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ +#endif + q15_t state[3]; /**< The state array of length 3. */ + q15_t Kp; /**< The proportional gain. */ + q15_t Ki; /**< The integral gain. */ + q15_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q15; + + /** + * @brief Instance structure for the Q31 PID Control. + */ + typedef struct + { + q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + q31_t A2; /**< The derived gain, A2 = Kd . */ + q31_t state[3]; /**< The state array of length 3. */ + q31_t Kp; /**< The proportional gain. */ + q31_t Ki; /**< The integral gain. */ + q31_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q31; + + /** + * @brief Instance structure for the floating-point PID Control. + */ + typedef struct + { + float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + float32_t A2; /**< The derived gain, A2 = Kd . */ + float32_t state[3]; /**< The state array of length 3. */ + float32_t Kp; /**< The proportional gain. */ + float32_t Ki; /**< The integral gain. */ + float32_t Kd; /**< The derivative gain. */ + } arm_pid_instance_f32; + + + + /** + * @brief Initialization function for the floating-point PID Control. + * @param[in,out] S points to an instance of the PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_f32( + arm_pid_instance_f32 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + */ + void arm_pid_reset_f32( + arm_pid_instance_f32 * S); + + + /** + * @brief Initialization function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q31( + arm_pid_instance_q31 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + */ + + void arm_pid_reset_q31( + arm_pid_instance_q31 * S); + + + /** + * @brief Initialization function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q15( + arm_pid_instance_q15 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q15 PID Control. + * @param[in,out] S points to an instance of the q15 PID Control structure + */ + void arm_pid_reset_q15( + arm_pid_instance_q15 * S); + + + /** + * @brief Instance structure for the floating-point Linear Interpolate function. + */ + typedef struct + { + uint32_t nValues; /**< nValues */ + float32_t x1; /**< x1 */ + float32_t xSpacing; /**< xSpacing */ + float32_t *pYData; /**< pointer to the table of Y values */ + } arm_linear_interp_instance_f32; + + /** + * @brief Instance structure for the floating-point bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + float32_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_f32; + + /** + * @brief Instance structure for the Q31 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q31_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q31; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q15_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q15; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q7_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q7; + + + /** + * @brief Q7 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q15( + arm_cfft_radix2_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q31; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q31( + arm_cfft_radix2_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Instance structure for the Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q31; + +/* Deprecated */ + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix2_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_f32( + arm_cfft_radix2_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix4_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q15_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_q15; + +void arm_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_q31; + +void arm_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_f32; + + void arm_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the Q15 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q15; + + arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Instance structure for the Q31 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q31; + + arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint16_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_f32; + + arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f32 ; + +arm_status arm_rfft_fast_init_f32 ( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen); + +void arm_rfft_fast_f32( + arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + float32_t *pTwiddle; /**< points to the twiddle factor table. */ + float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] S points to an instance of the Q31 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] S points to an instance of the Q15 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + + /** + * @brief Floating-point vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Dot product of floating-point vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + + /** + * @brief Dot product of Q7 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + + /** + * @brief Dot product of Q15 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Dot product of Q31 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Partial convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q7 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_f32; + + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] S points to an instance of the floating-point FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_stereo_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f64; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_stereo_df2T_init_f32( + arm_biquad_cascade_stereo_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f64( + arm_biquad_cascade_df2T_instance_f64 * S, + uint8_t numStages, + float64_t * pCoeffs, + float64_t * pState); + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the Q15 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + */ + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q31; + + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Correlation of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Correlation of Q15 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ + void arm_correlate_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + + void arm_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + + void arm_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ + void arm_correlate_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_correlate_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] S points to an instance of the floating-point sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] S points to an instance of the Q31 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] S points to an instance of the Q15 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] S points to an instance of the Q7 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cos output. + */ + void arm_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal); + + + /** + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cosine output. + */ + void arm_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
    +   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
    +   *    A0 = Kp + Ki + Kd
    +   *    A1 = (-Kp ) - (2 * Kd )
    +   *    A2 = Kd  
    + * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + */ + CMSIS_INLINE __STATIC_INLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + CMSIS_INLINE __STATIC_INLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31U); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + + /** + * @brief Process function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + CMSIS_INLINE __STATIC_INLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + +#if defined (ARM_MATH_DSP) + __SIMD32_TYPE *vstate; + + /* Implementation of PID controller */ + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in); + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + vstate = __SIMD32_CONST(S->state); + acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc); +#else + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0) * in; + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) S->A1 * S->state[0]; + acc += (q31_t) S->A2 * S->state[1]; +#endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f64( + const arm_matrix_instance_f64 * src, + arm_matrix_instance_f64 * dst); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + */ + CMSIS_INLINE __STATIC_INLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + } + + + /** + * @brief Clarke transform for Q31 version + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta; + } + + + /** + * @brief Inverse Clarke transform for Q31 version + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the subtraction, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + } + + /** + * @} end of inv_clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * The function implements the forward Park transform. + * + */ + CMSIS_INLINE __STATIC_INLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + } + + + /** + * @brief Park transform for Q31 version + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + } + + + /** + * @brief Inverse Park transform for Q31 version + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + } + + /** + * @} end of Inverse park group + */ + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
    +   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
    +   *       where x0, x1 are nearest values of input x
    +   *             y0, y1 are nearest values to output y
    +   * 
    + * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + CMSIS_INLINE __STATIC_INLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (int32_t) ((x - S->x1) / xSpacing); + + if (i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if ((uint32_t)i >= S->nValues) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues - 1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i + 1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); + + } + + /* returns output value */ + return (y); + } + + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + CMSIS_INLINE __STATIC_INLINE q31_t arm_linear_interp_q31( + q31_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (q31_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1U); + } + } + + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + CMSIS_INLINE __STATIC_INLINE q15_t arm_linear_interp_q15( + q15_t * pYData, + q31_t x, + uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (int32_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (q15_t) (y >> 20); + } + } + + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + CMSIS_INLINE __STATIC_INLINE q7_t arm_linear_interp_q7( + q7_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + uint32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + if (x < 0) + { + return (pYData[0]); + } + index = (x >> 20) & 0xfff; + + if (index >= (nValues - 1)) + { + return (pYData[nValues - 1]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (q7_t) (y >> 20); + } + } + + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + float32_t arm_sin_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q31_t arm_sin_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q15_t arm_sin_q15( + q15_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + float32_t arm_cos_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q31_t arm_cos_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q15_t arm_cos_q15( + q15_t x); + + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
    +   *      x1 = x0 - f(x0)/f'(x0)
    +   * 
    + * where x1 is the current estimate, + * x0 is the previous estimate, and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
    +   *     x0 = in/2                         [initial guess]
    +   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
    +   * 
    + */ + + + /** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Floating-point square root function. + * @param[in] in input value. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + CMSIS_INLINE __STATIC_INLINE arm_status arm_sqrt_f32( + float32_t in, + float32_t * pOut) + { + if (in >= 0.0f) + { + +#if (__FPU_USED == 1) && defined ( __CC_ARM ) + *pOut = __sqrtf(in); +#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) + *pOut = __builtin_sqrtf(in); +#elif (__FPU_USED == 1) && defined(__GNUC__) + *pOut = __builtin_sqrtf(in); +#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000) + __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in)); +#else + *pOut = sqrtf(in); +#endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + } + + + /** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut); + + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut); + + /** + * @} end of SQRT group + */ + + + /** + * @brief floating-point Circular write function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == (int32_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q15 Circular write function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q15 Circular Read function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == (q15_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q7 Circular Read function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == (q7_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + + /** + * @brief Mean value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Mean value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Floating-point complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + + /** + * @brief Q31 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + + /** + * @brief Floating-point complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q31( + q31_t * pSrcCmplx, + q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + */ + void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[in] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
    +   *   typedef struct
    +   *   {
    +   *     uint16_t numRows;
    +   *     uint16_t numCols;
    +   *     float32_t *pData;
    +   * } arm_bilinear_interp_instance_f32;
    +   * 
    + * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
    +   *     XF = floor(x)
    +   *     YF = floor(y)
    +   * 
    + * \par + * The interpolated output point is computed as: + *
    +   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
    +   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
    +   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
    +   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
    +   * 
    + * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + + /** + * + * @brief Floating-point bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1)) + { + return (0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex - 1) + (yIndex - 1) * S->numCols; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex - 1) + (yIndex) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + } + + + /** + * + * @brief Q31 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + (int32_t)nCols * (cI) ]; + x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ]; + y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return ((q31_t)(acc << 2)); + } + + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4U); + acc = ((q63_t) out * (0xFFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4U); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return ((q15_t)(acc >> 36)); + } + + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return ((q7_t)(acc >> 40)); + } + + /** + * @} end of BilinearInterpolate group + */ + + +/* SMMLAR */ +#define multAcc_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMLSR */ +#define multSub_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMULR */ +#define mult_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) + +/* SMMLA */ +#define multAcc_32x32_keep32(a, x, y) \ + a += (q31_t) (((q63_t) x * y) >> 32) + +/* SMMLS */ +#define multSub_32x32_keep32(a, x, y) \ + a -= (q31_t) (((q63_t) x * y) >> 32) + +/* SMMUL */ +#define mult_32x32_keep32(a, x, y) \ + a = (q31_t) (((q63_t) x * y ) >> 32) + + +#if defined ( __CC_ARM ) + /* Enter low optimization region - place directly above function definition */ + #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("push") \ + _Pragma ("O1") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 ) + #define LOW_OPTIMIZATION_EXIT \ + _Pragma ("pop") + #else + #define LOW_OPTIMIZATION_EXIT + #endif + + /* Enter low optimization region - place directly above function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __GNUC__ ) + #define LOW_OPTIMIZATION_ENTER \ + __attribute__(( optimize("-O1") )) + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __ICCARM__ ) + /* Enter low optimization region - place directly above function definition */ + #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 ) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define LOW_OPTIMIZATION_EXIT + + /* Enter low optimization region - place directly above function definition */ + #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 ) + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TI_ARM__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __CSMC__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TASKING__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#endif + + +#ifdef __cplusplus +} +#endif + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) +#pragma GCC diagnostic pop + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#else + #error Unknown compiler +#endif + +#endif /* _ARM_MATH_H */ + +/** + * + * End of file. + */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h new file mode 100644 index 00000000..94212eb8 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h @@ -0,0 +1,266 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h new file mode 100644 index 00000000..2d9db15a --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h @@ -0,0 +1,2085 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.0.4 + * @date 09. April 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h new file mode 100644 index 00000000..3b6bae4b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.4.0 + * @date 19. April 2017 + ******************************************************************************/ +/* + * Copyright (c) 2009-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h new file mode 100644 index 00000000..a14dc623 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h @@ -0,0 +1,2671 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
    + Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
    + Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
    + Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_INLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_INLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_INLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_INLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_INLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_INLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_INLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_INLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t)addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h new file mode 100644 index 00000000..01422033 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h @@ -0,0 +1,270 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField ) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable ) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable ) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable ) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec ) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) ) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if non-shareable) or 010b (if shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + orderedCpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + orderedCpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a new file mode 100644 index 0000000000000000000000000000000000000000..b01e81b5a55fb53cab77db33891053bf6a19f614 GIT binary patch literal 3199620 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

    bR*}iWpXd;u(4g{;m)sUx>ud0k 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 z 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 z zUMa2>Ia@vL-z?rE?i7D1z91eF|0;5NdzSa2mS>2~#O~rb;$U&OI9a?{ED`64-xoKF zKNRm0euUDcuf3H@yyn?-PvNE*hB0q_7~@fmx`B*SBlq&>%|AfAB#_k zzZ8Eh?ic?m{!Mh-*!CrgsbT~19PvDHs5nxbAWjx9Bk^qO3h^rOI`I~9yLh{JxA-IR zA@OPPIq_xj74i4tpTu{?55>QVe-pnH{~;!3+xFHI@fg_QGcnwrn&%Yw`Z41VyVGnJ zVB+!ffgv70nshu)GBo9|{kS|d`Ac1!kMA|$IHrRj`^Ti?n%me%+7RZ49w9qxq^~BC zziY2^dzsfw>LV||ThF{6d3im1M5DPT&VJ_Q=JxE_GaAjy?U~oj#Q*d6Q}S8_OJcr3 z2Yl5w=KCo}7gTQDs6*#dDZ>qRu4$q5Zd?mXusXfcHymg-%qX_Ub%U|=liP% ze6}BsW=F1G8#?NYcl*5Sq~GeEHTp;-GWv*<{O9ALALG508!`_#t=kkfEo{|{@8t>| zjW`_&1{6B2dla7e5M#oJB8icskw~PEd(O`W{qiGcXX4R__wIhLnzkpdeb=d1<+Ke~ z)vJ!=H^FBzRO70&>ZGdl>ImBB_GyUE#Hys~@V3`Ja@Kp*RRj8c+I#J<5iTekS;)3v zt>3sXsfKTQWSi0sL<>6>jxD^XkS&NjbbH~>LbvBbg9aD0`2Fubat1NgY2#!w)#>oz z{=}osz|_qtRe$;@#q~=$9p2l=GKkwbxZp2u6ctW3W&VVEZMl9&zF5<*aA?4ibL5FN zzy2s={eZ&Zh0M=zqr$fIZcdlt%?RKuW z&(H7Iwr5S_4Uy`4+cFCpRV7wWeW+bwQZ;(SWqIat`@Z{Of_rSgcWdON@!{&Uns=T0 z=vU|FP?dxJtQz1Pxn&J{WPM`w;}0d>c1Pi3g`acJrO8`qj?1vkJI3@y5pLCfg$UX;opQgt4bH z3zDiDVedCIdq254(kB^P?Dk2ls`%{01MHooecXS3JDm=B`xCd^_C9<0*T?&SDLROOzFv^o2bj7hjd7KUl5_hDNM-aIi}YP6O;5F5lKu%LP8|z zdL+f)FxMAp-Vhe)c|L<<7#wh+EqEMR6GN!8g(({9NUNbx2V*Zpe}b?Zn&W;3oy6C< zIZ5M?qaq0pTAbBMFCu(p(%bl4m9zxEO<$4p8^o`4B9kFPi`_j?ksN%4zUS@)>P13# zBo0LO8@#5?Jd@w_(0UZ`o15&;s=8|%^A?^KBwEMmdiFuqJY13R$d9WaD#YTz9#zP$uzNho0O;R@d% z6a1#YVtm5m$573OSP@xO!9Wp*lyf2RJXTXZ1N*F~s$k$^pu-!Wc2zWQH+1#@RlN8S_V1GG6Rd zRF#nY_1Dd7{DBpW^G*BtQi3y+{bnDXUjjQ>qx?$BXa!_N54p$VHq+$XC8+AqHs z0rm~{=LU1keg%R3NPvi6UQxq9E>^@7z5I9v_>LvS6L(`xa5nby4`sfbihX=NRKr0++1z0hx2_9a-4fl_)ZyPjh0CxfpD2B;Bwvk07|M3Lo z??kP<3P7zz{t?D7a+_s3KJ8I@A$JkG9Nl%JIeY!lm@qHaddtKwtEgeXp4BFNh~Q^7 z3-LKt9QYMA46tkP5-aXy9*xE%1LvFgi--Xx{)&nk2JB&Z5f3&VSeWsfSdP_mkc9zz zuw4{5XWeMdSzns`MMM}I>N%xu4Nn`*vEmztXm8>JFVA9U-DZqqQyF*yE2gBsu_Bz8 zRYUPCR&*bs)9;PJ^TUm?GgJ|_mV+X}$*XxwxfwRSi;wHE2KNznh#8O!+>I5r5UOQE zu$B$6TAo1;TIZhjE%OTuQCLFelOG&O!6m5Ynex-w)|1TjHL|#T>AV$%%NETn$21RR z&dlCZOP4O5v$S|&boRUjC1ueLD|+?pIJKDn0B=8|<%<_Dz℞7EQ&!rA6n=oH=z- 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

    |z0f{!)JZHt4YI;}>!jZx_ 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 z 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

    YMQ}p%IwZU~iOvPU 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�lDi)UX@JY`Dp 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 lnrzq8#g1YZ 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 YzfpLz@K)ij>`;@Huaw8vB5Ozfe~xKiJ^%m! literal 0 HcmV?d00001 diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a new file mode 100644 index 0000000000000000000000000000000000000000..98266c910e69f8d1a8dee49ee113af8c97b37b9a GIT binary patch literal 3199824 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�jwElHN0OKABgtd#k>tbp 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

    p}|Da;jM|F10QT>Dw}rMTbo|A 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%0D2W30Q4(7 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�P!*$0P!;%0P!>&0P!^(0P!{)0P!~*0P#2+ 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 z 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

    lQeTs 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

    |y{J<`!fb1IRSD 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

    F_@K2it~t!6&#iT2)L{bRv{85W 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

    4s?L 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 z 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 );Z_TC%c_#hT=Z-Ll=R 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�(3z`-r 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

    GzZ3e1u%Vv@CRl(`yBkbo;pxWsDW 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Ų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

    7?R(Fulei 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Ð%L+aB)4HLBR4imJ%MdNtm=t%Bd`2*WB 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 + * - SAMV71-Xplained-Ultra
    + * - SAME70-Xplained-Pro
    + * + * \section Description + * + * The acc_irq is aimed to demonstrate the usage of ACC peripheral with + * interrupt support. The DAC0 and AD0 are selected as two inputs. + * The user can change the output voltage of DAC0 and change the voltage + * on AD0. + * + * The output voltage of DAC0 is ranged from (1/6)*ADVREF to (5/6)*ADVREF,and + * the input voltage of AD0 is ranged from 0 to ADVREF. + * + * The comparison event would be generated if the voltage of one input is + * changed across the voltage of the other input. Both bigger and less events + * could be triggered by default. + * + * \section Usage + * + * -# Build the program and download it inside the evaluation board. + * -# On the computer, open and configure a terminal application + * (e.g. HyperTerminal on Microsoft Windows) with these settings: + * - 115200 bauds + * - 8 bits of data + * - No parity + * - 1 stop bit + * - No flow control + * -# In the terminal window, the + * following text should appear (values depend on the board and chip used): + * \code + * -- ACC IRQ Example xxx -- + * -- xxxxxx-xx + * -- Compiled: xxx xx xxxx xx:xx:xx -- + * -- Menu Choices for this example-- + * -- s: Set new DAC0 output voltage.-- + * -- v: Get voltage on potentiometer.-- + * -- m: Display this menu again.-- + * \endcode + * -# Input command according to the menu. + * -# Change voltage on AD0 to see what comparison event happen. + * + */ +/* + * Support and FAQ: visit
    Microchip Support + */ + +#include "asf.h" +#include "stdio_serial.h" +#include "conf_board.h" +#include "conf_clock.h" + +/** Reference voltage for DACC,in mv */ +#define VOLT_REF (3300) + +/** The maximal digital value */ +#define MAX_DIGITAL (4095) + +/** The DAC Channel value */ +#define DACC_CHANNEL_0 0 + +/** Analog control value */ +#define DACC_ANALOG_CONTROL (DACC_ACR_IBCTLCH0(0x02) \ + | DACC_ACR_IBCTLCH1(0x02)) + +#define STRING_EOL "\r" +#define STRING_HEADER "-- ACC IRQ Example --\r\n" \ + "-- "BOARD_NAME" --\r\n" \ + "-- Compiled: "__DATE__" "__TIME__" --"STRING_EOL + +/** + * Interrupt handler for the ACC. + */ +void ACC_Handler(void) +{ + uint32_t ul_status; + + ul_status = acc_get_interrupt_status(ACC); + + /* Compare Output Interrupt */ + if ((ul_status & ACC_ISR_CE) == ACC_ISR_CE) { + if (acc_get_comparison_result(ACC)) { + puts("-ISR- Voltage Comparison Result: AD0 > DAC0\r"); + } else { + puts("-ISR- Voltage Comparison Result: AD0 < DAC0\r"); + } + } +} + +/** + * Configure UART console. + */ +static void configure_console(void) +{ + const usart_serial_options_t uart_serial_options = { + .baudrate = CONF_UART_BAUDRATE, +#ifdef CONF_UART_CHAR_LENGTH + .charlength = CONF_UART_CHAR_LENGTH, +#endif + .paritytype = CONF_UART_PARITY, +#ifdef CONF_UART_STOP_BITS + .stopbits = CONF_UART_STOP_BITS, +#endif + }; + + /* Configure console UART. */ + sysclk_enable_peripheral_clock(CONSOLE_UART_ID); + stdio_serial_init(CONF_UART, &uart_serial_options); +} + +/** + * \brief Display main menu + */ +static void dsplay_menu(void) +{ + puts("-- Menu Choices for this example--\n\r" + " s: Set new DAC0 output voltage.\n\r" + " v: Get voltage on potentiometer.\n\r" + " m: Display this menu again.\r"); +} + +/** + * \brief Get voltage from user input, the input range is: + * (1/6)*ADVREF~(5/6)*ADVREF (mv) + */ +static int16_t get_input_voltage(void) +{ + uint32_t i = 0, uc_key; + int16_t us_value = 0; + int8_t c_length = 0; + int8_t ac_str_temp[5] = { 0 }; + + while (1) { + while (usart_read(CONSOLE_UART, &uc_key)) { + } + if (uc_key == '\n' || uc_key == '\r') { + puts("\r"); + break; + } + + if ('0' <= uc_key && '9' >= uc_key) { + printf("%c", uc_key); + ac_str_temp[i++] = uc_key; + + if (i >= 4) + break; + } + } + + ac_str_temp[i] = '\0'; + /* Input string length */ + c_length = i; + us_value = 0; + + /* Convert string to integer */ + for (i = 0; i < 4; i++) { + if (ac_str_temp[i] != '0') { + switch (c_length - i - 1) { + case 0: + us_value += (ac_str_temp[i] - '0'); + break; + case 1: + us_value += (ac_str_temp[i] - '0') * 10; + break; + case 2: + us_value += (ac_str_temp[i] - '0') * 100; + break; + case 3: + us_value += (ac_str_temp[i] - '0') * 1000; + break; + } + } + } + + if (us_value > (5 * VOLT_REF / 6) || us_value < (1 * VOLT_REF / 6)) { + return -1; + } + + return us_value; +} + +/** + * \brief ACC example application entry point. + * + * \return Unused (ANSI-C compatibility). + */ +int main(void) +{ + uint32_t uc_key; + int16_t s_volt = 0; + uint32_t ul_value = 0; + volatile uint32_t ul_status = 0x0; + int32_t l_volt_dac0 = 0; + + /* Initialize the system */ + sysclk_init(); + board_init(); + + /* Initialize debug console */ + configure_console(); + + /* Output example information */ + puts(STRING_HEADER); + + /* Initialize DACC */ + /* Enable clock for DACC */ + pmc_enable_periph_clk(ID_DACC); + /* Reset DACC registers */ + dacc_reset(DACC); + /* External trigger mode disabled. DACC in free running mode. */ + dacc_disable_trigger(DACC, DACC_CHANNEL_0); + /* Half word transfer mode */ + dacc_set_transfer_mode(DACC, 0); +#if (SAM3S) || (SAM3XA) + /* Power save: + * sleep mode - 0 (disabled) + * fast wakeup - 0 (disabled) + */ + dacc_set_power_save(DACC, 0, 0); +#endif + + /* Enable output channel DACC_CHANNEL */ + dacc_enable_channel(DACC, DACC_CHANNEL_0); + /* Setup analog current */ + dacc_set_analog_control(DACC, DACC_ANALOG_CONTROL); + + /* Set DAC0 output at ADVREF/2. The DAC formula is: + * + * (5/6 * VOLT_REF) - (1/6 * VOLT_REF) volt - (1/6 * VOLT_REF) + * ----------------------------------- = -------------------------- + * MAX_DIGITAL digit + * + * Here, digit = MAX_DIGITAL/2 + */ + dacc_write_conversion_data(DACC, MAX_DIGITAL / 2, DACC_CHANNEL_0); + l_volt_dac0 = (MAX_DIGITAL / 2) * (2 * VOLT_REF / 3) / MAX_DIGITAL + + VOLT_REF / 6; + + /* Enable clock for AFEC */ + afec_enable(AFEC0); + + struct afec_config afec_cfg; + + afec_get_config_defaults(&afec_cfg); + /* Initialize AFEC */ + afec_init(AFEC0, &afec_cfg); + + struct afec_ch_config afec_ch_cfg; + afec_ch_get_config_defaults(&afec_ch_cfg); + afec_ch_cfg.gain = AFEC_GAINVALUE_0; + afec_ch_set_config(AFEC0, AFEC_CHANNEL_POTENTIOMETER, &afec_ch_cfg); + /* + * Because the internal ADC offset is 0x200, it should cancel it and shift + * down to 0. + */ + afec_channel_set_analog_offset(AFEC0, AFEC_CHANNEL_POTENTIOMETER, 0x200); + + afec_set_trigger(AFEC0, AFEC_TRIG_SW); + + /* Enable channel for potentiometer. */ + afec_channel_enable(AFEC0, AFEC_CHANNEL_POTENTIOMETER); + + /* Enable clock for ACC */ + pmc_enable_periph_clk(ID_ACC); + + /* Initialize ACC */ + acc_init(ACC, ACC_MR_SELPLUS_AFE0_AD0, ACC_MR_SELMINUS_DAC0, + ACC_MR_EDGETYP_ANY, ACC_MR_INV_DIS); + + /* Enable ACC interrupt */ + NVIC_EnableIRQ(ACC_IRQn); + + /* Enable */ + acc_enable_interrupt(ACC); + + dsplay_menu(); + + while (1) { + while (usart_read(CONSOLE_UART, &uc_key)) { + } + + printf("input: %c\r\n", uc_key); + + switch (uc_key) { + case 's': + case 'S': + printf("Input DAC0 output voltage (%d~%d mv): ", + (VOLT_REF / 6), (VOLT_REF * 5 / 6)); + s_volt = get_input_voltage(); + puts("\r"); + + if (s_volt > 0) { + l_volt_dac0 = s_volt; + /* The DAC formula is: + * + * (5/6 * VOLT_REF) - (1/6 * VOLT_REF) volt - (1/6 * VOLT_REF) + * ----------------------------------- = -------------------------- + * MAX_DIGITAL digit + * + */ + ul_value = ((s_volt - (VOLT_REF / 6)) + * (MAX_DIGITAL * 6) / 4) / VOLT_REF; + dacc_write_conversion_data(DACC, ul_value, DACC_CHANNEL_0); + puts("-I- Set ok\r"); + } else { + puts("-I- Input voltage is invalid\r"); + } + break; + case 'v': + case 'V': + /* Start conversion */ + afec_start_software_conversion(AFEC0); + ul_status = afec_get_interrupt_status(AFEC0); + while ((ul_status & AFEC_ISR_EOC0) != AFEC_ISR_EOC0) { + ul_status = afec_get_interrupt_status(AFEC0); + } + /* Conversion is done */ + ul_value = afec_channel_get_value(AFEC0, AFEC_CHANNEL_POTENTIOMETER); + + /* + * Convert AFEC sample data to voltage value: + * voltage value = (sample data / max. resolution) * reference voltage + */ + s_volt = (ul_value * VOLT_REF) / MAX_DIGITAL; + printf("-I- Voltage on potentiometer(AD0) is %d mv\n\r", s_volt); + printf("-I- Voltage on DAC0 is %ld mv \n\r", (long)l_volt_dac0); + break; + + case 'm': + case 'M': + dsplay_menu(); + break; + } + } +} diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h new file mode 100644 index 00000000..b40a1d0c --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h @@ -0,0 +1,121 @@ +/** + * \file + * + * \brief Autogenerated API include file for the Atmel Software Framework (ASF) + * + * Copyright (c) 2012 Atmel Corporation. All rights reserved. + * + * \asf_license_start + * + * \page License + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name of Atmel may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 4. This software may only be redistributed and used in connection with an + * Atmel microcontroller product. + * + * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * \asf_license_stop + * + */ + +#ifndef ASF_H +#define ASF_H + +/* + * This file includes all API header files for the selected drivers from ASF. + * Note: There might be duplicate includes required by more than one driver. + * + * The file is automatically generated and will be re-written when + * running the ASF driver selector tool. Any changes will be discarded. + */ + +// From module: ACC - Analog Comparator Controller +#include + +// From module: AFEC - Analog-Front-End Controller +#include + +// From module: Common SAM compiler driver +#include +#include + +// From module: DACC - Digital-to-Analog Converter +#include + +// From module: GPIO - General purpose Input/Output +#include + +// From module: Generic board support +#include + +// From module: IOPORT - General purpose I/O service +#include + +// From module: Interrupt management - SAM implementation +#include + +// From module: MPU - Memory Protect Unit +#include + +// From module: PIO - Parallel Input/Output Controller +#include + +// From module: PMC - Power Management Controller +#include +#include + +// From module: Part identification macros +#include + +// From module: SAM FPU driver +#include + +// From module: SAME70 XPLD LED support enabled +#include + +// From module: Sleep manager - SAM implementation +#include +#include + +// From module: Standard serial I/O (stdio) - SAM implementation +#include + +// From module: System Clock Control - SAME70 implementation +#include + +// From module: UART - Univ. Async Rec/Trans +#include + +// From module: USART - Serial interface - SAM implementation for devices with both UART and USART +#include + +// From module: USART - Univ. Syn Async Rec/Trans +#include + +// From module: pio_handler support enabled +#include + +#endif // ASF_H diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_board.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_board.h new file mode 100644 index 00000000..b6e88f4b --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_board.h @@ -0,0 +1,46 @@ +/** + * \file + * + * \brief Board configuration. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CONF_BOARD_H_INCLUDED +#define CONF_BOARD_H_INCLUDED + +/* Enable ICache and DCache */ +#define CONF_BOARD_ENABLE_CACHE + +/** Enable Com Port. */ +#define CONF_BOARD_UART_CONSOLE + +#endif /* CONF_BOARD_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_clock.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_clock.h new file mode 100644 index 00000000..807969fc --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_clock.h @@ -0,0 +1,94 @@ +/** + * \file + * + * \brief SAME70 clock configuration. + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CONF_CLOCK_H_INCLUDED +#define CONF_CLOCK_H_INCLUDED + +// ===== System Clock (MCK) Source Options +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_XTAL +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_BYPASS +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_8M_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_12M_RC +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_XTAL +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_BYPASS +#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK +//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_UPLLCK + +// ===== Processor Clock (HCLK) Prescaler Options (Fhclk = Fsys / (SYSCLK_PRES)) +#define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_2 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_4 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_8 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_16 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_32 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_64 +//#define CONFIG_SYSCLK_PRES SYSCLK_PRES_3 + +// ===== System Clock (MCK) Division Options (Fmck = Fhclk / (SYSCLK_DIV)) +#define CONFIG_SYSCLK_DIV 2 + +// ===== PLL0 (A) Options (Fpll = (Fclk * PLL_mul) / PLL_div) +// Use mul and div effective values here. +#define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL +#define CONFIG_PLL0_MUL 25 +#define CONFIG_PLL0_DIV 1 + +// ===== UPLL (UTMI) Hardware fixed at 480 MHz. + +// ===== USB Clock Source Options (Fusb = FpllX / USB_div) +// Use div effective value here. +//#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 +#define CONFIG_USBCLK_SOURCE USBCLK_SRC_UPLL +#define CONFIG_USBCLK_DIV 1 + +// ===== Target frequency (Processor clock) +// - XTAL frequency: 12MHz +// - System clock source: PLLA +// - System clock prescaler: 1 (divided by 1) +// - System clock divider: 2 (divided by 2) +// - PLLA source: XTAL +// - PLLA output: XTAL * 25 / 1 +// - Processor clock: 12 * 25 / 1 / 1 = 300MHz +// - System clock: 300 / 2 = 150MHz +// ===== Target frequency (USB Clock) +// - USB clock source: UPLL +// - USB clock divider: 1 (not divided) +// - UPLL frequency: 480MHz +// - USB clock: 480 / 1 = 480MHz + +#endif /* CONF_CLOCK_H_INCLUDED */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_sleepmgr.h new file mode 100644 index 00000000..1d169755 --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_sleepmgr.h @@ -0,0 +1,42 @@ +/** + * \file + * + * \brief Chip-specific sleep manager configuration + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ +#ifndef CONF_SLEEPMGR_H +#define CONF_SLEEPMGR_H + +// Sleep manager options +#define CONFIG_SLEEPMGR_ENABLE + +#endif /* CONF_SLEEPMGR_H */ diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_uart_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_uart_serial.h new file mode 100644 index 00000000..86f9b09e --- /dev/null +++ b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_uart_serial.h @@ -0,0 +1,51 @@ +/** + * \file + * + * \brief USART Serial Configuration + * + * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. + * + * \asf_license_start + * + * \page License + * + * Subject to your compliance with these terms, you may use Microchip + * software and any derivatives exclusively with Microchip products. + * It is your responsibility to comply with third party license terms applicable + * to your use of third party software (including open source software) that + * may accompany Microchip software. + * + * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, + * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, + * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE + * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL + * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE + * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE + * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT + * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY + * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + * + * \asf_license_stop + * + */ +/* + * Support and FAQ: visit Microchip Support + */ + +#ifndef CONF_USART_SERIAL_H_INCLUDED +#define CONF_USART_SERIAL_H_INCLUDED + +/** UART Interface */ +#define CONF_UART CONSOLE_UART +/** Baudrate setting */ +#define CONF_UART_BAUDRATE (115200UL) +/** Character length setting */ +#define CONF_UART_CHAR_LENGTH US_MR_CHRL_8_BIT +/** Parity setting */ +#define CONF_UART_PARITY US_MR_PAR_NO +/** Stop bits setting */ +#define CONF_UART_STOP_BITS US_MR_NBSTOP_1_BIT + +#endif/* CONF_USART_SERIAL_H_INCLUDED */ From c982482211b057c850229fad573428218a964f75 Mon Sep 17 00:00:00 2001 From: felipebpl Date: Sun, 5 Jun 2022 20:58:41 -0300 Subject: [PATCH 02/23] reorganizando pasta --- .../ACC_EXAMPLE1.componentinfo.xml | 0 .../{ACC_EXAMPLE1 => }/ACC_EXAMPLE1.cproj | 0 .../src/ASF/common/boards/board.h | 0 .../src/ASF/common/services/clock/genclk.h | 0 .../src/ASF/common/services/clock/osc.h | 0 .../src/ASF/common/services/clock/pll.h | 0 .../src/ASF/common/services/clock/same70/genclk.h | 0 .../src/ASF/common/services/clock/same70/osc.h | 0 .../src/ASF/common/services/clock/same70/pll.h | 0 .../src/ASF/common/services/clock/same70/sysclk.c | 0 .../src/ASF/common/services/clock/same70/sysclk.h | 0 .../src/ASF/common/services/clock/sysclk.h | 0 .../src/ASF/common/services/gpio/gpio.h | 0 .../ASF/common/services/gpio/sam_gpio/sam_gpio.h | 0 .../src/ASF/common/services/ioport/ioport.h | 0 .../src/ASF/common/services/ioport/sam/ioport_pio.h | 0 .../common/services/serial/sam_uart/uart_serial.h | 0 .../src/ASF/common/services/serial/serial.h | 0 .../src/ASF/common/services/serial/usart_serial.c | 0 .../src/ASF/common/services/sleepmgr/sam/sleepmgr.c | 0 .../src/ASF/common/services/sleepmgr/sam/sleepmgr.h | 0 .../src/ASF/common/services/sleepmgr/sleepmgr.h | 0 .../src/ASF/common/utils/interrupt.h | 0 .../ASF/common/utils/interrupt/interrupt_sam_nvic.c | 0 .../ASF/common/utils/interrupt/interrupt_sam_nvic.h | 0 .../{ACC_EXAMPLE1 => }/src/ASF/common/utils/parts.h | 0 .../src/ASF/common/utils/stdio/read.c | 0 .../common/utils/stdio/stdio_serial/stdio_serial.h | 0 .../src/ASF/common/utils/stdio/write.c | 0 .../src/ASF/sam/boards/same70_xplained/init.c | 0 .../src/ASF/sam/boards/same70_xplained/led.h | 0 .../sam/boards/same70_xplained/same70_xplained.h | 0 .../src/ASF/sam/drivers/acc/acc.c | 0 .../src/ASF/sam/drivers/acc/acc.h | 0 .../ASF/sam/drivers/acc/acc_example/acc_example.h | 0 .../src/ASF/sam/drivers/afec/afec.c | 0 .../src/ASF/sam/drivers/afec/afec.h | 0 .../src/ASF/sam/drivers/dacc/dacc.c | 0 .../src/ASF/sam/drivers/dacc/dacc.h | 0 .../src/ASF/sam/drivers/mpu/mpu.c | 0 .../src/ASF/sam/drivers/mpu/mpu.h | 0 .../src/ASF/sam/drivers/pio/pio.c | 0 .../src/ASF/sam/drivers/pio/pio.h | 0 .../src/ASF/sam/drivers/pio/pio_handler.c | 0 .../src/ASF/sam/drivers/pio/pio_handler.h | 0 .../src/ASF/sam/drivers/pmc/pmc.c | 0 .../src/ASF/sam/drivers/pmc/pmc.h | 0 .../src/ASF/sam/drivers/pmc/sleep.c | 0 .../src/ASF/sam/drivers/pmc/sleep.h | 0 .../src/ASF/sam/drivers/uart/uart.c | 0 .../src/ASF/sam/drivers/uart/uart.h | 0 .../src/ASF/sam/drivers/usart/usart.c | 0 .../src/ASF/sam/drivers/usart/usart.h | 0 .../sam/utils/cmsis/same70/include/component/acc.h | 0 .../sam/utils/cmsis/same70/include/component/aes.h | 0 .../sam/utils/cmsis/same70/include/component/afec.h | 0 .../utils/cmsis/same70/include/component/chipid.h | 0 .../sam/utils/cmsis/same70/include/component/dacc.h | 0 .../sam/utils/cmsis/same70/include/component/efc.h | 0 .../sam/utils/cmsis/same70/include/component/gmac.h | 0 .../sam/utils/cmsis/same70/include/component/gpbr.h | 0 .../utils/cmsis/same70/include/component/hsmci.h | 0 .../sam/utils/cmsis/same70/include/component/i2sc.h | 0 .../sam/utils/cmsis/same70/include/component/icm.h | 0 .../sam/utils/cmsis/same70/include/component/isi.h | 0 .../utils/cmsis/same70/include/component/matrix.h | 0 .../sam/utils/cmsis/same70/include/component/mcan.h | 0 .../sam/utils/cmsis/same70/include/component/pio.h | 0 .../sam/utils/cmsis/same70/include/component/pmc.h | 0 .../sam/utils/cmsis/same70/include/component/pwm.h | 0 .../sam/utils/cmsis/same70/include/component/qspi.h | 0 .../sam/utils/cmsis/same70/include/component/rstc.h | 0 .../utils/cmsis/same70/include/component/rswdt.h | 0 .../sam/utils/cmsis/same70/include/component/rtc.h | 0 .../sam/utils/cmsis/same70/include/component/rtt.h | 0 .../utils/cmsis/same70/include/component/sdramc.h | 0 .../sam/utils/cmsis/same70/include/component/smc.h | 0 .../sam/utils/cmsis/same70/include/component/spi.h | 0 .../sam/utils/cmsis/same70/include/component/ssc.h | 0 .../sam/utils/cmsis/same70/include/component/supc.h | 0 .../sam/utils/cmsis/same70/include/component/tc.h | 0 .../sam/utils/cmsis/same70/include/component/trng.h | 0 .../utils/cmsis/same70/include/component/twihs.h | 0 .../sam/utils/cmsis/same70/include/component/uart.h | 0 .../utils/cmsis/same70/include/component/usart.h | 0 .../utils/cmsis/same70/include/component/usbhs.h | 0 .../sam/utils/cmsis/same70/include/component/utmi.h | 0 .../sam/utils/cmsis/same70/include/component/wdt.h | 0 .../utils/cmsis/same70/include/component/xdmac.h | 0 .../sam/utils/cmsis/same70/include/instance/acc.h | 0 .../sam/utils/cmsis/same70/include/instance/aes.h | 0 .../sam/utils/cmsis/same70/include/instance/afec0.h | 0 .../sam/utils/cmsis/same70/include/instance/afec1.h | 0 .../utils/cmsis/same70/include/instance/chipid.h | 0 .../sam/utils/cmsis/same70/include/instance/dacc.h | 0 .../sam/utils/cmsis/same70/include/instance/efc.h | 0 .../sam/utils/cmsis/same70/include/instance/gmac.h | 0 .../sam/utils/cmsis/same70/include/instance/gpbr.h | 0 .../sam/utils/cmsis/same70/include/instance/hsmci.h | 0 .../sam/utils/cmsis/same70/include/instance/i2sc0.h | 0 .../sam/utils/cmsis/same70/include/instance/i2sc1.h | 0 .../sam/utils/cmsis/same70/include/instance/icm.h | 0 .../sam/utils/cmsis/same70/include/instance/isi.h | 0 .../utils/cmsis/same70/include/instance/matrix.h | 0 .../sam/utils/cmsis/same70/include/instance/mcan0.h | 0 .../sam/utils/cmsis/same70/include/instance/mcan1.h | 0 .../sam/utils/cmsis/same70/include/instance/pioa.h | 0 .../sam/utils/cmsis/same70/include/instance/piob.h | 0 .../sam/utils/cmsis/same70/include/instance/pioc.h | 0 .../sam/utils/cmsis/same70/include/instance/piod.h | 0 .../sam/utils/cmsis/same70/include/instance/pioe.h | 0 .../sam/utils/cmsis/same70/include/instance/pmc.h | 0 .../sam/utils/cmsis/same70/include/instance/pwm0.h | 0 .../sam/utils/cmsis/same70/include/instance/pwm1.h | 0 .../sam/utils/cmsis/same70/include/instance/qspi.h | 0 .../sam/utils/cmsis/same70/include/instance/rstc.h | 0 .../sam/utils/cmsis/same70/include/instance/rswdt.h | 0 .../sam/utils/cmsis/same70/include/instance/rtc.h | 0 .../sam/utils/cmsis/same70/include/instance/rtt.h | 0 .../utils/cmsis/same70/include/instance/sdramc.h | 0 .../sam/utils/cmsis/same70/include/instance/smc.h | 0 .../sam/utils/cmsis/same70/include/instance/spi0.h | 0 .../sam/utils/cmsis/same70/include/instance/spi1.h | 0 .../sam/utils/cmsis/same70/include/instance/ssc.h | 0 .../sam/utils/cmsis/same70/include/instance/supc.h | 0 .../sam/utils/cmsis/same70/include/instance/tc0.h | 0 .../sam/utils/cmsis/same70/include/instance/tc1.h | 0 .../sam/utils/cmsis/same70/include/instance/tc2.h | 0 .../sam/utils/cmsis/same70/include/instance/tc3.h | 0 .../sam/utils/cmsis/same70/include/instance/trng.h | 0 .../utils/cmsis/same70/include/instance/twihs0.h | 0 .../utils/cmsis/same70/include/instance/twihs1.h | 0 .../utils/cmsis/same70/include/instance/twihs2.h | 0 .../sam/utils/cmsis/same70/include/instance/uart0.h | 0 .../sam/utils/cmsis/same70/include/instance/uart1.h | 0 .../sam/utils/cmsis/same70/include/instance/uart2.h | 0 .../sam/utils/cmsis/same70/include/instance/uart3.h | 0 .../sam/utils/cmsis/same70/include/instance/uart4.h | 0 .../utils/cmsis/same70/include/instance/usart0.h | 0 .../utils/cmsis/same70/include/instance/usart1.h | 0 .../utils/cmsis/same70/include/instance/usart2.h | 0 .../sam/utils/cmsis/same70/include/instance/usbhs.h | 0 .../sam/utils/cmsis/same70/include/instance/utmi.h | 0 .../sam/utils/cmsis/same70/include/instance/wdt.h | 0 .../sam/utils/cmsis/same70/include/instance/xdmac.h | 0 .../sam/utils/cmsis/same70/include/pio/same70j19.h | 0 .../sam/utils/cmsis/same70/include/pio/same70j19b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70j20.h | 0 .../sam/utils/cmsis/same70/include/pio/same70j20b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70j21.h | 0 .../sam/utils/cmsis/same70/include/pio/same70j21b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70n19.h | 0 .../sam/utils/cmsis/same70/include/pio/same70n19b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70n20.h | 0 .../sam/utils/cmsis/same70/include/pio/same70n20b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70n21.h | 0 .../sam/utils/cmsis/same70/include/pio/same70n21b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70q19.h | 0 .../sam/utils/cmsis/same70/include/pio/same70q19b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70q20.h | 0 .../sam/utils/cmsis/same70/include/pio/same70q20b.h | 0 .../sam/utils/cmsis/same70/include/pio/same70q21.h | 0 .../sam/utils/cmsis/same70/include/pio/same70q21b.h | 0 .../src/ASF/sam/utils/cmsis/same70/include/same70.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70j19.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70j19b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70j20.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70j20b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70j21.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70j21b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70n19.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70n19b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70n20.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70n20b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70n21.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70n21b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70q19.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70q19b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70q20.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70q20b.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70q21.h | 0 .../ASF/sam/utils/cmsis/same70/include/same70q21b.h | 0 .../same70/source/templates/gcc/startup_same70.c | 0 .../cmsis/same70/source/templates/system_same70.c | 0 .../cmsis/same70/source/templates/system_same70.h | 0 .../{ACC_EXAMPLE1 => }/src/ASF/sam/utils/compiler.h | 0 .../{ACC_EXAMPLE1 => }/src/ASF/sam/utils/fpu/fpu.h | 0 .../src/ASF/sam/utils/header_files/io.h | 0 .../linker_scripts/same70/same70q21/gcc/flash.ld | 0 .../src/ASF/sam/utils/make/Makefile.sam.in | 0 .../src/ASF/sam/utils/preprocessor/mrepeat.h | 0 .../src/ASF/sam/utils/preprocessor/preprocessor.h | 0 .../src/ASF/sam/utils/preprocessor/stringz.h | 0 .../src/ASF/sam/utils/preprocessor/tpaste.h | 0 .../src/ASF/sam/utils/status_codes.h | 0 .../src/ASF/sam/utils/syscalls/gcc/syscalls.c | 0 .../src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt | 0 .../CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf | Bin .../thirdparty/CMSIS/Include/arm_common_tables.h | 0 .../thirdparty/CMSIS/Include/arm_const_structs.h | 0 .../src/ASF/thirdparty/CMSIS/Include/arm_math.h | 0 .../ASF/thirdparty/CMSIS/Include/cmsis_compiler.h | 0 .../src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h | 0 .../ASF/thirdparty/CMSIS/Include/cmsis_version.h | 0 .../src/ASF/thirdparty/CMSIS/Include/core_cm7.h | 0 .../src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h | 0 .../CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a | Bin .../CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a | Bin .../src/ASF/thirdparty/CMSIS/Lib/license.txt | 0 .../src/ASF/thirdparty/CMSIS/README.txt | 0 .../{ACC_EXAMPLE1 => }/src/acc_example_canopus.c | 0 .../ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/asf.h | 0 .../{ACC_EXAMPLE1 => }/src/config/conf_board.h | 0 .../{ACC_EXAMPLE1 => }/src/config/conf_clock.h | 0 .../{ACC_EXAMPLE1 => }/src/config/conf_sleepmgr.h | 0 .../src/config/conf_uart_serial.h | 0 216 files changed, 0 insertions(+), 0 deletions(-) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/ACC_EXAMPLE1.componentinfo.xml (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/ACC_EXAMPLE1.cproj (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/boards/board.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/genclk.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/osc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/pll.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/same70/genclk.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/same70/osc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/same70/pll.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/same70/sysclk.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/same70/sysclk.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/clock/sysclk.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/gpio/gpio.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/ioport/ioport.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/ioport/sam/ioport_pio.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/serial/sam_uart/uart_serial.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/serial/serial.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/serial/usart_serial.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/sleepmgr/sam/sleepmgr.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/sleepmgr/sam/sleepmgr.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/services/sleepmgr/sleepmgr.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/interrupt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/parts.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/stdio/read.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/common/utils/stdio/write.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/boards/same70_xplained/init.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/boards/same70_xplained/led.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/boards/same70_xplained/same70_xplained.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/acc/acc.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/acc/acc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/acc/acc_example/acc_example.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/afec/afec.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/afec/afec.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/dacc/dacc.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/dacc/dacc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/mpu/mpu.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/mpu/mpu.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pio/pio.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pio/pio.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pio/pio_handler.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pio/pio_handler.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pmc/pmc.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pmc/pmc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pmc/sleep.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/pmc/sleep.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/uart/uart.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/uart/uart.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/usart/usart.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/drivers/usart/usart.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/acc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/aes.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/afec.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/efc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/icm.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/isi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/pio.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/smc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/spi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/supc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/tc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/trng.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/uart.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/usart.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70j19.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70j20.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70j21.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70n19.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70n20.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70n21.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70q19.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70q20.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70q21.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/compiler.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/fpu/fpu.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/header_files/io.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/make/Makefile.sam.in (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/preprocessor/mrepeat.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/preprocessor/preprocessor.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/preprocessor/stringz.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/preprocessor/tpaste.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/status_codes.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/sam/utils/syscalls/gcc/syscalls.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/arm_math.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/core_cm7.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/Lib/license.txt (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/ASF/thirdparty/CMSIS/README.txt (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/acc_example_canopus.c (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/asf.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/config/conf_board.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/config/conf_clock.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/config/conf_sleepmgr.h (100%) rename Perifericos-uC/ACC/ACC_EXAMPLE1/{ACC_EXAMPLE1 => }/src/config/conf_uart_serial.h (100%) diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml rename to Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj b/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj rename to Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/boards/board.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/boards/board.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/boards/board.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/boards/board.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/parts.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/parts.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/parts.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/parts.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/acc_example_canopus.c b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/acc_example_canopus.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/acc_example_canopus.c rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/acc_example_canopus.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/asf.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/asf.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/asf.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_board.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_board.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_board.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_board.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_clock.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_clock.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_clock.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_clock.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_sleepmgr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_sleepmgr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_sleepmgr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_uart_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_uart_serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1/src/config/conf_uart_serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_uart_serial.h From 2c13f077086743868716949c0916dd71032d2075 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 21:00:10 -0300 Subject: [PATCH 03/23] Create README.md --- Perifericos-uC/ACC/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Perifericos-uC/ACC/README.md diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/Perifericos-uC/ACC/README.md @@ -0,0 +1 @@ + From 6998c3f81decc440e1356e650c8662c90736fe02 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 21:02:44 -0300 Subject: [PATCH 04/23] Update README.md --- Perifericos-uC/ACC/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 8b137891..1191a7b7 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -1 +1,7 @@ +# Analog Comparator Controller (ACC) +--- +Configura o comparador analógico e gera uma interrupção dependendo nas configurações do usuário. +# Conexão e configuração +--- +Não é necessária From 3823dc8fc0024cc395b0942c1490e93a8bf21e10 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 21:16:22 -0300 Subject: [PATCH 05/23] Update README.md --- Perifericos-uC/ACC/README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 1191a7b7..ddb888ce 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -1,7 +1,20 @@ # Analog Comparator Controller (ACC) ---- Configura o comparador analógico e gera uma interrupção dependendo nas configurações do usuário. # Conexão e configuração ---- Não é necessária + +# Explicação +![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) + +O DAC0 e o AD0 são selecionados como duas entradas. O usuário pode alterar a tensão de saída do DAC0 e alterar a tensão do AD0. + +A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de entrada de AD0 varia de 0 a ADVREF. + +O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. + +# Referências + +- Atmel Datasheet: https://www.tme.eu/Document/b85c146da65ff583bac4b0dfc098ee7b/ATSAME70-DTE.pdf + +- ASF Source Code Documentation https://asf.microchip.com/docs/3.49.1/sam.drivers.acc.example.same70_xplained/html/index.html From a1a160e3753e7ee56c334e9165e2abd66a1e1263 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 22:11:32 -0300 Subject: [PATCH 06/23] Update README.md --- Perifericos-uC/ACC/README.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index ddb888ce..b3e749e5 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -2,17 +2,44 @@ Configura o comparador analógico e gera uma interrupção dependendo nas configurações do usuário. # Conexão e configuração -Não é necessária +- Não é necessária # Explicação ![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) +O comparador analógico incorpora dois multiplexadores de 8 para 1 que geram duas entradas internas. Essas entradas são comparadas, resultando em uma saída de comparação. + O DAC0 e o AD0 são selecionados como duas entradas. O usuário pode alterar a tensão de saída do DAC0 e alterar a tensão do AD0. A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de entrada de AD0 varia de 0 a ADVREF. O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. + +### Main + +### Interrupção + +O ACC tem uma linha de interrupção conectada ao Interrupt Controller (IC). Para lidar com interrupções, o IC deve ser programado antes de configurar o ACC. + +/** + * Interrupt handler for the ACC. + */ +void ACC_Handler(void) +{ + uint32_t ul_status; + + ul_status = acc_get_interrupt_status(ACC); + + /* Compare Output Interrupt */ + if ((ul_status & ACC_ISR_CE) == ACC_ISR_CE) { + if (acc_get_comparison_result(ACC)) { + puts("-ISR- Voltage Comparison Result: AD0 > DAC0\r"); + } else { + puts("-ISR- Voltage Comparison Result: AD0 < DAC0\r"); + } + } + # Referências - Atmel Datasheet: https://www.tme.eu/Document/b85c146da65ff583bac4b0dfc098ee7b/ATSAME70-DTE.pdf From 0e07b9c211686628b3668f6fde1d42a7e0eecbd4 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 22:12:23 -0300 Subject: [PATCH 07/23] Update README.md --- Perifericos-uC/ACC/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index b3e749e5..e9484102 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -22,6 +22,7 @@ O evento de comparação seria gerado se a tensão de uma entrada fosse alterada O ACC tem uma linha de interrupção conectada ao Interrupt Controller (IC). Para lidar com interrupções, o IC deve ser programado antes de configurar o ACC. +``` /** * Interrupt handler for the ACC. */ @@ -39,6 +40,7 @@ void ACC_Handler(void) puts("-ISR- Voltage Comparison Result: AD0 < DAC0\r"); } } +``` # Referências From 4b7adf95dbb8167e17d56b15b132a9312c57de64 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 22:13:14 -0300 Subject: [PATCH 08/23] Update README.md --- Perifericos-uC/ACC/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index e9484102..1f6f9da2 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -22,7 +22,7 @@ O evento de comparação seria gerado se a tensão de uma entrada fosse alterada O ACC tem uma linha de interrupção conectada ao Interrupt Controller (IC). Para lidar com interrupções, o IC deve ser programado antes de configurar o ACC. -``` +```c /** * Interrupt handler for the ACC. */ From 733729420daa903b70b76a9616a93137c55abf73 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 22:53:51 -0300 Subject: [PATCH 09/23] Update README.md --- Perifericos-uC/ACC/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 1f6f9da2..f657f35c 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -1,10 +1,10 @@ # Analog Comparator Controller (ACC) Configura o comparador analógico e gera uma interrupção dependendo nas configurações do usuário. -# Conexão e configuração +## Conexão e configuração - Não é necessária -# Explicação +## Explicação ![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) O comparador analógico incorpora dois multiplexadores de 8 para 1 que geram duas entradas internas. Essas entradas são comparadas, resultando em uma saída de comparação. @@ -30,16 +30,18 @@ void ACC_Handler(void) { uint32_t ul_status; + /* Leitura do status do periférico */ ul_status = acc_get_interrupt_status(ACC); - /* Compare Output Interrupt */ + /* Comparação da interrupção de saída*/ if ((ul_status & ACC_ISR_CE) == ACC_ISR_CE) { - if (acc_get_comparison_result(ACC)) { + if (acc_get_comparison_result(ACC)) { puts("-ISR- Voltage Comparison Result: AD0 > DAC0\r"); } else { puts("-ISR- Voltage Comparison Result: AD0 < DAC0\r"); } } +} ``` # Referências From dae4e15943cd1d781aa0e08cccf7a1d21d671b5c Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 22:56:37 -0300 Subject: [PATCH 10/23] Update README.md --- Perifericos-uC/ACC/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index f657f35c..e0335b34 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -16,7 +16,7 @@ A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. -### Main +#### Main ### Interrupção @@ -44,7 +44,7 @@ void ACC_Handler(void) } ``` -# Referências +### Referências - Atmel Datasheet: https://www.tme.eu/Document/b85c146da65ff583bac4b0dfc098ee7b/ATSAME70-DTE.pdf From 326cbb080687b63d2aa537448be7dbe8eb8d6689 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:14:17 -0300 Subject: [PATCH 11/23] Update README.md --- Perifericos-uC/ACC/README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index e0335b34..415e9f9e 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -4,7 +4,7 @@ Configura o comparador analógico e gera uma interrupção dependendo nas config ## Conexão e configuração - Não é necessária -## Explicação +## Diagrama de Blocos ![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) O comparador analógico incorpora dois multiplexadores de 8 para 1 que geram duas entradas internas. Essas entradas são comparadas, resultando em uma saída de comparação. @@ -15,8 +15,15 @@ A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. +## Analog Comparator Controller - ACC +O ACC é um módulo que compara duas tensões de entrada analógicas e emite um nível de sinal indicando qual das entradas é maior ou menor. Um comparador analógico é basicamente um amplificador sem feedback e, portanto, tem ganho muito alto. -#### Main +![image](https://user-images.githubusercontent.com/62957465/172083444-b36941b3-36df-4993-ab29-b3cab1f9e7a7.png) + +Quando a tensão na entrada positiva (Vin0) é maior que a tensão na entrada negativa (Vin1), então a tensão de saída (VOUT) está saturada para seu alimentação positiva (+VSUPPLY), caso contrário, a saída é saturada com alimentação negativa (-VSUPPLY). Em microcontroladores, como não há tensão de alimentação negativa, GND (nível de terra) é tomado como –VSUPPLY e VCC nível é considerado +VSUPPLY. + + +### Main ### Interrupção @@ -44,7 +51,7 @@ void ACC_Handler(void) } ``` -### Referências +## Referências - Atmel Datasheet: https://www.tme.eu/Document/b85c146da65ff583bac4b0dfc098ee7b/ATSAME70-DTE.pdf From c4b46b167b6c9fcf2af87b45294d0577cc54c615 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:26:50 -0300 Subject: [PATCH 12/23] Update README.md --- Perifericos-uC/ACC/README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 415e9f9e..26cb1aeb 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -7,8 +7,6 @@ Configura o comparador analógico e gera uma interrupção dependendo nas config ## Diagrama de Blocos ![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) -O comparador analógico incorpora dois multiplexadores de 8 para 1 que geram duas entradas internas. Essas entradas são comparadas, resultando em uma saída de comparação. - O DAC0 e o AD0 são selecionados como duas entradas. O usuário pode alterar a tensão de saída do DAC0 e alterar a tensão do AD0. A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de entrada de AD0 varia de 0 a ADVREF. @@ -16,7 +14,15 @@ A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. ## Analog Comparator Controller - ACC -O ACC é um módulo que compara duas tensões de entrada analógicas e emite um nível de sinal indicando qual das entradas é maior ou menor. Um comparador analógico é basicamente um amplificador sem feedback e, portanto, tem ganho muito alto. + +O ACC configura o Comparador Analógico e gera uma interrupção de acordo com as configurações do aplicativo do usuário. + +O comparador analógico incorpora 8 a 1 multiplexadores em ambos suas entradas. O Comparador Analógico compara duas tensões de entrada analógicas, e o resultado dessa comparação fornece uma comparação saída (emite um nível de sinal indicando qual das entradas é maior ou menor) e uma interrupção pode ser gerada de acordo. Um comparador analógico é basicamente um amplificador sem feedback e, portanto, tem ganho muito alto. + +O aplicativo do usuário pode selecionar uma alta velocidade ou +opção de baixa potência, o nível de histerese, detecção de borda e polaridade. + +O ACC também pode gerar um evento de comparação que pode ser usado pelo Pulse Width Modulation (PWM). ![image](https://user-images.githubusercontent.com/62957465/172083444-b36941b3-36df-4993-ab29-b3cab1f9e7a7.png) From fb8c11ccd6cc40609f60fb9c94f594fe79788684 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:45:51 -0300 Subject: [PATCH 13/23] Update README.md --- Perifericos-uC/ACC/README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 26cb1aeb..2449e657 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -19,8 +19,13 @@ O ACC configura o Comparador Analógico e gera uma interrupção de acordo com a O comparador analógico incorpora 8 a 1 multiplexadores em ambos suas entradas. O Comparador Analógico compara duas tensões de entrada analógicas, e o resultado dessa comparação fornece uma comparação saída (emite um nível de sinal indicando qual das entradas é maior ou menor) e uma interrupção pode ser gerada de acordo. Um comparador analógico é basicamente um amplificador sem feedback e, portanto, tem ganho muito alto. -O aplicativo do usuário pode selecionar uma alta velocidade ou -opção de baixa potência, o nível de histerese, detecção de borda e polaridade. +O usuário pode selecionar uma alta velocidade ou opção de baixa potência, o nível de histerese, detecção de borda e polaridade. + +Quando as configurações do comparador analógico são modificadas, a saída da célula analógica pode ser inválida. + +Um sinalizador de comparação é acionado por um evento na saída do comparador analógico e uma interrupção é gerada. + +O evento na saída do comparador analógico pode ser selecionado entre `` fall edge``, flanco ascendente ou qualquer flanco. O ACC também pode gerar um evento de comparação que pode ser usado pelo Pulse Width Modulation (PWM). @@ -28,7 +33,6 @@ O ACC também pode gerar um evento de comparação que pode ser usado pelo Pulse Quando a tensão na entrada positiva (Vin0) é maior que a tensão na entrada negativa (Vin1), então a tensão de saída (VOUT) está saturada para seu alimentação positiva (+VSUPPLY), caso contrário, a saída é saturada com alimentação negativa (-VSUPPLY). Em microcontroladores, como não há tensão de alimentação negativa, GND (nível de terra) é tomado como –VSUPPLY e VCC nível é considerado +VSUPPLY. - ### Main ### Interrupção From fd5d3cc0f910ab9d7ed2e193b9bdb18916382554 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:46:47 -0300 Subject: [PATCH 14/23] Update README.md --- Perifericos-uC/ACC/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 2449e657..42918861 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -25,7 +25,7 @@ Quando as configurações do comparador analógico são modificadas, a saída da Um sinalizador de comparação é acionado por um evento na saída do comparador analógico e uma interrupção é gerada. -O evento na saída do comparador analógico pode ser selecionado entre `` fall edge``, flanco ascendente ou qualquer flanco. +O evento na saída do comparador analógico pode ser selecionado entre `` falling edge``, ``rising edge`` ou ``any edge``. O ACC também pode gerar um evento de comparação que pode ser usado pelo Pulse Width Modulation (PWM). From a17d2c741cb018331d987733910420bf5a3c3e74 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:48:24 -0300 Subject: [PATCH 15/23] Update README.md --- Perifericos-uC/ACC/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 42918861..37385fe9 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -7,6 +7,8 @@ Configura o comparador analógico e gera uma interrupção dependendo nas config ## Diagrama de Blocos ![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) +O comparador analógico incorpora 8 a 1 multiplexadores em ambos suas entradas. + O DAC0 e o AD0 são selecionados como duas entradas. O usuário pode alterar a tensão de saída do DAC0 e alterar a tensão do AD0. A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de entrada de AD0 varia de 0 a ADVREF. @@ -17,9 +19,7 @@ O evento de comparação seria gerado se a tensão de uma entrada fosse alterada O ACC configura o Comparador Analógico e gera uma interrupção de acordo com as configurações do aplicativo do usuário. -O comparador analógico incorpora 8 a 1 multiplexadores em ambos suas entradas. O Comparador Analógico compara duas tensões de entrada analógicas, e o resultado dessa comparação fornece uma comparação saída (emite um nível de sinal indicando qual das entradas é maior ou menor) e uma interrupção pode ser gerada de acordo. Um comparador analógico é basicamente um amplificador sem feedback e, portanto, tem ganho muito alto. - -O usuário pode selecionar uma alta velocidade ou opção de baixa potência, o nível de histerese, detecção de borda e polaridade. +O comparador analógico compara duas tensões de entrada analógicas, e o resultado dessa comparação fornece uma comparação saída (emite um nível de sinal indicando qual das entradas é maior ou menor) e uma interrupção pode ser gerada de acordo. Um comparador analógico é basicamente um amplificador sem feedback e, portanto, tem ganho muito alto. Quando as configurações do comparador analógico são modificadas, a saída da célula analógica pode ser inválida. @@ -27,6 +27,8 @@ Um sinalizador de comparação é acionado por um evento na saída do comparador O evento na saída do comparador analógico pode ser selecionado entre `` falling edge``, ``rising edge`` ou ``any edge``. +O usuário pode selecionar uma alta velocidade ou opção de baixa potência, o nível de histerese, detecção de borda e polaridade. + O ACC também pode gerar um evento de comparação que pode ser usado pelo Pulse Width Modulation (PWM). ![image](https://user-images.githubusercontent.com/62957465/172083444-b36941b3-36df-4993-ab29-b3cab1f9e7a7.png) From 353f4a0e93005f56eaa5915b308e4026bf902c56 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:16:11 -0300 Subject: [PATCH 16/23] Update README.md --- Perifericos-uC/ACC/README.md | 101 +++++++++++++++++++++++++++++++---- 1 file changed, 90 insertions(+), 11 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 37385fe9..927f5b8c 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -4,17 +4,6 @@ Configura o comparador analógico e gera uma interrupção dependendo nas config ## Conexão e configuração - Não é necessária -## Diagrama de Blocos -![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) - -O comparador analógico incorpora 8 a 1 multiplexadores em ambos suas entradas. - -O DAC0 e o AD0 são selecionados como duas entradas. O usuário pode alterar a tensão de saída do DAC0 e alterar a tensão do AD0. - -A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de entrada de AD0 varia de 0 a ADVREF. - -O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. - ## Analog Comparator Controller - ACC O ACC configura o Comparador Analógico e gera uma interrupção de acordo com as configurações do aplicativo do usuário. @@ -35,7 +24,97 @@ O ACC também pode gerar um evento de comparação que pode ser usado pelo Pulse Quando a tensão na entrada positiva (Vin0) é maior que a tensão na entrada negativa (Vin1), então a tensão de saída (VOUT) está saturada para seu alimentação positiva (+VSUPPLY), caso contrário, a saída é saturada com alimentação negativa (-VSUPPLY). Em microcontroladores, como não há tensão de alimentação negativa, GND (nível de terra) é tomado como –VSUPPLY e VCC nível é considerado +VSUPPLY. +## Diagrama de Blocos +![image](https://user-images.githubusercontent.com/62957465/172076354-d0085309-cc7c-4098-94a7-52673859c7b0.png) + +O comparador analógico incorpora 8 a 1 multiplexadores em ambos suas entradas. + +O DAC0 e o AD0 são selecionados como duas entradas. O usuário pode alterar a tensão de saída do DAC0 e alterar a tensão do AD0. + +A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de entrada de AD0 varia de 0 a ADVREF. + +O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. + ### Main +```c + +int main(void) +{ + uint32_t uc_key; + int16_t s_volt = 0; + uint32_t ul_value = 0; + volatile uint32_t ul_status = 0x0; + int32_t l_volt_dac0 = 0; + + /* Função para iniçialização do sistema, clocks, DACC e AFEC */ + init(); + + /* Iniciando a entrada DAC0 em ADVREF/2 */ + dacc_write_conversion_data(DACC, MAX_DIGITAL / 2, DACC_CHANNEL_0); + l_volt_dac0 = (MAX_DIGITAL / 2) * (2 * VOLT_REF / 3) / MAX_DIGITAL +VOLT_REF / 6; + + /* Enable clock for ACC */ + pmc_enable_periph_clk(ID_ACC); + + /* Inicializa o ACC*/ + acc_init(ACC, ACC_MR_SELPLUS_AFE0_AD0, ACC_MR_SELMINUS_DAC0, ACC_MR_EDGETYP_ANY, ACC_MR_INV_DIS); + + /* Enable ACC interrupt */ + NVIC_EnableIRQ(ACC_IRQn); + + /* Enable */ + acc_enable_interrupt(ACC); + + dsplay_menu(); /* Função para colocar na Terminal Window as opções do menu */ + + while (1) { + while (usart_read(CONSOLE_UART, &uc_key)) { + } + + printf("input: %c\r\n", uc_key); + + switch (uc_key) { + case 's': /*s: Set new DAC0 output voltage */ + case 'S': + printf("Input DAC0 output voltage (%d~%d mv): ",(VOLT_REF / 6), (VOLT_REF * 5 / 6)); + s_volt = get_input_voltage(); /*Pega o valor de tensão da entrada inserida pelo usuário*/ + puts("\r"); + + if (s_volt > 0) { + l_volt_dac0 = s_volt; + ul_value = ((s_volt - (VOLT_REF / 6))* (MAX_DIGITAL * 6) / 4) / VOLT_REF; /*Coloca novo valor de tensão*/ + dacc_write_conversion_data(DACC, ul_value, DACC_CHANNEL_0); + puts("-I- Set ok\r"); + } else { + puts("-I- Input voltage is invalid\r"); + } + break; + case 'v': /*v: Pega a voltagem do potenciometro*/ + case 'V': + /* Começa conversão */ + afec_start_software_conversion(AFEC0); + ul_status = afec_get_interrupt_status(AFEC0); /* Leitura do status do periférico */ + while ((ul_status & AFEC_ISR_EOC0) != AFEC_ISR_EOC0) { + ul_status = afec_get_interrupt_status(AFEC0); + } + /* Fim da conversão */ + ul_value = afec_channel_get_value(AFEC0, AFEC_CHANNEL_POTENTIOMETER); + + /* Converte de AFEC data para valor em voltagem*/ + s_volt = (ul_value * VOLT_REF) / MAX_DIGITAL; + printf("-I- Voltage on potentiometer(AD0) is %d mv\n\r", s_volt); + printf("-I- Voltage on DAC0 is %ld mv \n\r", (long)l_volt_dac0); + break; + + case 'm': /*m: Display this menu again*/ + case 'M': + dsplay_menu(); + break; + } + } +} + +``` ### Interrupção From fd534c11c5ec07d805843dd5b65a6f629ff34957 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:18:59 -0300 Subject: [PATCH 17/23] Update README.md --- Perifericos-uC/ACC/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 927f5b8c..f8fe1237 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -74,7 +74,7 @@ int main(void) printf("input: %c\r\n", uc_key); switch (uc_key) { - case 's': /*s: Set new DAC0 output voltage */ + case 's': /*s: Definir nova tensão de saída DAC0 */ case 'S': printf("Input DAC0 output voltage (%d~%d mv): ",(VOLT_REF / 6), (VOLT_REF * 5 / 6)); s_volt = get_input_voltage(); /*Pega o valor de tensão da entrada inserida pelo usuário*/ @@ -106,7 +106,7 @@ int main(void) printf("-I- Voltage on DAC0 is %ld mv \n\r", (long)l_volt_dac0); break; - case 'm': /*m: Display this menu again*/ + case 'm': /* m: Exibir este menu novamente */ case 'M': dsplay_menu(); break; From b34e4bc4544a8fb9e6cf4ab2c0fbf371a11199cb Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:19:56 -0300 Subject: [PATCH 18/23] Update README.md --- Perifericos-uC/ACC/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index f8fe1237..da088b65 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -82,7 +82,8 @@ int main(void) if (s_volt > 0) { l_volt_dac0 = s_volt; - ul_value = ((s_volt - (VOLT_REF / 6))* (MAX_DIGITAL * 6) / 4) / VOLT_REF; /*Coloca novo valor de tensão*/ + /*Coloca novo valor de tensão*/ + ul_value = ((s_volt - (VOLT_REF / 6))* (MAX_DIGITAL * 6) / 4) / VOLT_REF; dacc_write_conversion_data(DACC, ul_value, DACC_CHANNEL_0); puts("-I- Set ok\r"); } else { From cde206bdf814e0dd989038e81d32e5de6d532c6e Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:25:18 -0300 Subject: [PATCH 19/23] Update README.md --- Perifericos-uC/ACC/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index da088b65..8bd6c05a 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -36,6 +36,9 @@ A tensão de saída de DAC0 varia de (1/6)*ADVREF a (5/6)*ADVREF, e a tensão de O evento de comparação seria gerado se a tensão de uma entrada fosse alterada pela tensão da outra entrada. Tanto eventos maiores quanto menores podem ser acionados por padrão. ### Main + +A função ``main`` desse programa é responsável por inicializar todos os periféricos envolvidos no projeto e exibir um menu para o usuário que permite definir uma nova tensão de entrada, como também pegar a voltagem do potênciometro. + ```c int main(void) From d56ef01b02b6d8a006a27224f98e2915314e5a94 Mon Sep 17 00:00:00 2001 From: felipebpl Date: Mon, 6 Jun 2022 00:33:02 -0300 Subject: [PATCH 20/23] finalizando codigo comentado --- .../ACC_EXAMPLE/.vs/ACC_EXAMPLE/v14/.atsuo | Bin 0 -> 15872 bytes .../ACC_EXAMPLE.atsln} | 2 +- .../ACC_EXAMPLE.componentinfo.xml} | 0 .../ACC_EXAMPLE/ACC_EXAMPLE.cproj} | 490 +++++++++--------- .../src/ASF/common/boards/board.h | 0 .../src/ASF/common/services/clock/genclk.h | 0 .../src/ASF/common/services/clock/osc.h | 0 .../src/ASF/common/services/clock/pll.h | 0 .../ASF/common/services/clock/same70/genclk.h | 0 .../ASF/common/services/clock/same70/osc.h | 0 .../ASF/common/services/clock/same70/pll.h | 0 .../ASF/common/services/clock/same70/sysclk.c | 0 .../ASF/common/services/clock/same70/sysclk.h | 0 .../src/ASF/common/services/clock/sysclk.h | 0 .../src/ASF/common/services/gpio/gpio.h | 0 .../common/services/gpio/sam_gpio/sam_gpio.h | 0 .../src/ASF/common/services/ioport/ioport.h | 0 .../common/services/ioport/sam/ioport_pio.h | 0 .../services/serial/sam_uart/uart_serial.h | 0 .../src/ASF/common/services/serial/serial.h | 0 .../ASF/common/services/serial/usart_serial.c | 0 .../common/services/sleepmgr/sam/sleepmgr.c | 0 .../common/services/sleepmgr/sam/sleepmgr.h | 0 .../ASF/common/services/sleepmgr/sleepmgr.h | 0 .../src/ASF/common/utils/interrupt.h | 0 .../utils/interrupt/interrupt_sam_nvic.c | 0 .../utils/interrupt/interrupt_sam_nvic.h | 0 .../ACC_EXAMPLE}/src/ASF/common/utils/parts.h | 0 .../src/ASF/common/utils/stdio/read.c | 0 .../utils/stdio/stdio_serial/stdio_serial.h | 0 .../src/ASF/common/utils/stdio/write.c | 0 .../src/ASF/sam/boards/same70_xplained/init.c | 0 .../src/ASF/sam/boards/same70_xplained/led.h | 0 .../boards/same70_xplained/same70_xplained.h | 0 .../src/ASF/sam/drivers/acc/acc.c | 0 .../src/ASF/sam/drivers/acc/acc.h | 0 .../sam/drivers/acc/acc_example/acc_example.h | 0 .../src/ASF/sam/drivers/afec/afec.c | 0 .../src/ASF/sam/drivers/afec/afec.h | 0 .../src/ASF/sam/drivers/dacc/dacc.c | 0 .../src/ASF/sam/drivers/dacc/dacc.h | 0 .../src/ASF/sam/drivers/mpu/mpu.c | 0 .../src/ASF/sam/drivers/mpu/mpu.h | 0 .../src/ASF/sam/drivers/pio/pio.c | 0 .../src/ASF/sam/drivers/pio/pio.h | 0 .../src/ASF/sam/drivers/pio/pio_handler.c | 0 .../src/ASF/sam/drivers/pio/pio_handler.h | 0 .../src/ASF/sam/drivers/pmc/pmc.c | 0 .../src/ASF/sam/drivers/pmc/pmc.h | 0 .../src/ASF/sam/drivers/pmc/sleep.c | 0 .../src/ASF/sam/drivers/pmc/sleep.h | 0 .../src/ASF/sam/drivers/uart/uart.c | 0 .../src/ASF/sam/drivers/uart/uart.h | 0 .../src/ASF/sam/drivers/usart/usart.c | 0 .../src/ASF/sam/drivers/usart/usart.h | 0 .../cmsis/same70/include/component/acc.h | 0 .../cmsis/same70/include/component/aes.h | 0 .../cmsis/same70/include/component/afec.h | 0 .../cmsis/same70/include/component/chipid.h | 0 .../cmsis/same70/include/component/dacc.h | 0 .../cmsis/same70/include/component/efc.h | 0 .../cmsis/same70/include/component/gmac.h | 0 .../cmsis/same70/include/component/gpbr.h | 0 .../cmsis/same70/include/component/hsmci.h | 0 .../cmsis/same70/include/component/i2sc.h | 0 .../cmsis/same70/include/component/icm.h | 0 .../cmsis/same70/include/component/isi.h | 0 .../cmsis/same70/include/component/matrix.h | 0 .../cmsis/same70/include/component/mcan.h | 0 .../cmsis/same70/include/component/pio.h | 0 .../cmsis/same70/include/component/pmc.h | 0 .../cmsis/same70/include/component/pwm.h | 0 .../cmsis/same70/include/component/qspi.h | 0 .../cmsis/same70/include/component/rstc.h | 0 .../cmsis/same70/include/component/rswdt.h | 0 .../cmsis/same70/include/component/rtc.h | 0 .../cmsis/same70/include/component/rtt.h | 0 .../cmsis/same70/include/component/sdramc.h | 0 .../cmsis/same70/include/component/smc.h | 0 .../cmsis/same70/include/component/spi.h | 0 .../cmsis/same70/include/component/ssc.h | 0 .../cmsis/same70/include/component/supc.h | 0 .../utils/cmsis/same70/include/component/tc.h | 0 .../cmsis/same70/include/component/trng.h | 0 .../cmsis/same70/include/component/twihs.h | 0 .../cmsis/same70/include/component/uart.h | 0 .../cmsis/same70/include/component/usart.h | 0 .../cmsis/same70/include/component/usbhs.h | 0 .../cmsis/same70/include/component/utmi.h | 0 .../cmsis/same70/include/component/wdt.h | 0 .../cmsis/same70/include/component/xdmac.h | 0 .../utils/cmsis/same70/include/instance/acc.h | 0 .../utils/cmsis/same70/include/instance/aes.h | 0 .../cmsis/same70/include/instance/afec0.h | 0 .../cmsis/same70/include/instance/afec1.h | 0 .../cmsis/same70/include/instance/chipid.h | 0 .../cmsis/same70/include/instance/dacc.h | 0 .../utils/cmsis/same70/include/instance/efc.h | 0 .../cmsis/same70/include/instance/gmac.h | 0 .../cmsis/same70/include/instance/gpbr.h | 0 .../cmsis/same70/include/instance/hsmci.h | 0 .../cmsis/same70/include/instance/i2sc0.h | 0 .../cmsis/same70/include/instance/i2sc1.h | 0 .../utils/cmsis/same70/include/instance/icm.h | 0 .../utils/cmsis/same70/include/instance/isi.h | 0 .../cmsis/same70/include/instance/matrix.h | 0 .../cmsis/same70/include/instance/mcan0.h | 0 .../cmsis/same70/include/instance/mcan1.h | 0 .../cmsis/same70/include/instance/pioa.h | 0 .../cmsis/same70/include/instance/piob.h | 0 .../cmsis/same70/include/instance/pioc.h | 0 .../cmsis/same70/include/instance/piod.h | 0 .../cmsis/same70/include/instance/pioe.h | 0 .../utils/cmsis/same70/include/instance/pmc.h | 0 .../cmsis/same70/include/instance/pwm0.h | 0 .../cmsis/same70/include/instance/pwm1.h | 0 .../cmsis/same70/include/instance/qspi.h | 0 .../cmsis/same70/include/instance/rstc.h | 0 .../cmsis/same70/include/instance/rswdt.h | 0 .../utils/cmsis/same70/include/instance/rtc.h | 0 .../utils/cmsis/same70/include/instance/rtt.h | 0 .../cmsis/same70/include/instance/sdramc.h | 0 .../utils/cmsis/same70/include/instance/smc.h | 0 .../cmsis/same70/include/instance/spi0.h | 0 .../cmsis/same70/include/instance/spi1.h | 0 .../utils/cmsis/same70/include/instance/ssc.h | 0 .../cmsis/same70/include/instance/supc.h | 0 .../utils/cmsis/same70/include/instance/tc0.h | 0 .../utils/cmsis/same70/include/instance/tc1.h | 0 .../utils/cmsis/same70/include/instance/tc2.h | 0 .../utils/cmsis/same70/include/instance/tc3.h | 0 .../cmsis/same70/include/instance/trng.h | 0 .../cmsis/same70/include/instance/twihs0.h | 0 .../cmsis/same70/include/instance/twihs1.h | 0 .../cmsis/same70/include/instance/twihs2.h | 0 .../cmsis/same70/include/instance/uart0.h | 0 .../cmsis/same70/include/instance/uart1.h | 0 .../cmsis/same70/include/instance/uart2.h | 0 .../cmsis/same70/include/instance/uart3.h | 0 .../cmsis/same70/include/instance/uart4.h | 0 .../cmsis/same70/include/instance/usart0.h | 0 .../cmsis/same70/include/instance/usart1.h | 0 .../cmsis/same70/include/instance/usart2.h | 0 .../cmsis/same70/include/instance/usbhs.h | 0 .../cmsis/same70/include/instance/utmi.h | 0 .../utils/cmsis/same70/include/instance/wdt.h | 0 .../cmsis/same70/include/instance/xdmac.h | 0 .../cmsis/same70/include/pio/same70j19.h | 0 .../cmsis/same70/include/pio/same70j19b.h | 0 .../cmsis/same70/include/pio/same70j20.h | 0 .../cmsis/same70/include/pio/same70j20b.h | 0 .../cmsis/same70/include/pio/same70j21.h | 0 .../cmsis/same70/include/pio/same70j21b.h | 0 .../cmsis/same70/include/pio/same70n19.h | 0 .../cmsis/same70/include/pio/same70n19b.h | 0 .../cmsis/same70/include/pio/same70n20.h | 0 .../cmsis/same70/include/pio/same70n20b.h | 0 .../cmsis/same70/include/pio/same70n21.h | 0 .../cmsis/same70/include/pio/same70n21b.h | 0 .../cmsis/same70/include/pio/same70q19.h | 0 .../cmsis/same70/include/pio/same70q19b.h | 0 .../cmsis/same70/include/pio/same70q20.h | 0 .../cmsis/same70/include/pio/same70q20b.h | 0 .../cmsis/same70/include/pio/same70q21.h | 0 .../cmsis/same70/include/pio/same70q21b.h | 0 .../sam/utils/cmsis/same70/include/same70.h | 0 .../utils/cmsis/same70/include/same70j19.h | 0 .../utils/cmsis/same70/include/same70j19b.h | 0 .../utils/cmsis/same70/include/same70j20.h | 0 .../utils/cmsis/same70/include/same70j20b.h | 0 .../utils/cmsis/same70/include/same70j21.h | 0 .../utils/cmsis/same70/include/same70j21b.h | 0 .../utils/cmsis/same70/include/same70n19.h | 0 .../utils/cmsis/same70/include/same70n19b.h | 0 .../utils/cmsis/same70/include/same70n20.h | 0 .../utils/cmsis/same70/include/same70n20b.h | 0 .../utils/cmsis/same70/include/same70n21.h | 0 .../utils/cmsis/same70/include/same70n21b.h | 0 .../utils/cmsis/same70/include/same70q19.h | 0 .../utils/cmsis/same70/include/same70q19b.h | 0 .../utils/cmsis/same70/include/same70q20.h | 0 .../utils/cmsis/same70/include/same70q20b.h | 0 .../utils/cmsis/same70/include/same70q21.h | 0 .../utils/cmsis/same70/include/same70q21b.h | 0 .../source/templates/gcc/startup_same70.c | 0 .../same70/source/templates/system_same70.c | 0 .../same70/source/templates/system_same70.h | 0 .../ACC_EXAMPLE}/src/ASF/sam/utils/compiler.h | 0 .../ACC_EXAMPLE}/src/ASF/sam/utils/fpu/fpu.h | 0 .../src/ASF/sam/utils/header_files/io.h | 0 .../same70/same70q21/gcc/flash.ld | 0 .../src/ASF/sam/utils/make/Makefile.sam.in | 0 .../src/ASF/sam/utils/preprocessor/mrepeat.h | 0 .../ASF/sam/utils/preprocessor/preprocessor.h | 0 .../src/ASF/sam/utils/preprocessor/stringz.h | 0 .../src/ASF/sam/utils/preprocessor/tpaste.h | 0 .../src/ASF/sam/utils/status_codes.h | 0 .../src/ASF/sam/utils/syscalls/gcc/syscalls.c | 0 .../ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt | 0 .../CMSIS_END_USER_LICENCE_AGREEMENT.pdf | Bin .../CMSIS/Include/arm_common_tables.h | 0 .../CMSIS/Include/arm_const_structs.h | 0 .../ASF/thirdparty/CMSIS/Include/arm_math.h | 0 .../thirdparty/CMSIS/Include/cmsis_compiler.h | 0 .../ASF/thirdparty/CMSIS/Include/cmsis_gcc.h | 0 .../thirdparty/CMSIS/Include/cmsis_version.h | 0 .../ASF/thirdparty/CMSIS/Include/core_cm7.h | 0 .../ASF/thirdparty/CMSIS/Include/mpu_armv7.h | 0 .../CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a | Bin .../Lib/GCC/libarm_cortexM7lfsp_math_softfp.a | Bin .../src/ASF/thirdparty/CMSIS/Lib/license.txt | 0 .../src/ASF/thirdparty/CMSIS/README.txt | 0 .../ACC_EXAMPLE}/src/acc_example_canopus.c | 223 +++----- .../ACC_EXAMPLE}/src/asf.h | 0 .../ACC_EXAMPLE}/src/config/conf_board.h | 0 .../ACC_EXAMPLE}/src/config/conf_clock.h | 0 .../ACC_EXAMPLE}/src/config/conf_sleepmgr.h | 0 .../src/config/conf_uart_serial.h | 0 .../ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo | Bin 18944 -> 0 bytes 219 files changed, 304 insertions(+), 411 deletions(-) create mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE/.vs/ACC_EXAMPLE/v14/.atsuo rename Perifericos-uC/ACC/{ACC_EXAMPLE1/ACC_EXAMPLE1.atsln => ACC_EXAMPLE/ACC_EXAMPLE.atsln} (91%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml => ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.componentinfo.xml} (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1/ACC_EXAMPLE1.cproj => ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.cproj} (53%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/boards/board.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/genclk.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/osc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/pll.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/same70/genclk.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/same70/osc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/same70/pll.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/same70/sysclk.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/same70/sysclk.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/clock/sysclk.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/gpio/gpio.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/ioport/ioport.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/ioport/sam/ioport_pio.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/serial/sam_uart/uart_serial.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/serial/serial.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/serial/usart_serial.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/sleepmgr/sam/sleepmgr.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/sleepmgr/sam/sleepmgr.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/services/sleepmgr/sleepmgr.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/interrupt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/parts.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/stdio/read.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/common/utils/stdio/write.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/boards/same70_xplained/init.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/boards/same70_xplained/led.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/boards/same70_xplained/same70_xplained.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/acc/acc.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/acc/acc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/acc/acc_example/acc_example.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/afec/afec.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/afec/afec.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/dacc/dacc.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/dacc/dacc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/mpu/mpu.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/mpu/mpu.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pio/pio.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pio/pio.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pio/pio_handler.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pio/pio_handler.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pmc/pmc.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pmc/pmc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pmc/sleep.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/pmc/sleep.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/uart/uart.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/uart/uart.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/usart/usart.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/drivers/usart/usart.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/acc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/aes.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/afec.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/efc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/icm.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/isi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/pio.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/smc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/spi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/supc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/tc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/trng.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/uart.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/usart.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70j19.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70j20.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70j21.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70n19.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70n20.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70n21.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70q19.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70q20.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70q21.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/compiler.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/fpu/fpu.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/header_files/io.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/make/Makefile.sam.in (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/preprocessor/mrepeat.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/preprocessor/preprocessor.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/preprocessor/stringz.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/preprocessor/tpaste.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/status_codes.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/sam/utils/syscalls/gcc/syscalls.c (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/arm_math.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/core_cm7.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/Lib/license.txt (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/ASF/thirdparty/CMSIS/README.txt (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/acc_example_canopus.c (52%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/asf.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/config/conf_board.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/config/conf_clock.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/config/conf_sleepmgr.h (100%) rename Perifericos-uC/ACC/{ACC_EXAMPLE1 => ACC_EXAMPLE/ACC_EXAMPLE}/src/config/conf_uart_serial.h (100%) delete mode 100644 Perifericos-uC/ACC/ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE/.vs/ACC_EXAMPLE/v14/.atsuo b/Perifericos-uC/ACC/ACC_EXAMPLE/.vs/ACC_EXAMPLE/v14/.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..334bc904f59bcbbd4c1cec3985069eb31e7dbf27 GIT binary patch literal 15872 zcmeHO&2Jk;6d(5kQc8h-P`*lW`dx^Pljh5>F;QVtAIZtX0Fy@xc_#VXfB9Mnvx!MDi+*kRG{p9~++P9mK-i)vXVJpHm zgzX4B5OyLwj=*->+*ohB9eEuHyAV3Ha#U|Z2nq~9<0*(KF%50ULL64_0jVWyfc`^O z<}L)Hb8>^9aTIfI38TPk1MflTIyN++5pi1TU`1g_&B%7DRee(b;ks2rty)nlh#}3j zO`zUKEzg4Pm4+Vn6#9|FyDiktWTGcUkwUMiADi+y+pFEcPhP19Ki98Bj>jO{e}D^Nn25f;Bb{t=8UCuiCjqeJHjjCc~cmc;Co_@WnWSbu9#M41#8e=F)f?;d0i ziE*4hhJnqhnB!xj*B_~ty9wjxUP;*)7Jn3Vxla;O7(F?_#*Ab^?UyQg;nb`4ROb)s z)nW1L^e&*xMACZ*UEyjf6bsOmktV7DcX`~N9-kFd97FOq3q{b>F z7G=~J_TU6Uhlpdw#^kr-h|~CH7vd4o4;~v5J*X8!={b~4%kwrR?HD8-9$)wSudA+iwO;uS#9Cx92+EIx&Xf3Y4h9fRP;3gbQ@~7c&$ETT zE0qtha}NAZT|w=?Ui=OwN+8D)(~o|f!P?>O%bk$9I&_2cx%btx|8T#e&OlImo8P#d z8o|$vz^|{M;Mz_pMbEdc{Lv{p47yVbab_Y8t|0x%e;Mc{+zY8ClxqPTf4%tG3)lQ6 z_3DMv|0(wwl>JA&t5_dLGrcer;5wMsR>+UpRn^GdTunxQaoWtqM~bCPwh$jNt+QFf zwBrZzMbnx{BiR-`W?FW(knih>C-`fNrb@YD$uj%$W~peUb8XSXrSV+Wc*dL=ElipD zzD!4VXM1}`vOC$`*=-ofWyJVVWMsxJn$z)AA(u0aB3iWLPn&tu${O*5S-bc``-v0& zof%9Q(*u^7o;p*==8LI9ej+>B7WJ>&(2k!xNrmN(Q(5%eUVh5XzHGLfI_r=FVyVr) z3x3@_agxMtX<5Mr72GLb)O0L+JbZI(Y^7>ufnwFq`JiLJy)d6VZ(CvBiEjeI(WV@& znr8~i?5K9CjN;^b4(Ez)ST?BH6s1hhA!0Ud2Ett0!n&n8HfNw2pE5(@ zrcr?jhE0yv?$yfUawXeX%lWX?j=C-GPkoXoL2 zwjMwHivAos!LN=tPp5y=|1*F85BE)KZ(->lMcqdGf4F~##jnr*065=(wU=kr0<_*d zR^CBZ9w^%=nyw1qKdCdQ`yN#*Y6Y~{Dy`Dr|HpfXU*D2;OG4Y-iKfxyybrHoO|AvA$alo*`fVM?tH()9Y4nu z7C-muZ=BCV;@7Rz?uTv!`@g)`$9q0u@i*B1FXx~43&Y}X+W%+m|K9b-{no(Ruf=z2 z6_Ec)cLgdxDCU{Fn*WFQFDQd37wG?IUxI-9KY58f#XbbpRb{kU{OrDX$3KgI2G+K5 zDTUN`e(_w!ughOA{$Y%F8d!M`Tj#oJGJy9V6z#)~pSs$pJD75PZ{hv_el)E&uio+3 z+kUP3iy42@|I_sUDDM~TKu!NoEpGQOC+(X4AAi~e<y7BBm zybE^%hw$q_P7Ic|LF6Wp>XkVINF|W&LS84lRY`cw2l1Xnt@H3uWpHQKv05v?ontl7 zy>=W_d7W~-mvvj@{|*}2w>{Ed*vJ;++Ijs|(BTMtmvQVnwBk5civejn)W=Q^ZEPQo z;Eclip}bdVim?6QslOlRIofl0lQe~XPa=<$=ZSpwB&1rb^tPg!2b%s@4?*gD{TKWY BSqcCE literal 0 HcmV?d00001 diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE.atsln similarity index 91% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE.atsln index fd81924c..9e14d297 100644 --- a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.atsln +++ b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE.atsln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Atmel Studio Solution File, Format Version 11.00 VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "ACC_EXAMPLE1", "ACC_EXAMPLE1\ACC_EXAMPLE1.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "ACC_EXAMPLE", "ACC_EXAMPLE\ACC_EXAMPLE.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.componentinfo.xml similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.componentinfo.xml rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.componentinfo.xml diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.cproj similarity index 53% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.cproj index 7cee73e2..ad9fdd9b 100644 --- a/Perifericos-uC/ACC/ACC_EXAMPLE1/ACC_EXAMPLE1.cproj +++ b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/ACC_EXAMPLE.cproj @@ -12,9 +12,9 @@ $(MSBuildProjectName) .elf $(MSBuildProjectDirectory)\$(Configuration) - ACC_EXAMPLE1 - ACC_EXAMPLE1 - ACC_EXAMPLE1 + ACC_EXAMPLE + ACC_EXAMPLE + ACC_EXAMPLE Native true false @@ -30,248 +30,248 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/boards/board.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/boards/board.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/boards/board.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/boards/board.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/genclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/genclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/genclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/osc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/osc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/osc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/pll.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/pll.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/pll.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/genclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/genclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/genclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/osc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/osc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/osc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/pll.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/pll.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/pll.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/sysclk.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/sysclk.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/sysclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/same70/sysclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/same70/sysclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/sysclk.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/clock/sysclk.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/clock/sysclk.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/gpio/gpio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/gpio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/gpio/gpio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/gpio/sam_gpio/sam_gpio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/ioport/ioport.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/ioport.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/ioport/ioport.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/ioport/sam/ioport_pio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/ioport/sam/ioport_pio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/ioport/sam/ioport_pio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/serial/sam_uart/uart_serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/sam_uart/uart_serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/serial/sam_uart/uart_serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/serial/serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/serial/serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/serial/usart_serial.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/serial/usart_serial.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/serial/usart_serial.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/sleepmgr/sam/sleepmgr.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/sleepmgr/sam/sleepmgr.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/sleepmgr/sam/sleepmgr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sam/sleepmgr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/sleepmgr/sam/sleepmgr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/sleepmgr/sleepmgr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/services/sleepmgr/sleepmgr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/services/sleepmgr/sleepmgr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/interrupt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/interrupt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/interrupt/interrupt_sam_nvic.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/interrupt/interrupt_sam_nvic.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/parts.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/parts.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/parts.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/parts.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/stdio/read.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/read.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/stdio/read.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/stdio/stdio_serial/stdio_serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/stdio/write.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/common/utils/stdio/write.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/common/utils/stdio/write.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/boards/same70_xplained/init.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/init.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/boards/same70_xplained/init.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/boards/same70_xplained/led.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/led.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/boards/same70_xplained/led.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/boards/same70_xplained/same70_xplained.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/boards/same70_xplained/same70_xplained.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/boards/same70_xplained/same70_xplained.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/acc/acc.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/acc/acc.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/acc/acc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/acc/acc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/acc/acc_example/acc_example.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/acc/acc_example/acc_example.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/acc/acc_example/acc_example.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/afec/afec.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/afec/afec.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/afec/afec.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/afec/afec.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/afec/afec.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/dacc/dacc.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/dacc/dacc.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/dacc/dacc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/dacc/dacc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/dacc/dacc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/mpu/mpu.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/mpu/mpu.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/mpu/mpu.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/mpu/mpu.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/mpu/mpu.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio_handler.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio_handler.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio_handler.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pio/pio_handler.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pio/pio_handler.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/pmc.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/pmc.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/pmc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/pmc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/pmc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/sleep.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/sleep.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/sleep.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/pmc/sleep.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/pmc/sleep.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/uart/uart.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/uart/uart.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/uart/uart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/uart/uart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/uart/uart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/usart/usart.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/usart/usart.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/usart/usart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/drivers/usart/usart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/drivers/usart/usart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/acc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/acc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/acc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/aes.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/aes.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/aes.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/afec.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/afec.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/afec.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/chipid.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/dacc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/efc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/efc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/efc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/gmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/gpbr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/hsmci.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/i2sc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/icm.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/icm.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/icm.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/isi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/isi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/isi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/matrix.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/mcan.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/pio.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pio.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/pio.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/pmc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/pwm.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/qspi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rstc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rswdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rtc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/rtt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/sdramc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/smc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/smc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/smc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/spi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/spi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/spi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/ssc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/supc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/supc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/supc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/tc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/tc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/tc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/trng.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/trng.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/trng.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/twihs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/uart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/uart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/uart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/usart.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usart.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/usart.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/usbhs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/utmi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/wdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/component/xdmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/acc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/aes.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/afec0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/afec1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/chipid.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/dacc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/efc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/gmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/gpbr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/hsmci.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/i2sc1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/icm.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/isi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/matrix.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/mcan0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/mcan1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pioa.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/piob.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pioc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/piod.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pioe.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pmc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pwm0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/pwm1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/qspi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rstc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rswdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rtc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/rtt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/sdramc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/smc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/spi0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/spi1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/ssc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/supc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/tc3.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/trng.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/twihs0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/twihs1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/twihs2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart3.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/uart4.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usart0.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usart1.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usart2.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/usbhs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/utmi.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/wdt.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/instance/xdmac.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70j21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70n21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/pio/same70q21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70j21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70n21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q19.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q19.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q19b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q20.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q20.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q20b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q21.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q21.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/include/same70q21b.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/cmsis/same70/source/templates/system_same70.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/compiler.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/compiler.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/compiler.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/fpu/fpu.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/fpu/fpu.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/fpu/fpu.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/header_files/io.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/header_files/io.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/header_files/io.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/linker_scripts/same70/same70q21/gcc/flash.ld diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/make/Makefile.sam.in similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/make/Makefile.sam.in rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/make/Makefile.sam.in diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/mrepeat.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/mrepeat.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/mrepeat.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/preprocessor.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/preprocessor.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/preprocessor.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/stringz.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/stringz.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/stringz.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/tpaste.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/preprocessor/tpaste.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/preprocessor/tpaste.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/status_codes.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/status_codes.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/status_codes.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/syscalls/gcc/syscalls.c similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/sam/utils/syscalls/gcc/syscalls.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/sam/utils/syscalls/gcc/syscalls.c diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/arm_math.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/arm_math.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/arm_math.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/cmsis_compiler.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/cmsis_gcc.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/cmsis_version.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/core_cm7.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/core_cm7.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/core_cm7.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Include/mpu_armv7.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Lib/license.txt similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/Lib/license.txt rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/Lib/license.txt diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/README.txt similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/ASF/thirdparty/CMSIS/README.txt rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/ASF/thirdparty/CMSIS/README.txt diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/acc_example_canopus.c b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/acc_example_canopus.c similarity index 52% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/acc_example_canopus.c rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/acc_example_canopus.c index 35d1e2e2..f4f98a31 100644 --- a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/acc_example_canopus.c +++ b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/acc_example_canopus.c @@ -1,92 +1,3 @@ -/** - * \file - * - * \brief Analog Comparator Controller (ACC) example for SAMV71/SAME70. - * - * Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries. - * - * \asf_license_start - * - * \page License - * - * Subject to your compliance with these terms, you may use Microchip - * software and any derivatives exclusively with Microchip products. - * It is your responsibility to comply with third party license terms applicable - * to your use of third party software (including open source software) that - * may accompany Microchip software. - * - * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, - * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, - * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, - * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE - * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL - * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE - * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE - * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT - * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY - * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, - * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. - * - * \asf_license_stop - * - */ - -/** - * \mainpage acc_irq ACC IRQ Example - * - * \section Purpose - * - * The acc_irq example demonstrates how to use the ACC peripheral to - * detect comparison event on the input pair. - * - * \section Requirements - * - * This example can be used on the following boards:
    - * - SAMV71-Xplained-Ultra
    - * - SAME70-Xplained-Pro
    - * - * \section Description - * - * The acc_irq is aimed to demonstrate the usage of ACC peripheral with - * interrupt support. The DAC0 and AD0 are selected as two inputs. - * The user can change the output voltage of DAC0 and change the voltage - * on AD0. - * - * The output voltage of DAC0 is ranged from (1/6)*ADVREF to (5/6)*ADVREF,and - * the input voltage of AD0 is ranged from 0 to ADVREF. - * - * The comparison event would be generated if the voltage of one input is - * changed across the voltage of the other input. Both bigger and less events - * could be triggered by default. - * - * \section Usage - * - * -# Build the program and download it inside the evaluation board. - * -# On the computer, open and configure a terminal application - * (e.g. HyperTerminal on Microsoft Windows) with these settings: - * - 115200 bauds - * - 8 bits of data - * - No parity - * - 1 stop bit - * - No flow control - * -# In the terminal window, the - * following text should appear (values depend on the board and chip used): - * \code - * -- ACC IRQ Example xxx -- - * -- xxxxxx-xx - * -- Compiled: xxx xx xxxx xx:xx:xx -- - * -- Menu Choices for this example-- - * -- s: Set new DAC0 output voltage.-- - * -- v: Get voltage on potentiometer.-- - * -- m: Display this menu again.-- - * \endcode - * -# Input command according to the menu. - * -# Change voltage on AD0 to see what comparison event happen. - * - */ -/* - * Support and FAQ: visit Microchip Support - */ #include "asf.h" #include "stdio_serial.h" @@ -118,11 +29,12 @@ void ACC_Handler(void) { uint32_t ul_status; + /* Leitura do status do periférico */ ul_status = acc_get_interrupt_status(ACC); - /* Compare Output Interrupt */ + /* Comparação da interrupção de saída*/ if ((ul_status & ACC_ISR_CE) == ACC_ISR_CE) { - if (acc_get_comparison_result(ACC)) { + if (acc_get_comparison_result(ACC)) { puts("-ISR- Voltage Comparison Result: AD0 > DAC0\r"); } else { puts("-ISR- Voltage Comparison Result: AD0 < DAC0\r"); @@ -191,11 +103,11 @@ static int16_t get_input_voltage(void) } ac_str_temp[i] = '\0'; - /* Input string length */ + /* Tamanho da string de entrada*/ c_length = i; us_value = 0; - /* Convert string to integer */ + /* Converte de string para int */ for (i = 0; i < 4; i++) { if (ac_str_temp[i] != '0') { switch (c_length - i - 1) { @@ -222,63 +134,25 @@ static int16_t get_input_voltage(void) return us_value; } -/** - * \brief ACC example application entry point. - * - * \return Unused (ANSI-C compatibility). - */ -int main(void) -{ - uint32_t uc_key; - int16_t s_volt = 0; - uint32_t ul_value = 0; - volatile uint32_t ul_status = 0x0; - int32_t l_volt_dac0 = 0; - +void init(void){ /* Initialize the system */ sysclk_init(); board_init(); - - /* Initialize debug console */ configure_console(); /* Output example information */ puts(STRING_HEADER); /* Initialize DACC */ - /* Enable clock for DACC */ pmc_enable_periph_clk(ID_DACC); - /* Reset DACC registers */ dacc_reset(DACC); - /* External trigger mode disabled. DACC in free running mode. */ dacc_disable_trigger(DACC, DACC_CHANNEL_0); - /* Half word transfer mode */ dacc_set_transfer_mode(DACC, 0); -#if (SAM3S) || (SAM3XA) - /* Power save: - * sleep mode - 0 (disabled) - * fast wakeup - 0 (disabled) - */ - dacc_set_power_save(DACC, 0, 0); -#endif - + /* Enable output channel DACC_CHANNEL */ dacc_enable_channel(DACC, DACC_CHANNEL_0); - /* Setup analog current */ - dacc_set_analog_control(DACC, DACC_ANALOG_CONTROL); - - /* Set DAC0 output at ADVREF/2. The DAC formula is: - * - * (5/6 * VOLT_REF) - (1/6 * VOLT_REF) volt - (1/6 * VOLT_REF) - * ----------------------------------- = -------------------------- - * MAX_DIGITAL digit - * - * Here, digit = MAX_DIGITAL/2 - */ - dacc_write_conversion_data(DACC, MAX_DIGITAL / 2, DACC_CHANNEL_0); - l_volt_dac0 = (MAX_DIGITAL / 2) * (2 * VOLT_REF / 3) / MAX_DIGITAL + - VOLT_REF / 6; - + dacc_set_analog_control(DACC, DACC_ANALOG_CONTROL); /* Setup analog current */ + /* Enable clock for AFEC */ afec_enable(AFEC0); @@ -302,13 +176,43 @@ int main(void) /* Enable channel for potentiometer. */ afec_channel_enable(AFEC0, AFEC_CHANNEL_POTENTIOMETER); + + /* Set DAC0 output at ADVREF/2. The DAC formula is: + * + * (5/6 * VOLT_REF) - (1/6 * VOLT_REF) volt - (1/6 * VOLT_REF) + * ----------------------------------- = -------------------------- + * MAX_DIGITAL digit + * + * Here, digit = MAX_DIGITAL/2 + */ + +} + +/** + * \brief ACC example application entry point. + * + * \return Unused (ANSI-C compatibility). + */ +int main(void) +{ + uint32_t uc_key; + int16_t s_volt = 0; + uint32_t ul_value = 0; + volatile uint32_t ul_status = 0x0; + int32_t l_volt_dac0 = 0; + + /* Função para iniçialização do sistema, clocks, DACC e AFEC */ + init(); + + /* Iniciando a entrada DAC0 em ADVREF/2 */ + dacc_write_conversion_data(DACC, MAX_DIGITAL / 2, DACC_CHANNEL_0); + l_volt_dac0 = (MAX_DIGITAL / 2) * (2 * VOLT_REF / 3) / MAX_DIGITAL +VOLT_REF / 6; /* Enable clock for ACC */ pmc_enable_periph_clk(ID_ACC); - /* Initialize ACC */ - acc_init(ACC, ACC_MR_SELPLUS_AFE0_AD0, ACC_MR_SELMINUS_DAC0, - ACC_MR_EDGETYP_ANY, ACC_MR_INV_DIS); + /* Inicializa o ACC*/ + acc_init(ACC, ACC_MR_SELPLUS_AFE0_AD0, ACC_MR_SELMINUS_DAC0, ACC_MR_EDGETYP_ANY, ACC_MR_INV_DIS); /* Enable ACC interrupt */ NVIC_EnableIRQ(ACC_IRQn); @@ -316,7 +220,7 @@ int main(void) /* Enable */ acc_enable_interrupt(ACC); - dsplay_menu(); + dsplay_menu(); /* Função para colocar na Terminal Window as opções do menu */ while (1) { while (usart_read(CONSOLE_UART, &uc_key)) { @@ -325,51 +229,40 @@ int main(void) printf("input: %c\r\n", uc_key); switch (uc_key) { - case 's': - case 'S': - printf("Input DAC0 output voltage (%d~%d mv): ", - (VOLT_REF / 6), (VOLT_REF * 5 / 6)); - s_volt = get_input_voltage(); + case 's': /*s: Definir nova tensão de saída DAC0 */ + case 'S': + printf("Input DAC0 output voltage (%d~%d mv): ",(VOLT_REF / 6), (VOLT_REF * 5 / 6)); + s_volt = get_input_voltage(); /*Pega o valor de tensão da entrada inserida pelo usuário*/ puts("\r"); if (s_volt > 0) { l_volt_dac0 = s_volt; - /* The DAC formula is: - * - * (5/6 * VOLT_REF) - (1/6 * VOLT_REF) volt - (1/6 * VOLT_REF) - * ----------------------------------- = -------------------------- - * MAX_DIGITAL digit - * - */ - ul_value = ((s_volt - (VOLT_REF / 6)) - * (MAX_DIGITAL * 6) / 4) / VOLT_REF; - dacc_write_conversion_data(DACC, ul_value, DACC_CHANNEL_0); + /*Coloca novo valor de tensão*/ + ul_value = ((s_volt - (VOLT_REF / 6))* (MAX_DIGITAL * 6) / 4) / VOLT_REF; + dacc_write_conversion_data(DACC, ul_value, DACC_CHANNEL_0); puts("-I- Set ok\r"); } else { puts("-I- Input voltage is invalid\r"); } break; - case 'v': - case 'V': - /* Start conversion */ + case 'v': /*v: Pega a voltagem do potenciometro*/ + case 'V': + /* Começa conversão */ afec_start_software_conversion(AFEC0); - ul_status = afec_get_interrupt_status(AFEC0); + ul_status = afec_get_interrupt_status(AFEC0); /* Leitura do status do periférico */ while ((ul_status & AFEC_ISR_EOC0) != AFEC_ISR_EOC0) { ul_status = afec_get_interrupt_status(AFEC0); } - /* Conversion is done */ + /* Fim da conversão */ ul_value = afec_channel_get_value(AFEC0, AFEC_CHANNEL_POTENTIOMETER); - - /* - * Convert AFEC sample data to voltage value: - * voltage value = (sample data / max. resolution) * reference voltage - */ + + /* Converte de AFEC data para valor em voltagem*/ s_volt = (ul_value * VOLT_REF) / MAX_DIGITAL; printf("-I- Voltage on potentiometer(AD0) is %d mv\n\r", s_volt); printf("-I- Voltage on DAC0 is %ld mv \n\r", (long)l_volt_dac0); break; - case 'm': + case 'm': /* m: Exibir este menu novamente */ case 'M': dsplay_menu(); break; diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/asf.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/asf.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/asf.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/asf.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_board.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_board.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_board.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_board.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_clock.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_clock.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_clock.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_clock.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_sleepmgr.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_sleepmgr.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_sleepmgr.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_sleepmgr.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_uart_serial.h b/Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_uart_serial.h similarity index 100% rename from Perifericos-uC/ACC/ACC_EXAMPLE1/src/config/conf_uart_serial.h rename to Perifericos-uC/ACC/ACC_EXAMPLE/ACC_EXAMPLE/src/config/conf_uart_serial.h diff --git a/Perifericos-uC/ACC/ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo b/Perifericos-uC/ACC/ACC_EXAMPLE1/.vs/ACC_EXAMPLE1/v14/.atsuo deleted file mode 100644 index 3ae884c137e80747eb7109e3c61714ca63a449fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18944 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�$A_EvIQjr2bc2SEx2==_Lk z0C19j?XvLZJo}$)j1Y=Ygj zVsyDIHlx*PcNkfVjW?RuRfm;#a8A}?f9=}H#*6-CNo>gVt!u)i&7^`uVVec1B2_n? zb+J{IYE5NRJ%{^VNZdcOfD)zV*A2PW@j!fB{Z$uTY$-A5`ITnqZ-F)1pcoQYg++VHx(iu0u z-mSO%TgjdER>I3~W$|4{+~5>n#J3@2`qg~Fyb^AjO-g)ih3!}RjqN_mI+pEnEzvD{ zyN-xO=o|9YbVzbr`=w5fZ%1mqgg3dIZ`B%7W2IAcXIeSuT3bm+>MJ>?p^&i`gEdRo zQ|bm{Y%It7ZHluW@zzp;C&+fqf^1H3wgR^i=$W%{6So=_S7*x==GUtRSKH9HB|2=O zV{@ik9&fecZb*^Lnnkpx{CWRM&F;?>g4QA%&m>9)k(WGMtzOzA@dlghVb@z;jy2T7 zfo9iMG>5i=7T(nNZ}e?W(@H$5_#BafE9SEWmUr9|SFClq0pEHzRqA;wp)_CPEuz3y zW5tb5Hsr8Wyvanat{BX*m8hp8G&S{8}}YT<=@mLLwKjxqYP_TPM^qXIQ103){0rXFC#<6Xj?mklL_x za^AIkHYj;aJAx}(51Itave(`6wj2JCJ!ajpMABl;Y|9v|)mDl3EQe!;<+{7swkB3$ ziruwl_9RT1@^-@3t=hM^t;}}1Aa_<`jg8e1DGaKc0<6H>@N3Z-m%N~EHYu4lWRN%(e>g|ao3HOb4lSTECvy18^JTS{7% zH!L=JM|2hoY)q)H+d2ksCng3v#kRo{EaaMQOHWP(!|}R1f>8o+Rosc~cq>{J1f7$p kK0eOSKl;-Db8GMl9%$e3a4U~NEysQRLF*U7!&=k-15RHd-v9sr From d210f16eeb00e9fff3e4da1bb6be026302dc0376 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:44:31 -0300 Subject: [PATCH 21/23] Update README.md --- Perifericos-uC/ACC/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index 8bd6c05a..d1b57b0b 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -122,6 +122,8 @@ int main(void) ### Interrupção +![image](https://user-images.githubusercontent.com/62957465/172090861-626aff4b-a012-4188-9ba5-185cfa5ff998.png) + O ACC tem uma linha de interrupção conectada ao Interrupt Controller (IC). Para lidar com interrupções, o IC deve ser programado antes de configurar o ACC. ```c From 64b9f247064915dba3aca6509d861ffd385cdf77 Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:48:59 -0300 Subject: [PATCH 22/23] Update README.md --- Perifericos-uC/ACC/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index d1b57b0b..d4b64125 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -120,6 +120,11 @@ int main(void) ``` +### Inicialização +```c +void acc_init(Acc * p_acc, uint32_t ul_select_plus, uint32_t ul_select_minus, uint32_t ul_edge_type, uint32_t ul_invert) + ``` + ### Interrupção ![image](https://user-images.githubusercontent.com/62957465/172090861-626aff4b-a012-4188-9ba5-185cfa5ff998.png) @@ -148,6 +153,8 @@ void ACC_Handler(void) } ``` + + ## Referências - Atmel Datasheet: https://www.tme.eu/Document/b85c146da65ff583bac4b0dfc098ee7b/ATSAME70-DTE.pdf From db03bf32799e2f54b4c968a5ba7185ce3e8a9eec Mon Sep 17 00:00:00 2001 From: felipebpl <62957465+felipebpl@users.noreply.github.com> Date: Mon, 6 Jun 2022 00:57:16 -0300 Subject: [PATCH 23/23] Update README.md --- Perifericos-uC/ACC/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Perifericos-uC/ACC/README.md b/Perifericos-uC/ACC/README.md index d4b64125..1d8231e3 100644 --- a/Perifericos-uC/ACC/README.md +++ b/Perifericos-uC/ACC/README.md @@ -124,6 +124,21 @@ int main(void) ```c void acc_init(Acc * p_acc, uint32_t ul_select_plus, uint32_t ul_select_minus, uint32_t ul_edge_type, uint32_t ul_invert) ``` +- p_acc: Ponteiro de endereço do registrador + +- ul_select_plus: Seleção para a entrada positiva do comparador +![image](https://user-images.githubusercontent.com/62957465/172091682-3917c68b-4fe6-4ebc-ac25-07d6b7750aee.png) + +- ul_select_minus: Seleção para a entrada negativa do comparador +![image](https://user-images.githubusercontent.com/62957465/172091766-b4dd8465-732d-4def-a4fd-a619584e438d.png) + +- ul_edge_type: Modo de acionamento do sinal de comparação +-![image](https://user-images.githubusercontent.com/62957465/172092077-e7aa590c-e937-43a7-adea-befbdc433081.png) + +- ul_invert: Inverter o modo de saída do comparador +- ![image](https://user-images.githubusercontent.com/62957465/172092173-5dcfc376-f212-4386-bfbf-fd9e60263a28.png) + + ### Interrupção

    =ik|MKDZ#= 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�P!*$0P!;%0P!>&0P!^(0P!{) z0P!~*0P#2+0P#5-0P#8;0P#B<0P#E=0P#H>0P#K?fT|zl|MTzoJAQ_r<#+g9K7-HV zGx==3gYV)y`EH(pXW^N6HlC4Z<(YYQ-hp@Fop?9ik$2^td3Vl$v*1iP8_tNc;>x{l7n|A7Hu z0hj%qT z_JM(5A(#j@f{|b)mSVD6*aU0?HUe9L&A@hGL$D>-6l@DN23v#8!S-N-utnG;Y!fyLTZPTSc45P? zW!N-q8#WGGht0$GVFR&+*hFk2HWFKj&BS(ML$RgURBS6Y7F+AKxng^DKgd>VWkd>niod>(usd?0)wd?I`!d?b7&d?tJ+d?mMj4zB&jBkvOjIWH(jPHyOjW3N)jc<*QjjxT*jqi;QjxUZ+j&F{Sj<1f-j_-~S zk1vl;k8h8UkFSrfLMT-fY^W-fmnf?r>g4lu>gII%@gV=)@gjj@_ zgxG`_g;<4{h1i7{hFFG}hS-J}hggT0huDW0h**f2h}ei2iCBr4iP(u4idc%6ir9)6 zi&zT|fY^%|j984AjM$7AjaZGCjo6JCj#!SEj@XVEk64eGPu0N_3lb9&8xkWDD-tsj zI}$?@OA=EOTM}auYZ7x3dlG{ZixQI(n-ZfEs}i#kyAs0^%M#NP+Y;jv>k{)4`w{~a z3lkF)8xtcFD-$ylI}<|_OA}KQTN7gwYZG%5dlQ2bixZO*n-ilGs}r*myA#6`%M;TR z+Y{px>l5=+0l2arzonCeN(djv-ubkd-`ork~ zr_Y;SZu+(9$)@j`-fH@%>5--nnqFu6ndw=kFPYwB`itoyrcan&VETRO>7{R%-dxxp zdTi;VrB{}ISbARRYo&LU{#1HU=`*F5lzvfqLZhYgir!B8H|f!&50hR?`YGv|q%V@* zNBSG-VWdxyUc_S3aYs)feS`D{(*H+~AANlE>d}u!&mDbr^v=;AM-Lo*ZV#oGjea$H z(&#&*w~YQVdc^1hqt}amE_$};%cA#+{wjK?=#!!sihd`0n&?}iHwpRwAX7=u0cMM# z2h0#d7nl`>J}?suonZDCdclk@bc0!5=m#^q&=F>Hp(o7XLRXlzg}yLT3!Pzh7J9>s zEOduiSm+Nkuh1c8TcJnHutJxZRfRq=lM0<;_7r->j45=BSyJd1Go#QkW<#N8%z#4I znDvCdG1Cd1V|EjI$BZU)k6BFUA2XNGL1rtVhs;ny7nzlWJ~9&ton-bAddZ92)%D2fb#-4!X@O9rT--Ip{dEanN&S;GpZwx8!F~B5d zUw})@xB#1&WdS}hvjU7_HU&7v3<|J{SrgzDGbO+*W=DWq%!mNHm<0iTG4lZoW3~f0 z#ta9rj9Crf88aEcG-fY=Ys^>x+nA*QzA-ZajAJ$eIL8bGu#Q;=;2kp!z&vIbfP2g+ z0Q;Cl0R9=JD-jH2wg5QD3<0o^Spnc7GXcOvdjG*idi=pgdilXediKFcdh@|adho$Y zdhNkWdg{SUdgsASdgQ@Qdf~xOdfvfMdfUNKdf35Idey;GdeXsEde6aCdd$IAddb08 zdd9(6dc(n4dceV2dcDD0db+_}dbhz{dbGh_da=P@dal7>daJ=$*PSb-7R?}+?Uei+yX45+iZqp+ScGC+Ce$(>{hSS>% zj?=>nmeZ>Xp3{>HrjL-`TX3BoTdH|>q{HiWr)z_;!c~$RD&YE{t_2;UNT-AfCx^7jUt?H~*y|k)( zR`tuO4q4R`tGZxS->d3$RlTjMnzQRs`FI!nyT)S_z4+Mb&#r_ zQPm}?`a)GFNW6;-5H}+Os{T&Z(W!bkRoABK(^Q?AsuxprU+_1`fU3h%^;D`ZO4T>1 zIwe(ar0RxL{g0~SQS~^gu13|zs5%$8Dr7*_ov8W|RR^N#IaFPSs;^LW5~|)o)h(#{ z164<$>H$<se<&%jCkpY$8Re4&KZ&i6yxqh(#nx^uYDj%ux ziYh;-@_Z^^r}Azpf2Q(aDxanDQYycs@L0on1u?hW=m$o&0|GW(tR-pqFnU=Ig7A=t%HTJ}T8JpPXCitx;V4qz__ zJ0xT_e@FI7u%Cn75}tX{0qp5u=LEYt?#uoO_I0p}!ZTMofV~}0Wk&_OJ7ivcfXwgj z7$mzZJoBdm*yF)Y3wC+PeER_QdC07L=9Dw1I)J?%G6O$=-5%`2V7~{uF+B6E1FFlO z4|Zm->x2Cn?E7GshG*`zd+!H3He~jHNA_*7|AXBdp844BJs@XgCkMMg*w0Z__JOdg z!!t+Qy%&TX9_$8Tp9lLv*zMt&x7|^bJt4JZ=Lfq&*#E)45O#rh=5o9DhRBWp_wEq( zg|I(F?T~pPGral#{5$@R{UZDGvch+l_E34-Dk*Ia;BUuXUti1<}yp%eFxkH zcf#FpN8A;6#@%s;+$DF)-Ezm=HFxfrf9{qAWCGbhMvxU`MrM+`We8b9rjRXU3|T|w zWLCLb29ZT%64^vXkyT{YGk4uB%g8jcjf^Af$UL%-4xkI@1iFEapeyK%XO6pDm(VG8 zqo8Bx8al@;d~^_9L?_WrbQE1hXFYS_J2sHLDd;r1jgF_v{*?dQp@a78{P_@nmcKv5 z-^6o`3=DMgRlYhXNkT+2nx%>`4Iw*g*gWus;P1V3!IQAZMKi z26*;0p!<1X0J~Sf0J*C?Fo2x~U;z7BzyP`1JTO4+Iu8txyLazE5Lw8>9*At@fdTA! z0RudHBGCOjFo0b!V1US49vI-+CxPzgfdL|$d0+s0WWWG+E`R|d%X!!{cFlkR?41Dv zME3K*0MUg!Fo4}OU;uk+zyQ&mJTQR$HP}AaKf2HRp!>WZy3hNf`@BE8&v~HxoDaIsd7=B9AG*(ZqWhdLy3cu| z`*~o1=RVMV?g!oHzSt|lt_yUZ`$YG-Uv!`QM)$dYbRT&@_mK~DA9-O<1@eRLBTwi) z@`dgrZ|FWdGthnH5#2{Vb3O8k?jyhGzI(@xN50X04+&|0j zc<{shS$w7kU)n?;32vXKDy6} zGxOjly6@hhS##zd{B_?2cjCck_g!&k9{hISC3otfivW!f7?3-KGk$I2(bL#>+;jxcy zT|s9&_7mO5p1O4l9rM^*x9*{X9((N8O?1>_uid(f4twmmTes11bR7)9_=5pp0e=?V z$3Jjm1sI_A%6R+F)09eU+ft_H0$DeXzD;VJMx6pkz27CN5H#UO-9)FGdb7Q#2pL1h77y#CD-yZ+Z zZ3~bGYy%kJ@fY2;0}Sx^lWyAr26+5Uif7NZfzyOaw>$YvkH?|H8 z@c6%OTL=bt{A0JR1Oq(&v)h(}0UrO_ZELZ)Y9EisA9vekFu>!lyKOfZ;PL0(wjKS( z)`J1~{$K#U02m;D*AWcBSHNe$_Xh*;CBPGW3orm*1H8fa00ZzvzyN#`@Cjc94DiG+ zZeIorz_$V4@O8idd>`-+UkD74vvK=K_)7Rp_)cH|z7!aMZv_V6Yk{|FpAfznc#Llb z2H>lK*ZBTm0KOb}j&BDB$X#~??>+IK+ZV(h;2VMg_=?yIwU-EA5_^Jg2?pS6f&pq@ z5xyw)2;US8z*ogy;k$wXBFi1IXZW^Y0KP8vPGr9$7=SN~J;XN#1Mroxm-x^_`;4y+2B`p!i=k=T7m!YHpq4 zgVh{5#S5#sa*7|ON1Q$b#S^Q!Z;CHgbKDeftmd*Q{#eafQ#`Voo2K|=H3v=c%4)8e z;+NH&GQ~5ixnqiNR&&G@@2uv6DgIf_`RXE^EZnS`+okwuHHS;_(rT`j;-}S|EX7mP z^Ge^A;;YphE5%!@xm1e3R&%BlkFDlLDLz}xfl|D-n(LJ5nFFcjG%222&0SJ_x0<7* zcyD?l>1$N{x0-XLcyKkhNb%wHAo7`t7guwI6hE%!1Sy_e&HYh)xtimncyl$ENAc%s z&W_^I)!ZD#r>i+QidR>2Z4|$*=F}*jUCo_Qe7l+>qj+~U7v}%-@18j?iicNoTNEF! z=CCMUo}MaXPVw_(3Y8B~b0}0^K+Tm<`2jU2 zLgfk6+y|8}pbm=nQF#M3mqFzZ)SLyCM^JMUR6aq?K~Q-GHP=Ap7u1{rm1j_M2UNa6 z%@I&}2Q?Q!U&rD3f0H1@)oKuUF9!S zpSj9osJ?NP&rp5fDzBmXx>bHd^=Yd-2X({ftIBt%K5CWsP<_!V|DpPvRUSn3EvtNp z>O)p}5!F|$@*}EGSmjAn->=G-s6JkmH&K1LDu1H-Y*ijb_06h$it2+^c@@>ys`4wU zPgUhvRNtw}x2Qf+m3L8np(_8P`aD%0M)hr~e2nVDRCyWISE=$ds!vkoX;j~%%Ganq zMwPcweTgc6qxuY09!K>Js(cPLfM9^i>rm4N2B`dw>eEws9@TfJ@;$1LPUU@6U)=xs z|C*-y+*BS&^{uIVkm^HIc_GzTrt(9oPfX>BRNt4%7pXojl{Zp-St@^|`m9tQN%c*s ze3I&eQh6oS*QD}Gs!vJfnN;7A$~UP#B9(VieL*V!r22gRe;&%yx1;h=st-ryrBq*y z%1^028I`9}eJ?6srTSP@-b(eQsQi`cGf{ag)iT^(eFx9u9@?okELFL6%UxCVxsXhUfCsTF*Dqp7R_*LFa)#a=F znX0o_c{EiwukvZC4qoNeR9(Buucc~~zP1S{~{F|!tR(Uv8x2^JV zst#M_2$mRo+k4#o9H^%S+R$RnW91)ua@tj;57rqG>f+Yg#jhrkT5ITA6;D z<~vx^nvc*lYnY~$o2+SmQJU6L*ED;Qrd3GQv^py_t#yW`72c|8-dUPfFI&^vx-_lm zDNXaaplJ=RX9zCQqABn)-gCrH8D79 zv^F@JISdYScY~u$KZC<}u))!Mgu!7AGdRjkHaPsE433t%!C_A_I4YzX9CcP29IZ19 zj>20F4(}|3qh7Yb(bi>f6g_2d_*^hJ8eB6t+TSraia#_ssys6|8of3+0yLv$w;OdY zFQZCc$&8Qpe81+(3jCzgMM!lKCsGGYR^)mg8y6<44-h6~nw}u(@a+8g^UzAaA zsT*~Bl2NaaYSinjH0rH0jC$d%M%_EhsMpIj>TO*{z33^U?sLJYH@Ifh+ut$j#UC2= zD$k61qt`|~Kr?AY?IxF(m&sMFg2~mSnn^EO$K)#2#N?{c+T?2HFuBa#O|CNiOfKKS zCRg(jCYLqLvsUbsS*v`(tTnu5);ioVYb73eVY)^`_OVE_)rTUb=}@ui4tF`#Y?TLfx%;*?v~N)?lmNVuV$< zg<19TldXE~D68H|x9WwGta`;%t6q1dRd17F)r)Mk>Xovrdi`vx-p*y!i=DFSl`mNJ zhS#imhdWli#6zoI^_f*~{MxE_)NGETcAKlDm(5kZg3Z;mn$1a}`RmxhkgGTyTt*AD)G?fs`||4YW&*f>ZsW@FT36DCI3~e zg5BPvnqBv*W4D)TVz<|5ZMQdb*tL?~?e;SL>~`P5c6;*?cD-bn-Cl08-R>7g zca!Y)3aNH`ot1Wb>kPZS@K(FsJIijbmuv}McGP2coQ+mcP$l1<%D*2TFwH|OvS z=jPm;n{#t+ZVrG!6O=*Hf`1e#y9ENGe-TY~K@53i*sCDn&IQph7gzPVjM=LxP;1a30LA0P{VaCF3sz4Y0HR9duCipT5)O7j!Ok6 zF16jbl=kA%vLBarg1FR$63`-?un;6+VQ9i4u!OjXC#(q~VXc9LRVEYA5|yx~=!BJJ z5>}N>h)Z0;n&A`HhLEu8Vgg>25*8{aEL=%gKut)CTEd#w6V{fIu=dP^m9!GpqMfh` zPQq%t2`lX-tYtr8?F0#{3nfVePQv3z5?)1oL<0j#ZmxNdRB)l6W;U1JCr{EMdj-;qnG)0xLlsSc`s7WG4t%DR*Ayecum7=EU z6qRFAREj`JuPh;X{lwVsW~ex zE!k; z$LTCHPFLA+F~^P5GyFKcA&k>?aU9M{<1{Ld)3`ED19e==YUA|0K2C2L46$X#d>D!`LS0hzQhbkZiUNwI)W$^~N5UIUYM znVf`*)TBK{Puf{#(yp?TVv(D)XZT5bLzuMd;v`&7&3*dqEko-n=&zc%EpK( zWF1T)6>^GPrKXT+dJ4%gQ%H@SGFQ1NWR{;oHiapqAx=@4G=LW<55(s8G(Rc{Je@u!g8U<&C$(_|K&rnBJ@R?%s?giV`S zeA>G~I({NF1J_ab!kbMQ7v^ zHe=%WjExgB@;aE2E94BBr)KCpJtOCs8M(&Jn0anSp5drYZbIvdqJPIw~bl5WzJGXYt~+}XYHahYj@mPtLV+zEB>s#8_e202!#k3 zMF<2%F%(4!3>66+l?ehx*8qx^NfatkC{m(PG|Ql9l|{u8hsq@$MK=T#t&1p3Na5#X z6vY)31u7~L8j8;AD7s~!=$?tfB@0CtZ4@myDB5;WspO&PvX7!W0g85^Ij9QHAys6K z!O%H|z~;m%J||a+Ic5#aF=cWNs!?-Djhf#(+mFCc@ zJjdY590SxjsjAH}^ZFdKWy~>q<{VtJ=9oo$jwv{EOxvB4YTg{P?9VYf!5q_t<{<#j zBLJCKFmzrauz3;S^D-djl{GN0l*xIhNzEfodS1yg^GcPS7n|I?+~nt#4PjoXi}Ns$ z=20NeE4VVR0CiphTDa8bl`Ugl*)!+irZulD+Ve`mnOEBGywvpOm1Tck*$L*AF0=r( z;RU3PEI1gt;1Jk?*v1#+HnHHWfd!{bE0qM{SPL^44s_cT;;TGf$zu;^L3r<~J zfZNgn+Ljj_Tv>2{x*)Z+1*NSoI9tYovu7^A9c#f^v=^L$v*5Jd1*zjLILrQmvlA>h zU1*Uc;6<817SUC75iMbhCV?;71hI&&gGIDLE|Mi`kuK4TXpUJ#YwV&~;uh@^zld%M zi)ce!qzGw|A>>6guPmZXb_xQbETSEE(JFb1=!(CH z?goo!4_YFt@Dg1`mY7v^i78=AW))wutHcts4wje-xkT2eCAvm0F*#<5sj*9Dja#y7 z{1US%EHMpniK(HILbs6>XBAy>O4y3o##ih%vEr!R>upM{))33tT;Uw6EOtCFciZG920Q@!`1+Xl}Rk@_c0TrF)YhqSe3<)EQgsm zk6{}EhSeoZBxDT36$}F^1``@40v*G)3=G>dv9Qm_Ov1*nf`egg7lTV4W&$6>b^;9R zLaSk)zbdXGt4J1IWeIE*%i^nIo>*nqz$#lNSHnJk)m)`l*(|flR@qfL%dMJuewE!2 zR@u6^8ut0CVo6?Qab=YS>MC5-R>h{i%5E8}?4G$A_W7%3$zEj(&MMn>SK*qsYBv2< zb|+Y6yU<$L=BWz}ArxzAoj7b+iQ5-7>izYHr;u(d%xOS$C`KI$h${ ztvtW(ZV2mcU0g@A(z;ZV*Iis$cY(T&R<(7hsjs_R#=5&_uA@0?-74AZZoyf1+wMAA z^VY4VzwYh?>uwj$idiI!Wzj5F!n0z5$RZ_>#VTYrjCmsAMLx%F3OTkR<;0qtWAjRmZK^q{ zs^!Fvo@2L-9NV&TX3fsAMJLC0+#FT&a%RWRvAaQz?Lix1f3hJ~kqx+tZm1<}1F7O0 zQi0e&t6)Q|kQ-!`+Ayp1232J?)Ec`%SGf(Vz;CFV!iL%qH?XR-AywrKHLq-_O?87I zv<<1PZ>ZbGhT1YW*s8T*RqYM6=xnGRcY`T;8&=!jPRX zCQ`#Ur6RG3*1)D)AveSJY}2gKn^cY2bZhJ;UE?;bBERWw3Y%_2+{9|qrc{$R-Mq5t zHq}k0s%=Ugebe1GHrVhwr$Eqc~3B zxE#JnIKc5Ti9-bn#|ktq78o3_vN&Aea2w}wsUYBZUBYET!EvC5pVM#|=s3P*;P{@2 zBLxe$2^+@?4vx2794&ab4SXEm32?j%<-_r79xfnxq=4o*0?T6sJTK>oyiI^SS0?jh zfy%Q5I&T)3JXdA&RDsLec|LCyggjRl^I}2D%OyFF7nD2))I46*@^Vwpb6ZB9+cWcY z!OGhuJI@uIJlA&fOu@_BO+U}=1bMCtZH4{!76y}LdmB}rr zO>JRqdP{6GTUwRfg4^5{-sZQYwy>qu#VrI#TM8j>$w1lCfVzbOZ7b}*!>6&O?Su?AKNTIwoQO;djz&k0eqVS#I^;%wpS*% z$u_mkw&`uN&1`#BcAIK*+gzL9w%WqBR~NTwAZ;rpdD{lcwg=R0258$#Q{Q%gvF+`d z+jQI7c1rfPS8%qyw!6)=y=|xIZ+knzw%3IVSOF=B1+;*d@IrXsP>@TYfLF*uc;8UK zigZCNG6lTG7T_XRunT-aDhdU>Ar<7RQox&Pfg`kn+|~;mFba6fEFeXzU{~z|UUUk0 z$1R{muVAE;eDRMQgXczgSRTPR` zLn_KOrN}kaB3IRlaz`(6ZKKGwtfF0Wid@GHxA%&6$1ifbL6Pf0J5Uqe!J5d9*hF`< z61D?3@g2NL>_|}XAO2W@IQ;dp3AX&O6P%iKXa){axPcjS(H9`eCApwIR_Dn)7S%gd2gj{k6 zqU{n=$s=6g6H+rEh%QtL+r|=HMM_8&EumGcgjK^@Qzc476_ofgSqjJ6CAdbHkQ!6s zt859Yg;%-8mzb(h;_G5btV$)d6sonVlz5<)q^ed@n|euV8zp|vEQvL%1N*S}ltJDZ>CQO8_e)056AQ?J^2LSuc}i5>RCm&}9lRWxdLl zX~30jz?T^yl=Zq;#(-2-fn3IcQr3Z54$r@=0lge*wXE-%WfoXv7uaPEIAy)Zv>W>D6Llde!rrs7xG3f<%? z;aIQ2G=+*^7b{p(s;Eu5f;W|l57dfM)hb$3uPAM!;_sOiwrN$|rd{EhPQ`D#6{Y4? zyry4KIzh$nqSY|YRkTS~!#G#NI9J0sSBV;14dYx5<6K2+LX~JpRkf;AiKbRn+j`Xk zMwMup)iAbIw`y0z*j9;-TMc7db=!W`Y6exJht`N1s4-2Z#@B=z-;io*O{wust)_PL zn$-hb4^Hd2S%XkBV!b)=2g!~2gq+6Hx{P1eKq zt8TXGI@MUu-0V{NIfw&gnBR_c0FtrKmnuC?`g*nZXZmRV=p zR^4seb*}By^^RNT+g{yk`*o)o)b$?JfI4tP>>v%egEpiN)<8OVL+%g_v;!JShirs; zYnUCnL3Nmh)nOZShiio6-v-kW8h%4;U>&KUcH{=$Q5t?zZ4e!;p>_0z(>5A@%WSY6 ztKoL+2G?;Ke#dQu=il%;ek0Ud!|ws001|}vcmQsOcL7ZXpiLHFO%C8q9uQ3dDDAL@ z0RwIPz+SwF?9QbbX*Tp=KD%Cfr7vNE>aUZLEp4@h09TnnW8k zL7Qws9jXa;=qA!(nrMe@VjZp-wp~r4BQ%}1*c97RQ)Y$8LsgS5s(*qk~RZyP82$==x2q1MeZ>1KUIQi11b1!}sKHP2B@~`X0Fl zwWvL$MekuPW{+sGdt!^*lUw|r+6wpHlEUqja62u0ntO1|+Cy9R9^P{HjJCTcwY)v0 zzK4?XX_9!&tV%ShmAhw!>Jq!&tV%ShmAhwv|p;1KUPh@0#r}X6-O$?J#C- z&~e*g%-VkV&^kdI^gu`H2py*r)|igb(R*Rd=)hgE8+3#o5-!oM)WyOj-VM($TnAmH zOLoKa>ta2+EB2VK+GD$LkL%(+zAN>FuGW*fYPglwHM>Yp>*`&rOZ4on+;h5m&+Vc; zuM2v9SLwk$u@`iW9uh9mp47v_CEk;JM7R!mN{{N%;e+ilJwALjdtA>B*W8}a^TRFF za0@Mb=shR=-3tHih0DmV$seU}cfTl~-H+7||M=a1=SdH)Q6YT-UEz`+s?L^y>DN{mXy*(jU`*b#de3 zqYMA^{9m1`p8JEd_L=oF!s$P!iqzjf^>0sJI%%9(J@F5Y|A%8QkNw5b{iA<&_s-*1jkEU~b&NU)%Rc_xfJxf#0`3Z>aAZ?t709o&z6q-wWL9Z!_>! z_Xhs#gMIb)*`F)ZKgPg!elT~nUxvO1wqJ&UpT58Sfj2k&{DH@JFi+sXYuw*|-?Q8= z!(jeHzdQ$C>hQe-Pxj%wqQU%-1CM#%YaSl^z_Z@>-1o~69{XVa%;5KbF?hd!?7lbs z_xzH>c_M@T_mAB_-k%JPf3V*FTi*-a-)2zW-}4g&=hHv-!JL`F`Tq9r58`o9wtgA< zW$l+?5WoKZ4t(l^_#T{V|9FG=AHyv4naw22wIefpn@_4 zwbdc$oHhjA)`y^%#t`(~9D>r;5VUL$K|9V6)OClT3*HcP*B^pj2Sd_m9w8YbLUJHN3S@+gQxS5Wj*weSgxq5z06(eL)ija$P zge)i#vaLqQb6SMFtw+e0MuhxsM#!`kA(!n4x#L90t{WjQcoFihA0b}{5%MQIA|l9$ zh@m4QfsKeHJ|fb@h{%Ewk*7w)33^0aV@AX>J0c$CM#Rhfi1lhW|a}K zs*Z@qwGr{EJ|aFcM#K;1h#0j-#2I@;+;B$3x;rAC^hU&M{)qS_7!f}~qaqBCiYPKF z;^?Rduu+l1M@5Dh6*({}3goC5r$)tjdQ{wEM#VjLR6N6tiZ}UD@wqT6eicW>q%saK;!9&x{BDklX=_wmwnxPsXH@LEqv8c`RJ`ktim!uF@h2QL z5hQA2Xw)RIs7c~clP01j3!)}ZMa>C1YOXO+v&=@#qg>Ry%ty@!LezXGMa?NWYG#$F zSyiLvaV=_I)uZMkBWixIqUMYpH8-57S$Cu6NiS+%^P}dIAZmVs#!MI$~c&Y0PC$IJ`fn0eP9GhYW|=1(~E0U$86 zio#F{gP|ih3|%5%=stjoD}#fT52T49(gwwCTW5!-b(!9t>UgVd!Z9L!aRoG>62XJQ{L0JDKAc5_v7T#AWnXU6XYC{AoFN~Y+?!WG@c-D5DD@bNRVHs z1i3&b$ZaM;w%7!DmP?Sg_yqYvNRZ#e1euZ& zPEu^RN%54I6tDY9@oA70Kf@_;4oQi5G$l5%lz19Xi8qLp_za}PFH}lgpi|;DlM-8O zN<7P@#9Mqyd?BR7Z&FHJl2c+)Nr@dbC7#z(;vGFDzA{qc4>KiZtdzK7r^H<+CHCBu zc+pFV_xzOjCP<0D;ItX$_RTQ2Z}xNhNAR?HiAbCGLE3yvrOin?ZLTwEv%;p$V_e$2 z!l%uLLfU*UrOjzMZRV7;SyR*I2`z2z>uK|`kv2bCX>-<2o10GBY`AIjl$SQI`)TuO zkTyTV8FLQFn0Yi~HnEI(8qb(Fh>ZCRWXvyA#$2E?<~EZtTWrQW%Vo@4e8zksWXx|; znAevxW>LwQ9W`T~*D~fEJ!8HyGUg8}W3Jd4bJxk3JvU=s^fKl>KV!ZLGUhJ?34J>V z9Oms|5=Y?h-vw~^&nTFu5O{({;57z;%PayPf?B{$L^SjE%q>4g%L*1U~5@@HHQSp9Bc}2_6qKh2t=ej>7;Ohbepj#^JU)4xiJ;;oJH+{L&bQ zzgy$*vONy(IOA~F9fvP?(%Pl5^R6Ffb5>fy)-7N@75%>Y)?`<&Lq`!C#ehGBz4!H zq+SP;)K6qe!q6#+z@{V;pOR=|N@Bs3#M4vK8Z#x8*(vELHzi%>r=$nMl=M!XlCsK_ zR8^;>(wPl74w6Fe=U$h3r`(-Od@ zB?_OG7-CxDz_cV#)6zUWEp0K=(jGf4o#CdXoBXu&T$q-=O4HJ!JS`QJX{oJFOXsv{ z>9#&Cy)>q!@7A=mY)?x&&a~8Zr=<(tv~<^>mR<+b(obZ@!q6Fuz-BBGpRs6S#$v&Y z#nUs^8Z%>+*%|97H)CDqXRHUpjP*{Qv9ijHRaIxKw$4$N8tHEYe&v(^?fYwfYK)){Wr zy2;O4&xKj*t2ApZ%3)4inYG&LtaVPCwQlRP)=Oj7`fkly%l53bM@j3VgF$X^b zbMO~x4ql+=;B96OZn1OlS#A!##m~VnggN+|GzTxqb8u0agFEURd|sP_@91;zD`O7+ zVa>rS_8h$H%)vc(4!-Ek!T0<*_)Rbe|3c=eRdk*zVe`}xe4e^Q%v1NlJoT2Ir`DNy zs>04w$GCaw3O`Rh6y~Y-@;sGO=Bb)GPo2=_seOH(dTh*7AMJT+)0w9l?mTtMo2Rb( z^VHK|p8AX|PK4C1y$}|tZ_)y_ zBri}!Wr6Cb3)FdSfx4qFP_K*y>W8&Jt=J3HuCqY(+y&~Qw?N(V7pOPE0`&`7l)@af z6y~U^)y(vJ|inu9$m4T z*ot);U$JfwE7mixVtt`ktZin+YOyQUS#HI;#jjW|gca+XykZrV6|1AJSm(7B>yEx+ zy)ss;ANGp1>#SHkcg4EstyuT`73)o~V*NrfgupO_#4&^pI~^8a2v1|k8iOI_Fh_ip z!;s57hCC23&2su*%y!;q^whCDJb?(4GTSad2tH^U<75OT!A_Zj?X{)QqIc*iW zt*;_4jaB5ky^8EOt4P;fMJ{-&$X$OGc^#}GKhZTh%=OYFzDCo;8qI<=nrGJNGP_0} z<<{uS{2Kj0Sfk&`YjjpwqpRu~eOz0kuj*^`BV&#JV6V{|&Kg~J*XWbp8hy=Qqn`w8 z^e1GU#?f^eVCyu6uhR^%PIF+L7U*?)i&>}l*me30w@%;W*XifNI{j5%rwhtD-B#D> zbJ{w6TVJPN8te3Td!62K*6FUhPG9iW>AU_q{W@5uf1+8Lz_K!lXJwkm$}GsrJd>5n zY*s$XW#!9!R(>F4<#$R}uBuu2xR#Z#>RI`bk(EE#S$V_B%5^s@pY*cwH9spq39|Ah zBq!r&P6k*`rtqB15ILCxIa#1{@)nbm_t>0#hRew}`JDV*$jM*joLo?Ha$C*G=d_%B zThGZajhy`5&dEDYPVTxn`GS{|@A^6Ub&!*Pq8m1WZP+BfVbjEh&4LY^XEy9IyI~*Y zHtfs%hW$X;u-_>gc2(W5k82zDRei&LWNg?UoDI9~ZrCTi4f~qEVLu5r>`%z1jiZ}3 zz&33P-?SNG)8@dYEzq0x7PD#Zv77c8ZqvTWZ`#j=P5Z07X&01DyRB~8=d?}xw!Ue< zG&b$;_NKk#Y}#FS)4t$s+IRg;`*pBs|3q=5gyF~$97iq@IC3B0$Xf@}>p1e*z>$v*jx<~xIpyKVbstBb1~~E=%_B`LkDSKy$PFTo zJOg>;3!O){nLN^B^T=5)kKE$($O|Ele3SD?QOP46HIJOv^2i-MkGwMS$PYV@>^ga* z=jM@%ULLvU=aDx-9{GiC(Isq)K7w!2mxwL;KG>q)GFxyWAhzjeV4MEJ zY||}vn?B2J)3^9-`h~Dff0MWAqOwhQ)NT5_woTvBx9L~LHvPlirgxofy60}w7rkxz zp1)1M3AX89Xqbz{3i1)WAYUR1@_kT{-!cWc!WQIXTtU9V7vzURL4L0kyzj$L7Q>|@-HeTCn#9|}A6du7M2sXO)wZO7i%ckIW;j{VWuu^aA= zeahRhulqap(_qK`jD~qXY}Y=G@7gzrUHci>wZAaCc8lG$&vLu=Eq>R2A?(`UlraCN z?%LD*1iSVxj6g}8Kxu+NSwNsXL!f1rK#y_+ zdYLEC2LgeW_ z=nj&fz@GGAsM2xaD-Qf8`ZnK`bNnX7u4d1REC4^Ek> zyJhC2S7xsHW#&mxWMwW=J~s>)Tpsys5P$_J;a)ZMCb(yJ=h{HpRKs4Ab(ngXzzLg6)qA!-T-YKp+r zls&eloZ)K9O}?f)7i!8^rKYsinsQF7DYx~S^3td&-<_J$b!*B6ucqAfYs%}Oru@X} z4vE(tny5Q0s5?AccaCy(=Q3Y+9td^komzK}Yjx+UUUwcDb?1XycTReB=bB%4o&nD!@0>foaaKr`Kp9@FSX&E(;Cigz2Uqx8qRm8 z;dI@GbHQskcm0O*I%qgQF@PSy0eXo5=zRdtw=6)9aR9x-1N5N)(Dy1pPiO$$*8%$2 z0O&^-pr<^5UiSg|Gyv#ltcjk+o9GRqi9Q2O^h=n}YOzi9EZ0PD@lEuF&_ur}VU9~} zqUW_HdPi@fuZ$-8!)c;Dw~1c#n&>^hiM|P%=r3%KIfCyomxw*)KGrtj&h6dC@+ML@=fh1=e3Sdi-uJh6DI;Xs@ zbKUPcPlK-W8S6Qx@t$*o=sC|o&-udkoU>fdxyARK7edeZruLlkTF<$o_ncQo&-vl@ zoQq!1x##zsH$l(&g_9UfkQfU{jAu#gC`V$Kc@lddkk~tw#Exquc2y^_M+S*~a7pZ> zM`G7}5_=Mm*eC1=M&U;=hB$(8;0PwLN3b*85$q;^1bZ$V!M>_TuyfiG?6!UcdubfO zzPm@T3*Hgzu73o39UQ@a;zwDUILfl%D9dw4*~|P<_JMFT{N|CP>~ZZVdsRQmJ~EE7 zAKattN$)6o%|FUM368R#uwyKRA7dHf7|VfUtiT>)&v3`soBT2Mxp0jAsvcv{X~)>x z`Z4yUag6=$9%CTUgm`qDU|es@o(7rYbdUH^poIyj;J#80|3anfbMNtfqNx|jKr?gQbZ`%XLQUe!;! zkBpP<2k)eN%|Gcr2~N77uv0FDpK=-El*@rruE3sh&v2*QoBS#Fxp2z;s-AMsX{X%V z`YHFNamxMfo^mgEr`)^#Dfe}7%KeE`*d>C(?gI*Y%Td@Bp28jq6!u=Duzj7v9vc+) z(W9{IK7~CEDC{$S8oNQ9#-4%G*cbLRc9uJh-QrJUFND+BH}y1jUOSE5(NANqjMLZ; z_cV6VJB{7*Ph)R_)7UTk410+sefCDu_PlnMy`!IHUm0iFAMRQ9qIZ_P z=bvTY1ZUY__&N0waZbGt&Z%#?bLtiTocd5Wr@q(Dsr&jl^|5hI{pg)julwiJr@=Y( zGk#vZL7Z2gf%EDY?!0=7Kd-(J&a2OKFw`X)H9{=zS~ zmxv4QeQ?2j%Uy7<@E6>N!UgxecER1(FSw753+_knf_vS+;64p5xS#Qh?hWFi`wU!k zzi=1bTl_`$g>cdRrd@RJ=oj5r#zpsschSA)Uv%FD7u{b3jkAEpd5*>}^ECcIpz(Ja zjbGJi{Eps$Ifw>zDAC#wGl_ zcL~4iU&3Dpm++s&WsU`xIiA1FJrFK)@3hO@RsAye$hgdX@Gf)L{L9>v;4=3Kzrr!Z z6^;W}IDxyu-Q=%u&xI@8SM3USTff4+G_G*py(`>Z{|fgyxWfG;u4*i}s`30)?SXJr zd#7L39vN4)58hSnntxS$5?s|j;rkjx>}wp@*92}~yUFis&xL*MtG2J**7voS#=iF5 z+t=>;``YVZU;9a1^H^}r<{ zGx*bh!9No>@Mqu#{)M}N-{NoJFN7QTH|+*~N56r;GH&2Myc_sE{|5dhxPkv7ZgTg* zP3|p!lY1!Khbv|HRA{TBDixW)bO zZgKbgTil!A7Wa#|t=$K=wYU6j?V)g6d#~Tt9vio{kN$1#X>eQnOx)3)fjin4{*LxS zxTAg3?`W@#JK7KLj&{$#qrD04XupWN-hFV_d&}ST9twB8_xfG$v2oY?=->6826w&B z#69mBxaWQ0?|CnTd)_zwp7+YQ=l$^Sd2fPy-Y>usJkJsj1eSQGv&18VB|i8p@g!i0 zPsDwK1NRAmzfU|D?h{}2`@~D*KJneZPrMH96Fbe;qvJe}YFkFFexU8ISZ2{v-WK@JRneJk~kz zSQq%m`g7s2{#Adhzce1}-~Gq>>)^5e6Fl*G;fepwc;bHup7@`Lr#=Us`U3yde=a=r zzv@r@m&Q~7yZ_XG9X$1a0*-hqaKw9qBR&Qk@fkcLzVOe87s4~*oBoV=WjrH(_|J$p z!876)c+S5Sp7ZaG=lsXuIsX~F;J*kj_;30P{+029|KY#j-vlrCU*M(wR(PquH(u%= zgO~be@Jjz8ywblJuk;`OEB#IIO8*63`)`HU{(IxK|1o&&e+F;-FTxxDoAJi~5xnt# z2|Rdb@ZdwhgHPZs5QMkjtML|m58i^G#yjCd@J{#y-V1{8UifOf7rqDYg`dF(;}iI3 z2*O9>tMSqJ9(*)@g3o~i)ZP4=?^)d~m=0*X%$0KkR#d_xc~* z{oh;ao&W0LKfL{K6zSGY?eE_F3s$=E{vXKx)r zKLz{DpRTW;`Op71;q<2Q=hXlExkz1~`TM7q#D9D8U;p8ylmBzrgZ@u{wtC|DfBO%P z|6j@fa7_4DFOU86zx<1%8^`yL{_+3#XGi|~|N7*S^}qKo$>BdBN$B85?6b`J{K7ul z?0|3FXPx$$XS@G5b-*wm@C*BFv;#i!fM59AN784h_L*t}eqo=r)@QEv*=v1%VV}j; zXR`L$Y@zq*fM48aw)Xud2Y!?Rzp&4C>oZ>athYYDus7fr_E~VU` zzLo*Mu+Nt3GiLj&xdYzxfM3{W(e;_MeKuX6QQI5v3xE4#`YhW%({8{o?6dB=edb-C zecNZ?4fut9HeR2R+h^q+@UjnmHUoZPpRISm*B3YeU@XNU)bjt_xXhfu^RA;4`Mjr z7xwwZ2QeP-3xE5f2K>TX<-+a%3UVigG4|$-6e9%K)=s(oA%FCcM|#L7J>-=h`qvJ5ri1q3 zH}7=Ne*EU44%(LkcKLu`eBk{Xv`4@Bs)P3GH-B}|p8e*t4%)jvIrP&V@>~b)xZyxNReLY~85BS9gzPv-8?4W)A&6^#x-@kdZhkV*Wd;i{o`-m?;-zp z(4YS10}uM!0}o~2J9)?x9`w%#?D9Tye9(XY<`ED2_usr?IP@4Ip^p#^y@D77!Fb3Z zB0}yE2w6iEL=MvsIl@3>l!Zu`gUC1!kx2m}(-I^O%aAytKw?ydL|B8wxDJU)0}|5~ zWDeVqIpRQO)P+pggUq-OnaKb$)9?@!L584FbO;*5hM*We1SNvmV-1-Rd&nGhhRiW{ z$c%YIX2KsbQ^Am#L5ATGbQq3e!!V2w!*OC5PJ&@LO%GEe%rF&YhbfpFrsDiCl@x}l zv^*@0D8o`z9hP8iSc>bzQqmZf()O@5;tX3+ci4ixVJq$rTghP9N+S_?6pg@RSOkvY z5ja6a;1r0!89G9ZG7)NwjZiTzLM8YJl@cOUMvh3MN<F^1sUTuy&=DkxjUX^Sg2agtBnd{4G&4d+*%2D%M(8*{LMMe0I<1Vz zQFTOywGlb4kH|@5L{2*+cGMlQVQ<8a`y+NT7_rmnC^CkPA~AdvNf4t*3XCEdW|SUd zN9hH`lEvm%zsFF0IO4^M&uordWe$+_@Q74U!p)q_6 zO%P*f3XGu{c8rN}V@!e{V^YExlTpW%m^P*)^f4u6j42s+%!zqpPQo8^Qo)#$!C@>; zz*rK%Sek>`I1jT)0cO)0tj2X%O&YM8_Fy;e!)`Kw-83G<5=0D3ff$zIVr+tsu_+A+F)YC!IPlFVZ5mJ1{Na>j%97ZM{LBqn@F919>Z1BdJ{B;#}C8*W&f2>DjM0Ci z!&Iol$Uui8OBoVFc#s4u>?PijS0h8MjBROc~}kgs3x`H z@OlobQDaz5Tf=J19#%)4VKwCrs}XNlP58s=STL++;0OyN5q1QPuptYKjS~?z3Lp+juz89sevxX`nr@xZCDw# zliH{q*GKKBF=~gtTRRqNGd0lVSYMZLlz`DFk;J1!97KsU6(wR!lt^(=BEd(AF(FE1 zq^J%nQ9Y?e^|%q$(^gcEIZ-|3MfHRq)yIOUo`J`B7#-vPKiNmJ1}gi z>9{hQDViWC!ida$a7o7|^;SIIDQ=DXbA`#@1Kt@qaQw%YCGZGG$1&uV~r zTs5eVRZ~q(k8w3My=T|d)V9>r^lh(c>$Rq)t>?O$wmutc+InoRY3seUrmc2+O#?!V<{le+Z|$+Mc6*PFee1$J z9oKU}@7X;E)VA~-(6>Fz)y+NE^xoQYP3`ucYx>sJ&hFJvJG;-gFkjnixAt0ByS2~e zY`)g@8P}_>cT2CjzUz9m_u1U5z4!KB?R^`1kL%OYdz|L&=04kdZ|>XDr=jomKI=4p zN9FqE>T`9u$+-c!(Yc0Pb8cL2woZl3_v&RjXY}&j`*WV}N}b`$xxJj# z%lW*V$;&ysPwMPl&fDdTUC!0zEM3me<;+~p$>nTZ&co#lT+Y4atXs~vZ#&Y9(GSN<*ZoFhviII&Vl9ZSI&Foj91Qe z`dQ;|8Xx`oj`OB2Zg{=%6UXk*NeVXE4=t$>PO3bdx_`yjQa5y&dOS zz4ONb$=c;Rbd>f{Mw*L+trhLN}lCPe+ zLyvjx8`mXYooDAtS#G@BtzS*{TiJQG964IcH@}g%>pIVvBUk(R4c|_-f2H%RIdZm# zulQba&X+E7QMVa!(Ot>R70sD`^V*p|Ne0i}q2sI`a(|K@zeCU2r~E*&_g;1`mF4ya z{pJ_RxUHRM(~;wS;p>klOMlR*0g&tU82{_!x*2maz30Myo0B!W?$CWMO`l61Pdm@9 zBL{qI+Dl38`7<&d=-%94l0|QJo@GZ)ctL+RI)4v$HZ?Y2}rD-9vA6YAxiLYxmj7{o?R3oFQRa%#mw%ad%B0 zZQ2YuXL;mqZq>D?xo~cV%RRWeyYz>rWcpLDWA<{bkDQe0P&=*P$NhM7Q>I7#_t1Ua z!7mc!nXBzc1K5IVnsH<@=a8E>ijeCWACezt; zFWEiSd0vR!Yus}|x3GJWdot>8+^gKPQHSGR=AMpv9QQi+e9%Q~E-)veKF3^P&IBFB z<`Q!%>UGRD=3F>;#O5M%GU|8CRpxBe@tDiZ>8R&1*O~KC*JCYUO^Es)YXxgY)cIIT zSW|*NWNQs;PSpKai&&GQ{>NIyniX^=TgzC}q8`Xv$C?*)LDoXn#HbIlRi25RX1$#!&;cPEq zPlXGbq?0Hd_WG`e-jQS*dC3|Mj5p6GJ zPYwE_?X~Q=L3gyhm_0e_m+aN-*-^)2FK17WdM0~4dwwqHn&IE~M}0Gl=bSb>$0a-- z=e61SF6{k!zU^vCue!X7KaWfq>yr1m+nDBnBmX;dRa6LMrJ{qoih*Y(bH)9`s@=h?9L>+?#Zjv7AC?ED+{etq6qooToqGJQ4NFKN_S!~K+< zuM_UKOm_|UV;c2W_I};3Y1CoE{cLARa(+*^-_xkehWU`4_ru<=`I4Oj6y_7>&Dr@t zVZLSO2C?^RKBiH>4f8dPI&PTH+4)0ZzGu2_SP!!Eio$x4onsW%lQinR?EPAAGTk?< zN7;Eu?EPA=vU8Hcdd7Knc776jzt+1n>cU|?%+6a1>!qD>$vI46J>|SRJD-WYU+Zml zZWDXI)??1UBL?v7{aUYm)RDt_p6SV9z4uX94*NlNUR2mGGMzc>C)xQ@?ETtrGTk}s zN7;E)VZX}GsS5j9c79dZ@3MO6upegnG<(1H%j_Jiu%G&*Jj7Gk`D7v9%5?J(k7ehXg?KH~(L+4vqn;k(y-ZgR@nCjd zT8J03bJRjSnd$8z-td2bkeyc-@&zAt{*X^(dVk0_GTlGqBiVU) zAz$&41B84g;{hSx$+$qshqCkbLcWxp!x!?Yj2DD_%SUby^0DkZzmTtG93kX$8BYlL zUe?DTD`mj$p_qGu{yL&FtL4kdJ2P5r%v<;}9XA&CV|j`EJG~LOz`FiI6Y* z$SFcTo$-p0Z)e;hH5?93$lO8P5p$zK{8T^fN>sLwMfIw-Egb(Wemo3DK7j z{Rq*A5d8;%`(%EDn6HNWD)SXYKSA^nME^ka4Me{{^a(_NK=cK~JT2y9k^e{TA9;V| z{E_bmu9xLGF`tQfOUzGV9uo77m{-L7A?67&ABb^(jPGL{ALI2Hm&f=!#@R8Rj&XC0 zk7FDhcWE&P5KhlR(_;;QicS)3GJ zUl#Yo_$Kn^$eCkY68nBco*d6njQlvp2ay*?P8|33xPQm<9^*NXk^hFzFWW~W=Z*Vf zXh5+|F)OGb-djuXF} zoZBG9c0-|A%(6wyQsQC0O{`^=xJ$cO%j(>y{F>aT;@aG(s&%MJ|FkwtS6vXN`Dgjd*99I7?G;ZN8~$UB0QjK|kA=Zxi!u z6Z32n^K27q*;w3`-&nOhzp<=mF60WiQolk!@s@sKpDRiO3Zn~y3!_U7h0)cc3c0GL z!YX}dl^EzMG0+uNvkRLF&4o>+mcpj$6=J4sg?`0Vg??4-g??qR(9)X1=;GSK=&E&v z(d7+=nyQV3RmDvOag4&M@|Hqd)z-qM;D)uXnF1DA(72B&P7gv;L7gv>=iKcfs?m8Y?N!ZHZQ?mw ztJ|tpRkv3S5NjP!E!J9ItFPBp%`R^cr`=f9UcE`*+g!D#yrrtHytPX2QUBjwwY4m^ zQ{7PATs^81S5$}Qz> z`q!57I{m$-ytceqe{a;kx9aa2&8dE3A$6Kd19Gc#gT+G{a$7XdR*8pf()?PRYsqcP zwdXeG*5$V5YUDZSr#V_D)>*IlHb8T2u;yHY=3AJbrO}$Bo%3@=ezxXXvlwPeZbi9G z^LUl!bGznpn448=H9wh~8#RYFX)bT>^d2xTt28f*%*&d5eW_o*zEGFfeUY!P8l0~$ zHstHeP5ITO(fQSdae3Vn`PKQ^`PEg;`PIdi{OWRBesXD5esZBbKe>8Mesa~?{N&=g z{N(b+{Fc(D{FcJz{Fdsi`7Kr3@>`1A^STehoExCIGgxz|LGwp*tu$Kmjkz{kbEa8y zr$zIoP4lr`^Kp&lmF8A)U14;2qvqgd%|Xqls%@H6%%_^-V9le!nnQ!D8j6E8ch+j& ztgW71TwB##Tw81@t}V9}o5e7jHBXu~N18Q1wv{#)w^eT~ZquCDR<6_iJfKul)ljM_ zH)#%x)4e=f_kN4+;r3FK?scs#rKa-c(nj6aT1QG7%iPNix*x~szMWmQrm98vVY}|> zb-F({>)z!)6!X`8*IwPCduLtsINd*+b)T%${gBJ|(>+nAwX$CK#Q?3LgLQ8-Xsv9@ z)#pd+9vPR@wa!h>H|suW$!*b^+b`dqTcx#jbbhVwnRU5MV%UT8n{#XRIX36F=eFhR z@@@G6`KEkBeq(-Ieoek5zcs%uzd4_?KPxi7YUt;c`A=g!7vs1Xzs0yM_DPFzT8z(P zTo&W87>C99E5=+3bSw!&Ilt2P!k&e4{n%FAmfNU%a$~V3-%oq}DBYW*3-#LD2jo|=*XthLRA|cgD~`*LE>6y`(z>#$ z*qq;_dv;TCg*+E+`MSa?`77G<;|i-4AFRo@7uIT@*Zo}BpvT&nuhSksy0|$%uDC^G zw&vTl$B)xGv$r&(7!hp2C$zOHy36Xx9DeE3v0BWw`={`TC6G7 z7yA`Q73+$Vivx;n#liZ!q1aw*(%<8X%|)$4T7$OfC##FAiW~HkE&9&J;=1Bi{dY@o zvwjxu&)42>bx-$wbi|MJ_al8zJnA(4{lH^48lxq5+gbYU;IVHXb>zFP?%cKcx`+L$i6;Py9K-CpCrJ@Tb(t!~b% zca8k+>#gqVm#xqA;&p#%b+>=*HzTWFX?05vesScdUT$>*?|a=CFu7&!k7C8I6&vq* zRt$J(&&J`;w7PXm`(^s`ubymmZ9VsHeDSeX_xKr~Xng#UR`>7rgEF1^VBhNAIbc}h zH}7k8znM3(@ztNSy6f&aCeyQf-_h#sI{Ng+mu_!$ecH}yyzbUkcghnJGTpo7##T3V z{OrabtoV)qUmND>5DZwP~&H zf@7|2{L92vchB@yjsC1w_sSL5XL|da$LseVyQ%R^*XsWJ+RcsE4sUf&_E~KVo80`$ z19kn!+}?O%|5kV3qVF}nylbob)D3rJ`u%sRTHXE6+}-%-JImd(+kevd$Um36=XU>@ zF>iAHQ(jo^uASf;pMGY!JM!`e8;3rz-2LL_pJzOv^}glqisv3{oU?YhyZ7BE8VBCK z+-=-~7jnFSN}NZ}|PojSb_MyRW_V zO5+2k>F?eDYD^t1;{4%a?dSZXap9+yyA4a;Y&^gJa(BpA{?i!q#s{mHyDx8gx3S@^ zW$x3LQ`rTF*DT|;S~WbX5qyQSClPk#91-uD<1Rcg@c~nGE^T5IC=>dl&f2qFQJ$%pM<{>~E8vD{xH~R5m$*I3u>RvmiA*uIE z-Q1Us%=ppRuPt>Se`{oN_mxXs^7$lrb@5VnV!u%tXL{wdrLKIyvB?jPTIznb_PC^J zz*2YWQO9RIs!x8Ys~de{GW>6sxznFLDH-v*%iOH#rJUAga z|DTt-Jx)F^x$e13-I}M)&v@DAesrmu`0|wG*soveJ~ww-@`sg|x+~tCZXO7IJxc#lim^G#PI6aId&d$#A5$-_@y>>hah%8WPef6K*g^ysUSJy%}rwtwvEPSSklLU+qfw+?(`_05 zz2=RJ+$T@{ZgR`7E^_^A*CbzDdy#u@;~Mj>hh{Z8EE_ z*yX_A@PS$;4f%|RyJ?4o)%l_PP3*4Xk{WMuyzra28 z_)nAj-kI-Kw%wcY?(^=M@9utoU9$a4^W8r8|16nz;e0p$;`_`)gEs!xedoKMzIK1| z#yj)eUEf`w{N|Z??h8{pGJZbr+IjA;&!ow%v*x)4U-roxN6&M=Ic0-+ZqVBI|My(i z^uPm2dDC2X*3t))pMP(zJMM^wG9Lf*#JO(cnunA9hs|{pr~W({-FL40^`4y`9klzS z9=Om={o*6Z+c#b4EK$4-6grs+AKW#=YQft*Kgr3lWX3-!2R&x$C4YKy1*Us z(qrc7fd!2GoV-0_|5x(6@fWyPYoAEQ9Hze?dLr`+JhNqvyZZ1=$;i(Q}Xy1 z=eX~G>sRIhf-M|2a*k{I*i*?5cbem7ZG0*z|7EtD-uiUrKRD%v+3wxfev=$|;cR!) zw||=ykDl#z9{)_{Q#kmwS?=4v*qmJXz%2K(%YT6^95u@g`R4DF zn?63vJuvnU$){hP=?3-a^ccZD246qZeQVJllZ$4}bl)5BeDcMkX1Z&idp`3=od41c z_xkZKB>nE4;VyXlg=F>BGu*>>y_oqZ&Kxqs^{IO~xwJIHz4zG5$8~nHAnYB~hiWmQu`8*C7E4$+He^2(f*`n`oW#vDLhm+etfd~!>a!ze|dS5+c;`_vim)g+!wcPH%}ETYNs)i+-;}7 zmHfVblKanlZzZ4k`}uCaAHJRWRc2jtzAN>5H@SWM`R@Mv-c24FaK1Zf&U@y;f^B{E z;q%--fBt@Q>X*-R)gyB5g-PeR_gCdI|I4@En&^I#}H}8$2yY!F=?y9DeTe5w;yY8Ev z9xvEik5%K{)RU^*>IviBA*-w0t_O~HFaE14tB1R}<6PJ0)@pZW+qv$Fe^sp5yNQM^E?N$Io_q9bcRIhYFL)t!?Z1?Cf zz1;7%o#mdnvD0$~Ydqw$XSp9Iz1??CI?H|L%e~#(JDuek{@mNe{P%=!pXp{?+s7Ss z;hFCDTl%=Zho9+=8rtbmgI%8W;8?fr*}m?PtH!$D4D9FX&KT?du%ch)Z#wt+G48tu ze9WDA`xtlOr5|&3^TxQ{AODzn+F+q)zIBEhe9=zs!3}4)uRXMr>v!cD?)8s%dfm{r zPulqmH~PMv-SFRyc9VMT;)=J7cH_?P^uWPZk2-j?D-}NO*8Kf+ckkGbyEpGS-JN+` zXDuc*OrLV6yAzsrb-R^LcemWMt9yClY3}(~cg=iSdyP5G)m^)ryK2|d+)jVo&Hd)t zQ{BG?)n$IJe$!5Mi#FA{cMmw#_1$-Ot?{S0uUypWv4j2AEIh@XwbLH1<%m<<^;7q7 zk8D5Lt-E`V%pcaH^<;Pdm_6NFN1yC&`qrNA@zTj|(i?l4Cl8jq^VKK0Z(X;SyYiHi zT>lsLa)0P^l3O`=@62y@(Df&}>L>Sh`<`{8+i#zJ+*`Yz=nk0I>EVM-pZ2vT_otry z-7hCJxm(Wd?+)C%$sN6>v(}Uvua&o);Ewuqz5D#+6WsOJ*SlH!p5T7{LcMwZVBJrA z>v&had|!9wwBy~|kL~O3|HSd`ncerx{BQ%m^J#bNPxf<1PXDxfs_+SS!2X|hCy(y* z2*S>9`}T3}^;bXPhEF@r?a{Em`@w$4xkEnR=^eyF*l_EyuGIgN?u^ODy2md3q&ubm zvF?&}pUixCTW>zbtvurZch!Vr+)Lj$z}4lee__Ztp#C#@Ln9$9gi zi~h;y|2fRv)$efEdgm~A*|@`9Y1S}z(CSXlC0>hlzdOPWJ#?sh<;zF7FI_y;y?yc# z?#Yg!nIDs{`5r%G3}gA7=-cG6cuXFf=is?`&RDO^YvDEV+IWq;R$g=Tf%0B>PrNtY zBkz^>9Jwghf@{LH;TmzRxMslzV%L&u%C+ShbFI1Nv3{D*g3pA{hR=x4iq9=gy}~^cd?uaulI|()E$%VyHSW1s&&|EaJ;}YvJ<7ex zJsW+r+{@h4+}qsa-0R%)krOi)m=nwm<_L3zITL-k%q8X&bBj5~Tw~5f|1NWpImz5) zjxtx7v(e|vTxL!)x0&P2b>@83OIZt86IdHqBUmd~Goo*pwS+Z=wS_f?wT3k(*1NM7 zu_m!Lu|~00v1UadGHV%Y8fzPC9BUnGUgYMig{+CJjjWNZm8_Z3*UVbVn#$VB8p~SC znj7oyS&LbdS({m-S*uyIqfeT(oHd=boi(1do;5$}#_R>`3G5B*5$qN08PRvmUc#Qj z-ohTkUc;Uf`vI^Qu_v)Nu}862v1dgeH+va-8haai9D5ymUi1;L7qTa^H?l{vSF&dY zACc{)?5XUn?6K^%?76W&0edlfGJ7+7GWz6Jiu%6=Ig?gC~|DrXjW=#v#@r=83)v zVj*H8Vk2TCVkKgx;DfSQikOPniWrMnilcW{iOGr0iP4GG z-%!jR>l}#XiRp>$iSdc`iTNW>Ar~MgAU7aKAXgw~h;666%*7UUS@8sr?Y-v+q| zISIK5ISRQ7IZLd=AeSMhA-5sNA=e@2iM|_hA#x&eBXT5iC32=%*Fi2tPDO4-jzz9T z&K3KAkc*L%k(-gDk*krj1>c(Ga^!U6cI0^EdgOeOE0GJ56OtQ}Ba$nUGse0Ta!GPZ za!Ybda!qp1*pGx(~{egf#z{= z==*{ef+m7Cf<}T?f@TuyiqKNfRM1w?SkPL~Tw?ziv=}rQv>7xSv>G&<;2Sh82TccU z2aN}<2hAsPMzkO_A+#YhBD5kjqgeNZmV~B+wuHun)`aF1``MsHp-G`lp;4h#p;-lA zqG?%ZT4-BnTxeZrUcs+uS{Rxb+87!cS{a&Itjj`6>n}|WZ4HeLtqsjB_SZp+Lz6?B zL!(2hL$ix@UTAq}dT4uSd}w`Wev!AL1)>R}4WbdE6`~o&x-qmwG)1&UG)A;WG{@NQ z2Q3m!5^WNV60H)=GS;D?Wuj@KZK83ab)tDj-yT{hnkd>R8Yx;SnrWtAwS%RA4JG7FY|+CHAj^#lU1>GcX!h4a_FiX~J?~I1*3vh!K`8(DJ%=7 z1>1sg!Mb2x(dP;agNeb$U}Uf|m|3h#g{2u&d+QZrY_K+%TkP)zi-XC*=3sQNI+$Io zbA{!>^k921K3HF?m|yf`zye`{ut69htPo}x>tBZZa1Ok-UyEET2-TZOU0T4AoS{~0V6 zCJUQ|(ZXt5#B5`oFf13Q3)_Y9!g^u8!KYv>7$yuGh7rSxVaBoU7?%9Fm@;e`#tdtQ zImdo%uxOYxY#K%ltA<&}I%ZflOdGZhN0%4i+t~S`PTD%dj9p)aOw4|=k@6It>^XW^{(gj>h-UuwoC74J?}^F zZ$0l%?{_`#SMT3yzH~j-b3Jr@)^mMyz1DNRbp6&-3#RMY!S&Sj?cn`@MtvUH8A$tZ6=UFdsBOI+!1tFCEMm&7Tfx*)*Rzm`|Et9n3Gyw+`l; z=AYHLX+Cx^A2mNan4g-j9n4qF-wtZuG@m<|&zj#I%x}&24(2tP4$q1MNg^-=3(%6h5wGo=uJh*s`WKxebsuK zvfgU_wHiIG$0_Tv*5{P96Q`U2>?`&USQuZrq0;vtu zewMPIX@5)E-?ZPQ?04G#%-gR0Fl9f~{+O~qYQId`FSUQB)DmhxP1#SizozW3+HX_# zTkXGAW2pT&Wk1&boU%V_zfRe&sX3(fQ2Tkxey;sJWq;RxpR(U;|F@b%#RDnvfZ~Ic z_(1VOO1z->A*EJP@kB~Iq4**tzEHf85^pH}uo_0iBPsES;**s4MC?B$UQzs#QroC_ zCMBLxe3KI2DBeklcNG7amtXNvN<5_aC?!5pyp$3zDSk?+g;YG15>F|7Xr ziodKzQt?;i5C?=rqo(0o=k}+6nkEX<{(k1IY;iO&_Ur^M@u->vpj@q9`=ulPPCzE`}T67MVix0+Dp11b4{@`IH8 zK>0#SzM%XerB+n=L`puP{30d4P`;6pZz%t;8dBvWDfx)%7#DfzAP-IRP+`LET?Dj!bChm{|vYI3Cqr04;izf%JovT3zW0DSCqRg%o{3dP9odApOB=c%?_A=n>KBXD@EUu-j$+vN&m8%W$9rldYJUF6n#v3S&CjJ{Vb)HS$bNEo+f=QMPHNNmZG;w zf3q5A>2WD~ob3b>qp7g#Hy-)g|)kI4VOwj|S52omY z(hF1cLg|MowbIfPQ}jgXiz)h|^u`puQTn6RP)mD^v7J>6a(?6o|>YkN?-NptI}INdaLwT zPmQ+pSdShneb%GTO0V_kwbX1=yDdG}qvuNB_2|3Odp&xu^k1v#mLBZUgQX99^kK1o zk6uiTH?`iZG zQ>!kX;Nc143m(28-r(!R8^j;1hFv_u!z08eJbXgz-@_}!FFdvF;u#*EA->_^8{!=v z-XZ>BHSgjf9v&h-;^8CWB_3WPe&VTx7fArBuCFY@pr@gq;Iy?By`Cy6h4 z_>y>&hc}5oSq;8;l!r%&PkH#1c$J4&iC=kY^To3~JWG7b!?(n{JiJT%%WC$;!#q4p ze9Xhg#LGOqO#IAK%P*eh;c4P)9=;~t=HYGPZ&u?k9_Qh4;&UE8Ctl~_b>erP+JEsp z56=_d^YA_KJ`e8`|FfO|;(;C>C_d=ngW`oAUMPO(=@lTJ=;4Xtiypox-ss_t;*Zut zKs?gJBgH2@d{Vs9!z<}2KyLx@Ob^c#-}LZJ@lFr#6#ukZN%2q*4;3Hv@KNzn4=)uz z_4FbTPxbIr@l_9B6>s(MR`FNsQ6L`c;j!Yg9zHAf@9_Z8vw+?O;<+B4E57UDyW+hb z-YfoVJq^TzJv>-^*u#g#i#@!U9tZR~5Ks2-WbtJWUlwon@MiI6>wzF1?cvel(;hx8 z_V3}<^hBUHf_S!vXNzxp__lbrhj)vATh9dXa1Rd`ANTNa@p2C@7eDv(QV>t~@O1HY z4__B=_waV{caH}^Jl@0O#pgYIUcBDJ>&5Rqy%)suJv?80-^2IC`#rp0^&!@iL0@}3 z0Q#B71E8@U4}gBx;{niPc{~7mY>x*(&*kv|=(#-}0KFEE2SBgQ;{niX^>_gE+C3fs zy%&!MK<~}t0nmH(cmPxvYds%yEj%6oT^o-FK-bFS0noMccmQ-QJ$?#ZTaO1o*V^L& zP=6@v5uwk*;{niT{JOH}aJRSh`$FLq0x)(hj0NtA&4}k7fj|V{auEztQ zd)eaw(7o;P0O(%#cmP!QZ9OYA7d##S%?*zSKy$_80nps>cmOn)JRSheEsqC4bIs!c z$h~;1^|;Vn^mqU?H$5Hz%~g*FKy%mQ0nl9bcmOoFJstqfb&m%?^+MJYLu-M@1E96R z;{niG;qd@y?eKU2w3c{009so-9ssR19uI)}XIT#otwkOWfYv6D2S96;#{;0X%i{si zTITTpXl?U&0JPS5JOHYj_ILoa7J57YS{pqc0IiiC4}jKAj|V_&smBALwbkPR&|2&9 z0H{Bg_2|%A?C}6-ZT5Hov{rjO09v~}9ssT79uI)lc8>=@YrV$oK2S9s)#{;0f z!Q%nYUg7ZoXz%cN0JN8QJOJ8TJRSh;H69Ou`hQsu5bZ@C4}kV2j|V_|mB$01z02bP z&|c>80BCRXcmTB5c{~8BBe$L*+6z4%0PT$)4}kVcj|V_|r^f@Jz0~8U)86Xw0BEoE z=C`XGYduD^7kfMa+M7Kd0PWQt4}kV=j|V_|xyJ*bz1`yh&|dHH0BG;GnsUVg9uI(G z1CIwlv4Y0~pxD9V0Z=UA@c<~c@OS_eYj`{W>R)C(OcaZFJOGMKJRShWDjpAjVi%7G zK(UO+1EAQ(;{i~tHW~02CW}JOGN7JRShWP96_{VkwWGQn8gce`UwH z9uI)}?^ur%#bO>0fMPR`2SBl!#{;0)&Eo-3Ea&laDz@`@02J$aJOHYrvz{u71w9@B z#fBaafMP|D2SBl-#{-~P(&GV8Z0Yd;DAx3N02FICu9uI(GQ;!Egv8u-dpguxg zF>In(*5hYYZ0qp=DAx6O0Muu|;{i}C?C}67HuiV`6f1i?0E(SG9stGC9uI(GYmWy& zv9`wpK(BQ?0E)#u9stGW9uI(Gb#ESk>M0%%fMR)%2SBmC#{-~P-{S#LJ)!l4Q7+)| z04O)`cmR|ucsu~g9XuWYdLLLu*awCriK)I5~1EAc=;{i}EfdKQe56HqJOI)rJRSgP6&??O zv0gyK0@c>9G@pu5Fop?L|(o#Gg0BI{8 z4}i25j|YIW0Pp}vi}82>q|GR9H}>!G07$#>cmSm3cBc@^}E$r^I@1NDK4S!$=$RcmSl8d1+?U&v-ll{nsw?cmSlW zc{~8p+B_Zr&N{#YAT7@00gyK5@c>Ax^LPNH-FZ9!((*hW0BL(34}i2jj|V{Y#?})_ zTA;@RAZ^g&0gzVc@c^iAoW}zoEz#ovkhbXY07z@}cmSk5S`Q^@ksc3#v`LQ#Kw728 z10e0v;{lMC>G1$a+w^z*6Q&9sQ;bE10XHd;{lL1>+t|ctMzyQq}_Tv0Mc?j^<2_+JstpQy&eyM>aMM) zleA!u2SD1e#{(d(*y90^cI@#0NK5v30HiH@JOI*~Jstq{f3zM@(xN>c0BO@64}i34 zj|V{7wZ{V>E!*P(khbmd07&chcmUK_$9hId3-@>cq>Xz#0Mg1m9sp_Q9uI)DbWc5< zv~`aMKw7)U1EBtr)?-RqyvG9|ZQkPnkXG;U07$#{cmSm3dprQr_B|c|Y5g7#fa=e! zCzV)$#{(cX;PC*66?i-VVh0`%fLMaZ10c5G@c@W5csu~=Uuiw8#3DQ%0I>;=2SBXC z;{g!6@OS{kGCUptu?>$0K&->#0Z<v<&>;_(28jd(l&VkI6AfY^!010a^-@c@Xe zcsu}NEglbm`eRy;EU_4m2S9Abi_yUTJstqD8;=J-EXU&k5Zm#10K|Gc9st$hTTd;q zAdd$?Y{=sQ5G(R{0K|?w9sscRYKYw~yi)F0A%aEV2EJOE--9uI(6mB#}h zcIEK^h-G;^0AgDn4}e&g#{(etWj(vZ!aN=Tu`zG;vBQ^pJOE;69uI(6n#TjsFkXMZ z^$P6Y;{j0rO6&0@7U%H*h|PIC0Ah6>4}khydOQGPc^(gd*q+A&(0bo;j|V{P&wBQV z1$sOHVuKzJfLNgyGi($)^mqWo5meo<>G1%FO?o^4S032v z@c@WjdOQGPnH~>-*rvw=AlB*e0I2Vi^&Arm^>_fpMm-(?u~Lr*K+t}H<$62-V!Iv>K<_(RJstq{Ww4%R zV!@tzaIs;J2SBXY;{gym_ILoql06=P7awc&cmTwjJstqDXX}9`7VYr>h)sJu0Akf1 z4}jRU#{(di?ePGJZF@WbV%;7Ofcjur&or@cj|V_(+~WZdEBAN+#Lhh)0I_tB2jHab ztsW16Si8pqAogxO*2Lnyc>vyR_0;E!)q6YuV)q^ofLOlA10c5V@c@YRdprQD|Myq` z!oTkeKZpG@{{Ha$uzw!!ezAWZANJ4l!Tx!E*gvla_Rs5s{quTZ|Ga+KKkojbf94bHpZNv*XTHJy znSZc<<|FK%`3d`HzIKH93;Sn2!~U7yuz%(|?4S7$`)56X{j)y6{#h?z|EwRdf7TP& zKkEzZpY;az&-w%VXFci&>l5ss^$PaS`UU%EJ%jzTzQO)k?_mF|f3Sbn!;Y{%!v0w= zVgIb3uz%K5*gxwl?4R`(_Rsp8hV>Zs&-x7eXT65~vwp+=Sp$$D z{Q&mQ{s8-DzkvO-f586PPtvfz!2a29VE^ntuz&WWH0)2XfA%ZbKl>N#pZyH>&;ADc zXTO8}v;V>V*$-j=?2oX2_Dk45`zP$5{S@}k{tEkNzlHs?|HA&+k757p&#-^?YuG>g zH|(GN9QM!t4*O@nhyAnv!~Tf}VE@Diuz%tO*gx?D?4Ni7_D_5P`zPLj{S$w{{)tCm z|HLP-f8rI`Kk*CfpLhoLPkaOWC*Fbm6aT>eiHBhS#7D4y;w9KW@e}NycnbFK@c@K) z3-(X^1^Xu+gZ&eq!TyQYVE@E#uz%t?*gx?d?4NiK_D}o=`zIcR{SzO;{)rc1|HO~5 zf8t5lKk+5(pLi4YPy7k{Cmx0U6Q9EViC1C&#ILY_;#t@~@h$A1co+6h{F{b&81_$m z4ErZuhW!&i!~Th}!T!moVE^P-uz&I`*gyFf?4NuL_D_BW z`zK$6{gc1J{>kTH|KxYDfAT%pKlvZ*pL`JZPkspdCtrm9lRv`#$tPj|XJP;3x3GWm-8AICuz&L5G~~yyfAVG6KlwB4pL`nj zPks&iC*OwslYhhh$;V;;-~seh>R6--rE^|HJ;#17QE?1F(Pe z0@y$L0qh?=0rro+0Q*O8fc>LC!2Z!AVE^b7Y0xWR|L7O6fAkF4Kl%pjAH4(ikNyGs zM-PGhqmRJ;(Mw?e=qIp$^c2`X`U>nHy#@A<{sQ|)kAeN8&%plCYheHAH?V*79N0hl z4(uPj2lkKt1N%o0g8icp!T!;UVE^bxuz&O<*gyIb>>s@e_K*Gq`$vz0{i9F8{?V&o z|L9k+fAlQaKl&EzAH56qkNySwM-PMjqmRM<(aT`}=x4Bh^fcH%`WoyXy$$w{{s#L; zkAwZA&%yrD>tO%rcd&o-JlH?_9_$~z5B87#2m414g#Dur!v4_>s@m_K*Gu`$vz2{i9F9{?RL8|LB*nfAmb)Kl&!@AH5UykNye!M-PSlqmRP=(Mw_f z=%=uM^wc!yt3K$huz&Pd*gtwK>>qs=_K#i*`$xZp{iEl?{?T_~|LDE2fAnA2KYB3i zAAK11k6sM>M?Z%BqbI}u(U)QW=*{$hM}LO>qesL3(Whbm=+&@)^lR8ZdN%AIeH-?V z-VOUl|Azgehr|BS$6^2I<*z56^=A!?$4n@GjUt{0sIE4}<-~$6){PGT1-- z4E7ICgZ;zTVE^zo*gyOY_79JP{ln*A|L{84Kl~2%56^@B!}nnS@IKf-{15gI4}|^0 z2Vwv4LfAk25cUsGg#E)8VgK+(*gyOc_79JQ{lh0=|L{uKKl~E*56^`C!#837@J`r2 z{1f&M4~6~1M`8c)QrJKI6!s5Kh5f@`ppIP4!j4*Q3f!~Wstuzz?u>>s`k`-iu~{^9Sie|S9X zA3hKJhu6dY;rFnAcs}eOz7P9{_rw0}|G^JnKVwYr3)t`S7{O0qkIi!gzkxkBuOavm z?6vV4gI~d3JMSU*8SK6B9(k|4=iq;^Yr!=M{s_BPT(jVxuxrUR4gLzd)?D-8zp&4O z&m{OW?6cxC3;qrJEcr}>zr#LjKJ(!JuzP`fBKSk>Ug4ez{*lgmN%vInm)O0=Js12Z zb}w>I27ij(tK74}zhd_?_jK^L*uBm@AN(&i7nl>lA7gWcITQRdHkX)F!Czx@jX4+m zH#QfUlgv%#Xz=UU++_|2Kab6A=6LY?*xY9g2!0@28(1S)D_Apvf5_Gn)|B8cvbBaa zC-{$SEn-b#ZDNfIekEJGSi^#!$<{X3xZroPwU0G0_@QiVWQ`1dDO)>PLxZ2n)>hV7 z)>_uw;J>o9m^C^0vuv$q%?|!8TgzF~gTKqxde;2l|FXS+Jt6qRY_DL?VDDfL34Su$ zTi9cQ-^}(N_MqTLv%QHuD)`lG?_v)Nem2|N*yDoV&GtU_z~G0oy^%dK_~mTxWDgB~ zI@?>>V}sw$_Fnej;K#GQnLRrA^=$8E4-bAm+uPaWgWu2geqw;&2ejCL7$NutEp{M= z2!29~Er>CK-_T+YVvyiRwAh3gg;<4{CHNODmLaAI{zi*+h`V+D{InKZ6JrOzt;OEN;K7e;u{kk%@auNQ?uy}qpVwl0V*KFuwb-8=AozhT zHy}p{eqqZU$RUEC*m4VUjNmu6+=Cn>_>nC)Ax8;*Wy@X2VS=C8avO4-;CHs%ha4#Q zp)EHeM+$yv%bm!ff}h%QD{`#hx3=7i9E@CyoQ&Lz94+{@Eq5b_3x00P?a1+h-`jFO za=_pRx7?5%G5EzTcO-`lesaq#$uWc9+;UHH(BMb6+>{(O_|+|UC5H`ucFS$aaf9F8 za$j;_a$(DfJN@yNE0Z$^|2*v9a_Zo(w_KZ?JNWM{7bhnV{(Q^T$=QQ{-*S0!`rz-k zT%Vjj`2S4{Kobb{0j3q88K51YA%uDY(-zPeLcM`$4`>jf9>KH;G>TBKVA=&5MyO|i z{hP*t)`8{`>K{xCK@$n}5vG-(nS}ZY(^Ak>LVbm4Eod&G{=&2vG?`GJVOkBEO{m{6 zEeA~})OVQHgXRX`Wn;P(A+}(jcIXca-lxQ zv^q4qP`_hZ9-3aL?=h_p%`epdm==g880v#eD?~F4^+Tp5qA7;@BGVet97Fw)X_07> zp+3p9N;Jz*zhqh_nkL#N8fU0?GVK!$6fG1@G}K3#R*GgC>ZeRgMN)Qg#RjD{TQ$xK^DV@7L6 za}M=quz%B}(WcR;L%o`5*J#+Gp3SsvH11IEX4*Fzc&LXnZ5)j})XSN6j)orU=}cQk zV-NLqroE%Vhk88I=F#Xwy`E|JX!xO?&$N9s{!s5{+CK~+)B_qDfDwdxL1PCngiudt zYyrj)>J5!Oz#u|BqOl1WMW|Oab^*f(^^C?gU>u>|(bxwJB-BG18-bC8dP!p^FqBYF z3HwiBETP`g*b58>76X%6+F74ztOjNi>Nkz$z;r@=r?DQGPpJPi76cOt^`XX!U`C;S z)L0TsDb$z3{*5_>`cq?3FsV?VYOD%o73x=wWx=#UeXFr9m{+KOH5LXF3-z(a%FY)v z3-zUWLh!Sq6Xud%*XF~3m%Yb+2Z80v$K z6~YWd{jjk_m}00eHr5Dp4E4vxB4LuDKG|3$%rew38_R@ghWch>oiNW(|7s&o@>Nvk&$A#`0nMp}rsXPrX0v ze+3?Z&=0`80eApHzX0mO}%fkJPw*?PC=yze>7d!x=ABK5j@BoB<8RnhA0}%RYn70NG zKdL4?yUr!uo0+tI%)7yjOStLO&MsX5j(AtHpYacMA_d=;vbIE<6CC--~&_ z@BoBpYIC(KhA`U{!Y5D!4;KV)7+ zJOH6Tk$DyI0EGTU#53k;4E>GF>xc(H?B6_)cp>osg#JjxOXisj{gcc~i3b30CGl10 zw`AT+JOFqxiN`{JCi80I0SNt@%*%-fAoO=KuO}XWc#aKTP&@#kKa_bz@c`f*C4R(9 ziU%O{mol#@9)Qq)%Dkw=qj*#C0EB*3=3T`DfR~kc7H=ya0KBfmyYZa8&=1SJvBbxr zUzT}i@c@K=TIQ|A1Ay0-cw6zed2mBNF7xK%0SNuN%)5&RAoTMhzBi9===WvbUpxSz zADDTA@c@K=Vdfpi0}%R&nYS1ZKzUUc z4?yU@XI^|f0C@As&++Qx0l>RY{vP`Ik>8ugKlJ-E?>`=Z&=1gR1MmQZeu3x*Rznc_ z30iFd9)Qqq&}t9x0EB*oR-1qaAoMFlzpxsH(9h6n8_WaH+3(P5AJ9Ljg}?(4`XgGc z1ReltC(uu*rN9Fa`YWQh&~MRdFVJ78#lQm)`ZHRs1|ERWztL(r@BoPYTa5>`9(Vvk z|3|9@!2=NbLt3o}9sp`b(2uAk!2=+D$!bibH_>m>YERIgs71j85c*SEtqLB1(7)1Z zS?~aa{+3qjf(Ia;(@8B19sp`%(8s8i!2=NbXId={9)Qqa(`s$-0EGUV=y6t)6Z&(a z*ICU@=-+9zJa_=8?Lpt8)&~zjJnxHIAUpt}KPY;k)eMFHp`Eov@&JVXqE>5!2O#tx zwOS-R0HHsr)hgiu2>nZ~mI)6)=x=JZPIv%9|5K}l!UGWcqgt&L9sp{m&`-tw>8EP7 zRd@hGzg4Tf!UGWcv7*mfjaKN_YPDN<075@k^j(JsAoP2++All+p&zW(hT#FARt&wE z+A%x;p`WbPmf-;i{bsH93=cr)M{BidcmSwXL$9WG4G%!*XKS@>cmP7bTdRG;0}%S* zqK{jRTi5B+%2=dDJMT0J}fp?|N{^5Fpp{e7+0 z4-Y^*|BYHeJOH6Tu+<9U0SNtr;R#k#82Sratsx$Oc)oe)M{Ko;@Cj-a@c>Y}2*03~ z5f4DfY3kLYANvmg#OA_Yl#OS^k24GOgsQ$|5l?( zttK7-YB%9Gp`SB+$7(!7zh|rc!~+oeL0fGo9)Qp<+G77u{< zn$_4I-Pv#3YH#rXP>TzXqc#^0K@jO6kf$;!@{^0OJ zs~Hac!>yJW4}kch)fk6<<5qi&2O#t#x7uVp0HI&G)h^=!2>r~hwiypV=yz_l&v*br zKXmx0)kuea>F`slp$`4j;j30-9r~?X?KK{N(2w0}v+)2}?|<=HtKF6dAoO#$+HO1m zq2IgJe&YcM{ovulRwEwz#arz-9)QqK-fGM70EB+?R(p;IAoQcR+H^bs)T+a)sa?kd z5c=6$Z95)-(C;4pZ8h-X;Z_qL`s2gPt!6&-&$n87JOH7;zSY{}0SNu~;qg|JPi;PY zo?3l80HJ@s)$-#32>t!7)*lZ*JRg!?0C)iC4S+v@UIBOj=pBH6fL;Q40QA__V}M=* zcmU`S#{s<#@BqYfvFU|?AA;TpcmU{? zfM0^%33vc>EggOedMn@opw|L^3tfAM2Y_A-_%Za^I6MGi{|>(fy&LcV(8~co2fZEe z0MP3JzehYLlU@+`L3D38JOE<<4!;P!Bg_NvzMUswy(RDfi2XbKCc5_=9sqh#;76f1 z1s(u;Rp3{lcLg2*dRgFSp|=Gd0D4{EcM0ddndTrph(cE)*0O-YmABWx?cmOn49UcIBci`Wlmj@mIdVApSq1OiIAQkk$%^2Y}uocmU`nf}e=qB6t9_);Rn|T6-KG0D6&VO@jS9JOK16!2>|=68uZ_ zGQk6&wawvgqSpx?0Ihuv{}a7X@Bq*o1%DL1Qt$xKI|cs~y;Sf3&|3w6mDXB^2S97D z!vjDs7W`ORn;jkidbQx!qIU}(0D8IL=c2a@9sqj1;P;B>rqT-rKN!7X@Bq*&2EUm0 z4u=PTUNU$9=q-c4j9xQ%0L1f-~pgF4gNHG)!+f3cMbkEdfDIsptlYFHhSIQ z0f^_w(+dX=0KIYW$I&YX4}kVghkuStcF^xDA#AolO@-)S#)cmU|lgFla6 zJ$L}<-GhIRUOspL=P#Qq)r zLV6A10Z{DW@E_8P2oC_giSQ@Vs|XJOy^HVw(8~xvBfX9A0MP3QzoTLwhX;UONcbV? zjf4k)UP<^R6+1aR0E(p?eoA^PnZL55v*(gxFNX(!UQGBg>CJ=(fL=}bHR;`i2SBl$ z!_P@?Cp-Z3dcyA+&(Wn96n;>8L*W6SR}_9xdPm^_5c{{DQuLO>13<4S{HFAt!UI4r zDm(!6roscDSk>WIRqX2U0MN?{4}jRe!{17;D?9*V{|^7FVqu2|fZka6V-+hqJOK30 z!au86+Tj5Z`*-+j>9vIiK>)dK)Hd#A55<>JOK0#!#_+fF+2eD7QK|BCr|Bm_tdJ*CQpf@4)3DPPY9sqh5QoleiLp%WVHpBxUt%EZF zsDE&H0O*BCJp{cG@c_^(k$MSwC*lF1mm>8P^j5?JK(9sWEmVKu@Bq+@k$MbiGY$^` zy&9?4pm!r40BJdndJcL!;sK!7BlRBie#8SnFG%V^=naVnfL@W*i_kj~4*Q(4ni3dPhmZP49-j;X(q;+uyfc3t_10XHT zdScQWQyLlU-$^s0e#YSekd|gWHR-L12Y_Ci)Z0jVb9eyg#YsI5y*cp!(5sVr9eQ`- z0ic&B^*qw{93B9AeNyie&l{%~DD^;lcb*Swy+WxMl6L6u0MJX6dLnv@;sK!7DD_74 z9<}--^&+JniQc4m0O(apy%N1k@c_`vlzJvbL0SiU)w+ zuGDwY>lF_`Ja?U5uy_FI4NHBPv|@(`fZnmxkI_pO4*hI{qiwA(-ywvB>s}~Ody?d$Ola}xB0MOf)`aXL7;sFr* zchvvU3m6Xoy@9C@q*pK=0I>rnhG4yf@c@V|IO+@OHH-&9?B7v;NH1bM0Q4rNK9OF< zcmU{KO#LFgjPU@_+nD-BdL82d5c_x3Khg^s4}jQ+qdt;e$#?+holN~Cy_E3)i2YlS zWw92A2SDt_QGY2G7R(f0G0if44^{!%H4iA9XzoQ;jY|L4G?C{Q>*W#%79UcI&e@8vC*rdY)AolO5SEhG49ssd_ zM?EvW&G7(;{X6QN#XcP#0I`2ZJ+#=U!vi2z>Zq5dcRC&bu~df#Ky1}fUoF<^@BoPY zJL<3L#f}F+?B7wJEmrIB0EqoN>bL3Tjt79=?$mdS^>PM)^?nxvwqEdf0L10PB5E{kvGW!vi4p@2HO#D|dJR#Qv>^zSzIR18|ah>*E0s`*+mai@iHM z0Al~ndh)9`KOO+Fe@DH(*uC}e7yEbA^Na0UkAHgo;{ka8{r6j`|G)Oi&8?UJ?u63?_cKcQ;bW#{!8@X4K5u59`1 z(EgtqdDqbwpZfE+2XFf8PZsT5f8VfQJoaL9^L=NJ+@<#~=S|<|iKD;MKJS7*zqZ#2 z{Xg^M%zr-bPPrrh#?-Goe)t(zUH;7Zzy8j@&idM=pB>Nt`I_(XGsZBM-{E(83?7Te zlZy}!gYICPhjuHhOyG&;SCYw+6ArB`wd zzVp^+KhHJzSn0Q);~H#Oz2vi8gW~t6euit%{OC7Ua19o=9JqpOptrw*Yrwy`2K=0B zz<90!zt1(`@wf&&KG%Tf;~Mb%TmxPY*MQf@HQ@Df4S4-r1KtnUfcM8W;Qew9c>nyL zulXK7V+>>Y9e$U`;IVj29-HUjxp+>Vo7cc=;WhEvc#XVPUNf(q_rQDMJ@MXnkGxmj z^G!W+xdIm;SIYk?pUdTUDduuVR@rxQg?x2wNk7lmtkZXkLv*$BpB$#26$(|?=&$0Q z{Kf%I_MP(08d^M%F~i66ol@1Q`mI8#e1{&cP*e4+o~KY#-c7?wrK&me7xS~p{LcQpzusN?!SMU}?oay?$tf2ud?Kl|&O zJsIb6wHx$x>CrL6E5_}judAQdk58!>_YWTK*)fwU#*Jj$7L8jR$Mw(E%-2OKJ#j_F zu<3Ew*W)mkt68F#RN8iD#jr2LVGqV(t-0FM^>t~#{BJ78-5tlh8ppk#tNoQ;MQKU? z-HLI~#&J9AN_JkAe6DskUS7FyfW8+mOF>^(^EO6i1BqNNcyBhaf3EgT-ppwq`(?$z+Zo75 z^1QyVk8ZbI?F)>Xz3&?pyeq&vFQyx;W|0~f@B--`p^ zFXU>U;}JjoiS-o&+vC7rX9KHpwSVCepWXjY6$2lL1K-XD*5+!@<-Pp0+e*cdU!u&Lh5e)Ik*ktMs+KW0wuo#lD3{yuNWv#lS&v;OuOmE_MU& zWzDFi6$8(S1Fy>l>S7o8R636TPQ}0#`nvWGUeej;uCMq$t48f9yn;FBK3(yBmWkT4 zdBSVXeXZjAEDN+ai5y9H*OQ0gw0k zn0qS5T^Gka8pjRK)eh$I{ypXo72|#u$NeLYdoovBtqW3me@v;oun@){21>;=mi? zz~}qqYJbja{Lk1m6$4ksfoUA*`{rty8l_Xu`c=iiJLAAV>kGTsy89ks+yiI-w_@CH zH^+M#SNjyN{E4%VtoVL*aZiiCzaUq86ytt-_LPcoiN3aL zc5xi{_gw8Uyq*`%zN%u}%sB2AePJKM^SZXb;O=|#?7J%lelZT*m<`lkG?`bv>p8!# z7VZy>qA(^OPqX8Nr6v%i(B;b+H1My@0_z&#rN$}ZqWlDrf=FyQmj-<%v_o~ z=hGDf_tn?71x%)!tN4C(K7ZoQd3{mdH+SOB zhwA;+49$Mc^(ypKymNqlqL1GO)aojP0s8&U0l8iDIy4dVM;}?mpDCJ_h1>-Gn}54c z?_6Gg^ke-$KW)Us=7kGpEu1p1e&(FHGZxhkXlWRB(8MW==gpYg`QQ4*3l_|sHhapP z`4gusoL4_<+O&!Dr!1ax@r;Q>2Q>^DGIZ$Se1G7q`AY_VVC2C03+B%lIAhAxITPp1 zpEh^N^cfT9O_?@(&iom<|DR8q8#L(9&i|d*`6~Fvu?yzSTQL93DO2^1bGb>=XUv?k zWbWcgi!W`Sv1rh2F3h6E(-rmVYh6#hy-D+?ES{}@=?>>#)9m*rEw%?3G|eve;!EaC zpFVfSu?uF*oOIX`!zNucN&f+mMEkkDN0~HpPRoqxlZFgFY-n!LoX+<%Y3AXF)@u!ax*Tkr4iAs_hG(7{Iz`@lEsh1+*0Or_Y!^ zaOk9lfm0VwnLllI{lXa+&sj8Q!TkEeh8#X*=o~iH8Y`*x2fs2|4P9HLi@625=W${2wn#S2v7EZ4pIBWVPQx?t~cv$_w(+{s7 zICK7jfr}O|oHI>B=FXX-&wQ4?IdjSUX^ZuQ0~gJ(zZdCy)2A$+Qu*(h%>$<`n7?@8 zlxd3_7tEZQv*-E1bz`r{`2`=^A1$r9$4|i1Mwd2#Zi`>nP#D~~rsvW9fADTOr zkH;r#A5gc?X0M1l(O$eh-VeT*E+7A}&Re|l;q3ugFPb=jK{|;McpKPo0ZS2^ND@r^w+N*H)7&B3l?6u zsCmk?8575zecHrhPaS*W*nwk54;(!B@WF!zE*#o?n7-7+8{GM$iN}o{J?WG=QzwpH zuw*V~!tqQ}j)5pJ80eqG(~ zN8#oV8xaqe(`PfHe!$U$6ZKP<%$YlVME&8zhaB|(U|G!_-Jlp|3IRqgKS*Cz9oxCW zo;o~N-Mf5hk3!G#PNiM)AJ6Yrtjq77-y^?gaj*P7h5homL5nV(r@dQ$FJ9RB_w4wU zmgvQ~L9Cv+K~onk$_-k$fPW17=u5%v9Yno8-F)3WWVYON z_rtK(b@wC9knX;nP12A4q3+@M!w*c24}Y^_WY_nTJw)XXv|Ysq>E`0vREj^Z{535Y zOwEt_QN^q1?oqqH4tAsbpI=XRKkZy<<15K74*_WW<_BK+M@*EkQFr$%oy*-vyxp*3 zee~~DT#L%rVcYFTJf^MfAMrE$y^nZIR@3fYNZc#p&${_cx=yo-J>?@_NX4Y>=J7r- z?~UPAaBCH_!7?TgnGM+R6vDOJ|?%jJboR&zQPomZFTA z3$&5h*HflWRZ^nYoc(l)Qk7ZCeZzpcWaZ&&?S#2OB)Bsa>0M#ktHmE&MUxlwV{4guxDuH%jtgzWp_abNB-?kl5nxeYspWrEC|UB;bxh90l~ zj)C#@J>6y8)6L-^KXF_iy}!!$d)z{esE?y|yx&8*j?)|4AZ;xE ziH|q7%eWE%Z&Vz$@&?}DG@p!j)9rwD%)O~o|LtV#J z=W~;H49h-`KXw^6UE@}CGwxqq#=Wd@xxqUI#`m$4Zan=YyZ>GurhiTT@VG;}j=M20 zZ1dr9$8{OE^=lf}&GkFC%edFRrRS~x@Z&A)Iu1Ii|HVJ?C0x~YoGxfTiJ9?F9QVC0 zhZd{ z?|wNRaok_KjvJzJ`d<7K$CdR3PotmOpUp${Rb2e_ zojC3jUB`{+ew^z%Zj{FL3lCoLc;|E-H(KMmSvMAS9XGL%+pzbCAMg4ui<0NymQaolSHEOS@dU;InTWF&b%{c&i>4D zpVHf;$JlzusQ&q=)d>Bi&<*9^!+Gp(@fOFSxzoMrTW=kE%V{k0p_Mf3# zJ@y1wKX#Y;_QpSh{lLF-F5N}(bQm?UzK(KliKR1}V656%i^_d0o^CiArH*#_t)|Ob z7!jK9uwP4^tHQ65&Wko5Ef38~RQ@QWI})Dz!P9YT%-(m#gk~Ayopbg+ilu9Fa+q^o zxpX^X6*~fd&VLJMQV(IRm z5Spdk-L_3r&-lzKNHc`ld0x_o5~Fo5l3r2Z-p4VtSq#kqb?6OwY40a-rEPrr#@4 zA{3gvV|sK$doD!BbMF2(_q5EvPfVYiIy5a}`WCVLEo1tYF@39;-g_}Z%Fyf^)9)M0 zzh6wx@h*`I&HgbxziuNJn$|IW>qv=EXuc8CdoLcMKOm+*AeR5YnBMzfl>C{PJ`>B| zCZ=x_(;pPm9~9Fc9Mc~h)3=T3+s5?mV)}M5efyZceN5jWrtc8bcZ}&f#`K+H`c5%@ z=a{~8On*pBe@IN_s29tY5xu=>< z7MdP0eUDiFo-uvTn7&s`-z%msjp=h)oY3@+>3hfW_lfB_ZaH$H=^NAcjg$z5re93Y zo}tL`Nu1k0{*#&c`^WVCqs$252_4fP7Sj)i=?BF0hsX3BGab3m91+tW5h)Q0<;^OJ z3Qbugh@Njikqgb>NI)nwLt=78Odgtj=Stw+flmu}g_3J1#{Joy5mwGbH5y2L6LX@o zn4#R*kT(;DM^Q13{{>DKdnJZr#KlQ@ea!crjF+BbwD(3Q<3*(yZ#m?{=&Iq1aX)>F z0vx}kit+r>)5Xe`G2M0=IVT@~Z`JjBU(bt%T)Oj3CZuo&mZ1x|*MV!Xf9s9Ys- zfAfgSyt0aMzP+Y0pESj$m-(m4wm#iVQ|t#FzcGu=A%+9A>BylJ<9T$1%GFYz9_B=q z`OQ*{^L>WO>tVOp3@}Tb9yW^czH+U~<3&Ee+@mt@e8qSk;j_j%$=}_)qH?w9yO=*a zJ$9%V&-agqE z<{-oI@pR+ii}ANYW!s+nnd?<%f?~W+-0NhiUpw=Zlcjz|=GRV^`gJzjoGkV0h#3bc zhz{|^xV~DbZ0pz7bW(XEk`&|pl4GCg#={rmc|XGCucmys8SmtQlv8GolQWcCnhTv= zM7fh$?PNLMo0^-P3@irgeV>!j?!|aM{KU!9eyz-Al~FwOdzs%kz1YJ^k8XonLuuMh z&h5X?cFE=R?6ZH)?>vy+6X{y06)SyHwPK|ordBNberiRs*QHh@yEke@qPwJ494cBz z?}+xoNR8`POV#UF%Rbbv=FZfw~TH2 zTF*Y#y>oT%mEE1(-bu8K7lH0i|CHdK)*8LX-K-VKeXJFU9jq0Hy{i=`eQB|x>ljO> zqYeBDYS+9UW$TQdIX}|YITmT_9E+4X$Ks^Uu{f!7EKa+}{epE!i66x}$1=(p<)@KT z$&Zk8$dBO3#(v@j+vn)n z#ROg++YwP-FXH#mUMinTyaVl}@=_uW)^}9?KJhkVo>KWG;;lwFG}lgjrJzhlgED!)ox zhw@d%tC30IB;TKi@;ec)GiI>LBZ=1-6S;+4jXQ28|CYGck-c{y>FG3!;nn~00^S(Sf9yaM~9G6~bf zx6z(NwkPphIB!%gBQ7&$tjg1gOO08s@|DC3^?vkCW4f32%=oTHY0o}AdiUsYXx~hx zL=<-0qokxypFWvP@7^W-Z2Iv9ONI=uuro1m@x!sF6PIV!t!pg7l>M6Sh;OugOxM3` z55{d>onBM1-{#=GbTX_MQV|?}`k4ow`Rg;E-r8Yk_+C*sYDaoT61u@ViWWVwwSC3l z9fdRAdC|O`E(+d$CTP7qOyqB_+>tyi=s#lX!GqfDNF4UTi;upwJ*XOL9^aqWuN0dM zcuxrqgK#JU{j$}v0n9g^fe_~T;;xHn!3?)6=Qfe*j`WFyOu`A}2Hf{lDw3&-p$LD$ zaKD)nlaE8o`Nr6CzVTK-G~f7jNMXP%z4^f(He#@hcWg`;#-@BCf|!?F3<34%Oh_kx zE|JNpgmiKxB2(iLPM#O=o}F62@Ztccw8=~It1>US1>5`pA7&<~KyqVF=LRlFpNF;x zhW-uV41D@&Mh<%i+cJt7qz;a{6~Xi18&w@O%LKfUDdD!>Rove4}ZzdYIt& zEeLXMGQ^%Lo@B*dD)NpFZK;YkK`iKlT){}@{RzbmS@C6va+b*C;r$>5Q&^%T!);zg z7E$ncR%8WCVJmD3B+FE0p{WANA|m>sHH(OO_N4G;Ih~kS9E=P;*IXw|hLg!q`Q3se z3+>#f4u!?RUctb;Ysw4Ju&M0Sr$ioF0~4Lnb^;Z}f@oqC#m0?;6Z1H8s*nNf2p#U) zIE~L20)fC(5~xm^_k+qBrzA3UV2&s73=Ylw1vLzmTA`|jr#iDD5w=-p z^Nl1}?O3NOK)`A%32os+Gq0$I0U8U;D8g_FRuV?Tho)*#4FlF1PkwQcwK25T0zNP& z5=!AiydOvnDE&<%VtS9GjBe08B?a&iQdXA-Hd>o$q`**Wfxzn6cc(=iXs<%&4=gsxWH3LTB*I z`%8^J5It>CjlU=H%g6W#{DK-H&;6PM#dUlpM?OSrdfKx`lJP zh0QWy;neO29uqb?Iy|>qSkNt;)-CKjW?<*G6=6Xpfj-V4nwrBIIk~m4^E703#_Y4_ z_w=T1K*X5v+J{aiH|6XGb_P?F>`W_vj*%pa=JUv;nu#;c8iY#Jo|sa{)SYqT%0>?D zfhqxdnySI`<{O>9Vkg?+GjD!mp8FQ3UMF98bhB1Cb6h#VH3Iixmz1= zYvoOwFH0>?UKC!OSb@vbe5ScHoLs}1G~U(j4@&;@ANp?Y4Esa zZ)o&X%!Qufc6q0`KT@zA+>1y2QD7f2|99h@{c^{9wRI1*AzDADT7$rWu2P<^3}JlQ zWZi}$V|HN2_!#8dIql&SN?vy4xFbw=KWu&124(AXIKQP`oQmtMw6CMwaY*2od*@!p za0nmEWqGdLxd=Pk2%7UzsSE?^oNg9m-`+>f?Km0Q<2#eHw;W-Y2SM{4*c--xI;Xn; zvTv_&A7jQNj`n!1ID35KcX<#re}p}*59FK+@_Wa(Hv{&#pR~s>5NGdZgqer07j)J5 zPF@^qKkDy>_tSk0#vIAvr%@GhR+5At*2izE8+yJEZ(>l8WHDmI4WoqWgfOTM!s*PEky1BPyyo9x#Z_uBV8?C$tPFU73(L{MzAnQYUUn0Ip z+Yyndi^lg-?58+HakwHsqL`ocAx=`PQao32vEt>5s}$EM-ln)g@nOX$6rWYxtoTdC zHx&P+NZKKR!^jnKh~yp;IQh8#nCz#@2dLap<*q986PxKtC=id)_!Cv;azKoqrzkuw zyDGpJT53#+ zSkC#1%M@2A^8QObc^%?Sinl6)VwU*(6(3T3Oz|njXBB^;_=@5m75}2RUGeXV|5p4& zG0pZwJqi_DD(I)P(FNSgpMZUKra9ece z4@A+s^NY_!rg!HV?^l%NvmKaG*`044RqmoF_Zg%cpz<`W7hVTU0?!s_&%eL*?KZpn zPWjuC5=-c2cFy0fx3~2=`P){T!-^&qgDbB5uvyh_7hJg`e`Ceg{HecNSh2ORJwg@1 zfFV1QXOYc)SDD)t!Cu1L77QkLyMK#dM{wAx@*T?D{tx#L`-UfF@GXRcw%Bx&h}?}N zO6*^X*f7ZBWfcbL%Ls|o6yyOpd>Es27Ol?ItIp6ZO z%NeeVw|x!@dnC_9;e2yzOWhx4bQHFCK5pb||=(iG{a)joOH}<-OhG zZOg3acw64tJ>HflTmhfM!N`}fJ)a^^IxF%vUqH^>iuY1HC@b<{LKUqj<#Db4Vp3tW z$P_3!S#Jv0P42o zjgO)6&hUXbfxv4DY;aIR;{)ND1N16`gW*B1Vk?e0nVgKOb6y;8b>h4@mK%@bEifLJ zeFgUN=Cdrj=VLX8?1NUJail(}4mIwH*0l!U>VeBvP#R03bi>ATjx<0$i;LC4lKp>A zaQ595{ASas;oOJ9rkQZ=(P5i0$DIIrQy5KIQl=l+zi5>ip(};L#HN?Qrj)DkFwrid z@pe7EDTHRubGZ(Bb57rebDY95X1UEePRbnWmIo-}OUX;t%Y*KrFn7n*edL|7J`R(2 zu3gJv_VroGuOfws(XM=K?H(Ma|73B`ANyE!&l_VdNAM+iMY3@&I1nOVTb+9l&$Qd2 zB)5i70ePPB0b2?0@*rr&;c>Ty0d-C{5wZ(Y^*+-5!HaM~au$BM<3YFZ`;P5?3u-E;6ROnEKRIop(3Kf0&k{ry%#}D#+tp#ui;|$fPrHJ{AJU;t`5N6o)GwugLoW z)9v9fZ9A;TK_Z_}Cx?l4dQ9~)W)<@DDx(>5I3YP+xF_+PAs3WUY^(TLImeSU->Hhz z6=x})tw@rD<&hmAUZKeQCFScBZ&nlz8u53le4pZv6(3dP{fGH^zao-uAil2nmf|~# z?<;8_i9_wIoU3oF8k-W4ysYo-1aj`9~{065_!Jldqv6DUhEU}7+f-#Okd;8HSgvv-2P6m zaL2YkFFa%0#S4S}Z$SFTi`yT;NKHIi%Ge$V;7Ju^unpL-eBi_##%l6MLoh~iIkO~E zy(xiy1%&JkPV}ur9t_YV{Tps$qJ9%4CO@A-c7W!-kfH&aeAtIa(n#452Jc|*a=EOM z`Nz_3kiJs#CxtIg;wMdLE!hdW)KF}|=q*Ri)Hi8&MQ|^|dCA9Q%c~+kSPMmPG&aVp z;07*8Kg`HuUO_kmpO*L6;lDw!jN*T=365Qft#mHSsLT;eTn%6FA@f#J%gYSmI$5@e zSZmno?Yo|3L*wA^oG%BMdya4s>+9S^1i)(%sIHe~a|vS9+EmFtlHjt}ORZ&)2-I4# zhJg|*q-z)$XobQW21Z+Wzv@uY@-1_^zQ$8-v_23?(ECl;DYk%n624}#7bR#T;56#>qH4JdKJTk5>T8l}1=gZPzVot}|vS-{L7w@mVj=tYF zEG*C$Vz!>g$i1eSo)vAEE?pX)H?;$NxZlwO7q{&kHp(QDCO%v*XCRwUMqle8V-W{c zdx&7fR^>FxE~NLO1=q7B$f!lxcvPJw18dV_GT?0|#G5;XY7b@9v5|F*g!D&MMwF+t zhnk57ExO@`cJyVI4%|IgsIJ9fwes#$yiJugEn1db9$u8V7{yk+Yn{D1==e1Pzz( ztBb>$5=(a#(w*RCbioNo=a-wr!?+qsmYas>eh}xwyF3V*zknFYFrd!qsv!IJmf<6t z&v)7@fOqyTM%d*+&@_UA>6~-ArHJtDt?}&fyU^LY7Gal%Hui;rV;-Dy!K)DA+xsr; zasOC9zScT>w;;?sCGd3L$3Ym4Hgt|U`g;{!x&X%N;;{G)h$gE7h~s>=L!AJ0^?Tk6 zQ@s}Hx-g)Q^`m|ID4(mzS`?XlG8&@vT+dVTL-{S)j*%I;2UJ=496Z?^M z>(OZZ{&vpUbFxD}ephf<{1%K{QtG)Z8{t~XMtm8Z7TbyKV;x&8at-0M_Cs>E(F*uD zr{$iIwP-DS54YdXI54~(5;z_>6$FLXg1j$fDBBTnTzNh*T`$G{ie-uwilY?CvoSsI zDa09y^As;oyhw4C;th(tmYDBO#rqW>QhZ$T=ZbGCzD>k+_gBUDiMWY;sQM5MMmbG{ z{k>Ffsd5{Y`Dx5_y*2(wm0?Eg^K4-`Xd*!#N6Hz+wu(H@8Q)#8OmT?faK%bReugsr zB*p29vlOcpmnmMR=y;~JDz8(#MezD#$DZZfS_@y^gen)Y;;s=Uu zOq=7E^4MOm>-Z&(>!BRynL25_stcFy~}jPnF8hxftU+Yoba8!f9?QL*o4gBiAsD@If_$0IPW zut{N`q)B#7HcAFZE`6)aygvTg@tlKeM{pIs{cK_S?MAKa2(AGiCS>kyIA|C~a>?A= zkaKVE;eJZ7$$-zSpcF!P1mX^S&dG=ayK)vlZo}ERx9w;okdZ{HHCCaE}L}zvydWchwmrh7H;g^Tb>g-_jW!Fxw*HWARhI|u+((&dzA3&ql9#l zV-Hgu5q5KLr!ZXC7_PUVs5SSNT}8oAo}3x@^es#?>~Gle`bxKeaXW_VHi$Zgi;16s zFE|eyJBEuli^kCyuAtHz!Bq(x1w5CJ)zvLadPf`hZ-7Kli>`>{v- zSwJ^i)}F-nZN?4RIvv$U*#DrAw;qs5eEB(odu7HFn6fsn#6%#I2=-w$iqHjKI3fm0 ztWYQ%Q9mmb)i6*FuM=JQb`<1}EaC$Plnud^9g$Mp7hAT})0Q!Rkv9=H`@R(=J()Rp z3I^sRg3WcVKRH%LZ?Q<8Rw$it9J~-o46rI5k;J`iFHy%6xW5TAe-S_&)d#_+@QydI zZ4HBVrz=H`jZ2Y6isI_(Mf*u2+G&JY#(6f%Pt0Pl;uOs>Xw4lTPmx9no7Ytf<`%`w zwMMRlw)Fw+4+!UG z!UHos4h+YQ347Mod^D)dsee%T+I%Mv&d z`}L_~wRQ;`R-4)Kxu&l*0r{1lv)XD|-tyE%$&14kiA!)t`+R&^bPj&S*|Obfyw`Z| z$>SbLLl7r#SE^eByx)s(!7{{?hj8wlX2z_9lFxj69%MNjJ}O-vre(+D%?zk>x=D~- zn5wNv*Tg<8C8g8xd(JO+QL!-@q+_{hc98dj$5lf85`u@Xj9F zlzI4)MfXG=_`+EGQGYkQpRNy#XW!jaNBxiBLys$4jdX`1&N-%``#HP|Q{IGht`3x0 zKf0g6`}^^v*DeTV_XCI1epCVJK0>BfZBVwZETXr2W(^vH979XQ?*-3td3;zV_9N?_ z#Ch5wE9KVRi_Y1nUBQ*HPLXr1Vq?AxZj3xsbiT61Bi9gajGruQbH1QP+*tOuoIBtv z8~xeGd&w(3__1CnhddcST!=#yhb!{F!g$t)$omJeO7UF9#fq0Ju2Nj5$PZZN+o1Tc z;uDI`DsEQ%rQ#ck|56OlIOIiAij9ak`Gl{5eGcBBEaQP7cT`z;8pwTBu24LNh?M_Ms;)e9o~~zZ=M^(jAC2GIN#Ps3M1;xmey6kk&OmEsn~ zHx=Jk{6O(zMaR3zaYT7d*nU7#A4JEy3FQOX@ovI%LUz2{;hMfok+cW%pP+cE;y6X} zAk@!OT&#GZB8d^|-MB9~zL0Ozcrqo_KcV=%;){w~6yH?*o8mte@!0s(xuMfE9hn<{ z9GL&5kTaJPtX~OfKiy{6;_KCLK5#)}6oyNyR3LXPzHg8V44Yv#=cpaYv0Q!csjYd# zM{FH1qj38tt)JT3en@KjC+&uBO{IbXAyN+Akv#P;nAQ1=3Eqxob(Vk?+<&j!S)IA- z@!f;{4t|0P3`c-BL*L1RC_Ar{mjb3%%9)QV7fbUU%a}x}99c2NQ%>={sp!kA0#iJ% zgMtfxf*xETG5NfGVTvcuE==*{$r(-Y+{%Q#nZQo*Y|2Ev%NaX>v1M}Y@k9yBXEGw0 z-@=E;cpo%cv&@@PUj$ulVRM}#rk^LjvPFvI5sw=&FE1F(ia0OTcEa9;AC*yab{ zz&03)taf-1F-TvIh6si=M{EXi`g@E#iq$Kl*b9N+=tmHo4sTh*;Y@rP#DXepf@7(D zjap$1M<$@<9n$iKBC`DpcvlKWQ9A>^aY?aat}e8N#qqCF-lSjQwHE}409RS~0vQ1_-n?-`WsB9Jyf6FW|S114YU!5aL{;{cDtq)x(ZgIXQjZsy0%!o^3 z>-b1HM`O$L@k9b2Nuatm3CUL(kdTB537$k?+SoWZo?syF2+mSODI!u{)KC;H@i`B2 zl0a*qGZ)CJc_Sshk}yW%s}|QVV2k6WmUVnB_NI{1DmYF8ZycCHN*DkyQ%G3~Yo?>w z7(5Q%BO95M^}!U<1+HEgDTf$wo_Z10w2Y+lt=7(4?FIo;Y+Y0f1k_@kS$GzHN{O8# zb)DHgeO(o9jqC|{9#iMojLva~ScCTPH03)#-5Q)pdnTPWn3w!wlTM$ri|RF+e+=fC z_6n=Ig-rpIyM+f12q$z4d)7MvRhG|-*vXvdGiRdq;HIaWj+z~y#aH+L*0Om!V@TPO zpJnc;HUXE@+rwB+?$IaHb*79~=sIEIw8PJwFn4mM>lu^JoiKN5*PfZKBYI`JPMtNo zD}I7{+NAkiC(M{O0Y71J1|p}PJ!{hZX|rc_oi{~r9^xiXm_Nanr&e{HG<(+kxf3SM zKYaGosb)83EbSPB`sS$eMz@RRsOneno;j-SLE_#($iMJm?RXjcUhh)ziD_LI0K<7I zGu>nj6Wn8LFv2bmb@X>Bx^%C?_*j=nbxijFJPtvXQf$V)(>yL+71BA| zjN|^&Jq_>g$9Aus`TgeFr5Is%E+c5T_7M37=U6v7qPKgdAGpYdaF%Bl?U|!$M?gw5 z%BCTlWlL@IiNIQ%Wo(XW_GXQ=yx(w46wiHfa6G<5a;QWOQ}Nf?>#Xs86^~FHq*$qV zk|NJt+L@*}OYxhE7b;$&c#YyZMaNm*r}CqUJg;f@Ma5SYf2a5-#kUndP?Rxz$VZld z`41-I+U}ru2oV=T57i&0@<5e2MU46pD$5*3$TDXTI8)=#)pQ)2#Pq^p0fqiRx!=|J zJ2d?UBDkMNRsNakH>v!J%KxkKA60&vi2DCk@$ahtMDf41&Ym29)XQn5QCSvjM?8re>Z=sV+)!Ssc$wlAillO= zC!`U%)d8w_}M12=Y0=bbQ7U<-P%IrLuf@ zLze3Sh{s3{ciR2Xe!`HtO?D1#Z^xQi2Gwz=rG4Ds%bkyy%d{tpvXoEPiICoy04{tuH?WKwhE6AOENm{^n>7c6}7#o+C{ zV)ORXhNCZ=U{-Be_D@{AuNf;XMG!&uBe zF>R1u2?+Ua5sk%!1&qafiTY&fPU?Tcu$x;e1C_ILYq?@yGytqIUM|l@Kj|I+BSuz!&hQ7>rtp-~k9BTqirZd(Ev~k9x-E*3M_$O(lWq z+Vmr@J`jzB_V6I{k}@=}n-$VE4Db;wzZ=59Xe%tLaYkc2QAvXO*k@G_8+f%Whnw<)(IL~(DOTkisjzI-{(sl=Wcxzol@ zn>FdvX5`w}NHpvM6 zOr`L8c4*~pJTF^wZb6uNO5o`}NHuIe?y)d7)@G3{ZP4@k6ucRmN8BAqcc>G9u71yZVXEIm zx-JZ;WBur!h4=TPpVuy*#@7`g)33#X-MDgzI7PDVPH+?h5!n(k&K{2s%fxkc(KYmw?F>LM(3)=a(>#}jKm2AY9G3Jo%6rI0pvB))qzhh@K+h{#}oWFC= zIB!0#e-Hn{^Ktv3OwMN=qBvY}l;Rl0DT*@`=P6#Gc#+~N#TyiFQM^;}e#M6r`60~m zf3EnZ;@ia3S9d<{$y)!@6sIaWE=<}F`**I!S1T@4yi)NRMQKl@ze(i{iVrGEJ3{|c zl{YDFR(ws-abSN^d8^|4iXSL`tjLdi9)~yw#*c5tAEX%Pz}!6C0jeLQ$e~os=eV#F zR34`|NpZU3EJfi|k?)%-=dpgcKk~YxJvt(deXmb0K!9U$$Hl8xRX8do)b7t?KFpBRIjN)rl+-f_<$Zf73T=ZdZ z*#3FdL&`9-SALrTGkaxRqm-Kr&cnV3Z$aoN5xE<=(TDE08F(6Ez}#{|B6U16V&I-! ztGua&?zb5xvo(2%hVHi+uA`7nl`=;F?;!X~_(EQ#b_#Ge zq{9?o5La6ew-i#79SHEWBL@*oco0!dIqL2v1`4oYBAbdSGE6n`*Hkjq1Mtn5$`sKK zwQb>pNuqr&t3_0u1lSiCo+l&gQXLA9+B?&jzj@1F%H?F=)KL%`)$?<@1-U<`>rW8I zrCJz`*GoWb@{OR!-W;kort!&AMAMY%u{Sl%7{EUJ39#FAa%Jn!?egfw=NAt{99Sj- z)wKyVyd@!ljOXJUA4cI3`oYVjVg~wKAzj1304o&AuP~Hbp-83z4~Ky41Qr#e*=#u@ z2|VX9Hjm)y6ftgmCAMj0WT36nXo4;IoJCTyEo?Ml3_Ny`FdiPiGqI$G0b2={A}%s~ zGVQm52ct%?hQX-O8q=r1tKo+w7(4+UbtO!M&m%hs6@ubeFW%U6d|^KX6Xu*nqQi!2 z8cmpf*(^+B;|6Bq*swNkST?S;8=FUC?zrmQ9I&H?3d6|w2`t|8FcEbFbQ)bw0X8!EiGqCX3v{_^Ez{s32Y0}tP z6Xs7lXUf>pZvDFTC@t;9_^xNnI=gF5%C56!&zjP83dS8d0`0%^`?r?+$Uf%e*KQ}x zo;zjSq?t#}!pNs?XQBaXb9Q*S&;I@`E;l|a_4jX)8YhcvbASJKE(Ypl+ICJR!XJj2 zWDvfzXlnQF-4E&BrcHSEfUv`u;hPWM2gKR;X%zr+8v?e0XFA78#M4nn*8x5azq52*kS1QP z|J>ml2;E?KXPfdm_Spa+3<*akMYQ*^VGM>Fc=$yT)5q5bHG%H|_uhGuA;A%wp_DW!n`^ozG zyxvWanWqGvZXm`uOhCIhM;-lLiZ0!aFh15LQXSJh0FOgZ6 zY%`AgOZPOqzaRa)cEL+=wp}<*%bm*znloYVR}83Q-ROwk?&0maVdL;hiuR1d`y%7; zc+ZG>k4T=vdKB4%m;$}sD8Z+M;iXSS<98$!0!HG$ZrbLk>0>{bqCqh41<)c&{rSce+ zC#pP0@f?k>R{7hC*AP+8^@`uq`1=)QydCs1UIw^X_RCjnswhK}V0V9&4^$+F!u{*1 z7#~L`=LPh`R8P8!>1FOXaJq7YjMY(SA3~|RFyDfU&&zWwaro(MKXB?dO`O~Af|9i0YaFBg^HJpQ#2OeH8N?92Y zfUPi^7i$UzSW_^)1{`F-5p9@7d=h^7b;Q;_?YjSK`9He<>!N>lP4r0w12~5`Z~G_h zpWd1(=bYm3FKrFS!2KB<j$5lWkC=Cl)E`lJo;Qy;&znb_SI0c!8?nn|DIej! zvJcp?l#FmJCBr8F8!Yr!flXTFk|KucM!bf?*CcET$j*VCL{vnW1dZ3Btl(%S%pkt; z_pk|$X%4ZB;vfWq;k0!Te4!AU$1(AJ5SvtC6O53GAgYjrrp!j>B?hU7&PG1liak~2 z1=ECgyWoTbg1@3zk`=c?Y`Pydtq|3k(UZ$i#b)dx_z!$DwstYkiKc8BrpQRDIZSmD zqDl}ba`DBJ5OWEW+w@G!J8p0W8(Gq`1&Um}q<>h_@6{9O`oO;mu}OQ_3FdNNrNZkF zu;L5Q?tODsG)2rp;>u>3!z|pXCXz+OH)v3@i1>FY?#rfTm1Gs3wxAxKws9^`OJde7 zY~D`C!E z#EKmOkMIJ3xD2)(;lcY7y1_TXdqZ*c$4eLNCnHDMjNX)OUO_g)XaX;kM&=xsfg&sE zO$&EKt~b~+iaHT##kofFX<^361#3nVwCam&hUhNQ1jYAj-u%FWGi_V8Yg5x2`V2hk zOkmDf3TLb-+9c1*iIn0p*tUoF_L@>2YpF<1HA##~$8-iV#P8eBX5TmLcr&AZT7wet}^+r>jQTx3}4|$7{veyV}cxp!o~z zz2uB|y448#_O`$t_mB1aG!Fd{WV+41*C3^>AI+0vB9_3@O+ux{+MsNyqkjM%%~~aq z*gTGO4dKvtAf2<#yxd>9r{Vqmc*|=Sel5FpDMr{k?4~1l$A)m|8P^I5%v4A>K{}28I_+` z`86Wy{kr1sHU1qU%6m`cf2+)!0__$Mp{HYhUYSJRtBJg3h#AGUie%Lo-_SmUlQn%q z#~oj!=`U4WrFfO1oWCf4y~=X_Lgsy&^^)@#_!E_%QQV}svp$4(HQjrPy!dH1sTd!3 z+(P5YCo4lO8 z{y^m)Dn6+()ssqPu=bjZ$B#$aTjlAEP)@ zk)vE0KTUC_qFg74|CY+6PML1KBA@M)zpqFlmGa|?w>9Z*`|+5x4Se&^%1e`Bx9oIaEI+5uPAxpu&n z9|m=<9dISq6bRo-)>=DY?+=4|*ABQy)(&VYYX>ZCg)!cTVC{g;ZtZ}z<=*N67|1E- zv$S3^Xa@`qK?CRdbEJ5cEFa<4~1x**L?x%z*Xo81rgce$@bYP)uT{4Vzfhy|}xE5FOleL;9v z51l@;&@M~bp^&4S2j*Q+5t;sdjB%1aV3GDEHbp2f%Wj%Rcy14 zw~8;cc0e@@fVL*Ag^zRVtr5o~z=m~hy$dM%vfQ%FX*i=A#MFNMM<3T3aP1BFb@SQK zTAy>tfb5TW`%4Dg-teFB7J~9?Jt8(5B`nly4(nPE8M{kpx{Rk~T-YXyvi*5zTs`qm1V97}f>o_rU28C`HZ()r~M#Jk14P_{rkc|z_7aUQ(O zgP`dSMTP-&PB$B}Z*Mz@E55GKp3jF~1li?5(2RgRrgP5eE<}WHkK~-Q$7{vaj}Ls8 zhc?DRafKJ*f@`4j?Qtyw?jP&t^P%5`%seIVblXxGcWK`qM5d1Z9z~b#NEjohM_vhFu%v`$$mx9(na&OYr5K9qHeTvCo7ISuPvD_QBw;757>uzjq{ ztzAR-(S4DT$6!5tj30H+t2jeyZ{bMK&kJ%;ydF5`9+#XTyEZ7(b^^+FL>$-78sAq@ zMrt745S523j#3<>I7M-W;ylF*6nRavJmH#vH>iAz;+=~3D?X$s<5Q9T=PJLcDBNgj z&sqW3uszTY(w@MZRNkP-dkgjPalV^0ezPL4d#3xUt`#8XIqrwN&bS|RL|*O0>9~N1 z%_$>MD~<2oqgP*#V#@4{W9r?vUxPWOwz!_)vK-UCxD#Pq?uf4MCNI18-on+Z(-%}+ zTG3>+*?wDf&AVq^_s?zS(#PPR|4Y*$D=N(DqLsy~Uc+jYXKcG<;Xk%*T=?F$qJO>o z_`TbPExdQznG5@F>#(rpwxWVhKKS^PC}zc6`wTh(gF_o%-RQldM(Ov8(q`3?zt6m<$#t*q z7`XEF9fQ~J9b7y3y1|9l@4Y?DYY$$nMYdH(RD6K7ICtKbn_8j;2K_+l9)_(RZ&eW- zarBO4ZAF6u#i6OfwSasyTyVSELI@U5_B^U{_x_k%`&uQ21?Zg3;76stE@xpTc@HW#_?Y z1n7b}?8<7!eYFZc{dvU)=de%9Q~VZ@B~*NqB)zBLK;dCjRBz8Jide=?@SKbu)Y#Mr z)yXJ+fz?Pq>tYO7lX3iPi!nreBwC0gen$o;=DC#_8n_?>?zTAn&u>fQ>pQ|+mEQ0` zhvs||!I6_jHkE{_qF;6U5(b#KHkWBrAI}7f-~)5YLx87kFfwXi%R%em1wpi-S+#Zv zles!9afyo%&^ok-emHz+&MT^6fYTKMb8=ML$vnu9NG!>1agl+MG%y%G->iCPabAzs zHOx7~Myy?uhXoWU*ou#)sR!UgbIy_)2A+oZ#?;ouJZ?e~=Xg%ffL{&2#zg{oO5X?n zD*UhEo#PqJYl&?4L7p8}`Uv<6czZ#*9JaNb)Ld?Arz2H^n9W+e-`Ah&6lPOiu-%eE zG7Ob8SG00MEus@2M*cbrxVy@uBYepOW5T^N;ml09celaef~hmR-;F`0uP3Iq!2r{n z&cC5VGM}&35W2UZejln<|zgNchBEx4&v-n3g%9D zIpO|xA)&Y{e=9yqB+3G^QeCNd?PVRZQhD-QE5k;|IFEQ=VzFuK3>vqbBuS+lBYh+`L$-Yci*2|!c#YgkLB~lIo`s{ zo3>rnXnFdg{EPEeq%KKb8eW$8c2M55G*#IoHL`J8Q+Yyumfwt@J7q?<`BN6m?^f$# z{K}KH|1GZ8z7trUgvYKF-hcc$wx|o@$!|Hg2Ao<)2;{(+hMq4%$H3#zM-F%Se7V!x zD5o0=(YN;q>~Wn4+T*vZv&Z)jmj^+U55-#ysB=2L-n%eWe?_{{UW5xyfzB^?a&u#< zp=7y?cjYcX*yTac3_+zb45)Lu`H+2kZ-Q9js}k)shIjTZL)hg(&`g27DhAX!-Nlf7 zdw++$m58G~eoi}k-$B^rLD2jX_Bgb`Ij6f85x%`;AmezPXb&`c*4`ZmGY`)Px_6Oi zam*g|8{qwPXJIGDGJ`tm==rgNM}Bq}e};7Y+HsC)=w5_(VTr&^Wv~S7hWktRJiNaj zmt#MQ5Xb$%AX1a1B zWFbf(%X$Nlc`v1Yyy|6r0mRSO_{AD8V{2jmD$2O_zDI<7x5_e>7V^(j{*CIlsQeF= zKUBnSNPeE-v;&iZJZC8LdL_zdB(SZ@9Tj=cq5g2i!HUBak5@cV@eIYY6z3|Qqj*iVR)Yn^uKi0*hmC9*p%@#B$Ey*n-?DwituQyic; zOmVnkrQ!*S;}s_>o~89|P8lbKE5Cb>-hDp{uifX+-hFKPosXT&*xO;2*XDW?+c#X3 zo{ryL8an-fZD!%e@P!p&#o-lKzH6qp-`0Nm54UZcZu#r&+s-&;`?jH{^xk&S^hdWn zJ-x-YqUQ?VZj2`HF?-f|dWzwm&Zn`nTM+^62FI%|fo0@hAHW zP`Is>;h}4vyUAb$j$ObLxE%sKF?@#~Ug`)LV>J172nM+uBrvxF0ZH75@M}nyp`brsmbVA_-Bw%vH<|9eY&sE>yrneZ0kmnZWtvkEY3nHBOr}Bo zcg8p?`HY)W(q9xfrGl&$k=M*LZp`I<^XpkQ;xmn5Z5%BHQP>zx4`Rf zXEC^!?CD5?Eo*MTN3^)s*!F}^n3cncyk64gAIEh1$M8-E)libRJ!pyC*QOZr^Uq|b ze;nKC03XS<6)x(BCoB;0;SceC9Z>qg|u&B zJ>qz*X@U3Xd*wE?=){s5x-Qq4Yx`Vd zY=5>njQMSzV~mD){&+QWhauM(4+Wba#{A~bF-Ai?2R&o%h~ygMQDLjYn13Y1m^&KK z`9~wCAfCz@cr45fE8^S%LP7QbNd_Jy9+Imz589~cs@L{Ti7ZSp1CsYI%ZJ!VbFxSo-8@XhDkKViMlGgGPTi^I|-sryg`16SHLNn~?)6gf0dj@rYoQCHI1zo9y?AE30 zf*6L~yEoJM4;C5;>IG=5c>oa+1VQesgX@0+u_Z@mmysXNT5Qp+%uoSE)Nsl zh>G6BfI6p}0@;PBszilubCvRR6A<>xC3jzfbS#(cz$`?*JNouMKx77S&N&_5fqZ)# z_OrYW?G?Z~dlw_@@*rqhBGW(y)H&T!$iBTNVUKU^v{wl4?6D8RUbB^_+dluf`kJi|aBE)e&@L8DMk6L{du=i`|opWUoz1=fg_QLT% zBsq9zkM>z6_9N>uI8P7BO1X9SqI34?|EjN|t=k#d`>6CUWBhq;Uj`X*vabmZK_Eq{sw!|Q?kIgdGUAH{u%P_`rDyyN*qeSgI=#R^5(k#g33Al4zRy~@xTi-olHzc{*@|Ur}@@vy6-B= z#BY@MBh^1bg#5J1n>5{K#n)8-2i3o&^50b6LBw&CH4I>D&MVk|P37M!{z>t#itj6a zq{s`C`yKE1;M%{8Z>1=Mh9MuUau>xCMbf5B@A^NEQ(4YK#GkCPOnHVpS>-bo=O~`7 zSgp8BQO--` zY^!od#rT>U zru?wt^NKGjlH8{LABtqRDW?_pQ#?Sik79pC65mXJx+0lx%5xN#DqgI}cim6>ZAiW+ zGQYczkU^y^qz^Eoa$Cg`#Ztxk``P+_#(uV5JsaB3R?-ZG3#0Ydp|#~eN}^c+BEf4q;5c8o2I@Msdv`fhQ7Ax!Qp-GV_zHVlYB3kOzsF~ ztkWL1i>1dcgS{-y_P7-c-g%!JdffW&e_!~1ei-Zs4qH|JN89W6I2vydziaRhmkie6 zUJ)!num=J>5qyV!w+v)V(&zv!&R&G~FXuMMYcG%{WgGHkGto{?lSKZ>6q2bW%yA3D z{pL$dK0mQAWn;TQ{u6*`%Ek{Ng?t+eJN4z3xBjp@Z5;qsy>)^fat?>}q>a~qBmhBIt@y@p# zqwA688FDGz-YV^F2^X($v@>9bw{eU(TzyRBLbuG&NwmZju!O((PAH3 zPNBSwc7yji<=jC;p;4!tWa7c(0c=sbV=l*NYg8-&&zqBTyi%Rphya_9S0ZmSzVp-F zj68`w3pX{q6RxjaWdC#a!M%{%2e%A8ZO(^h9_{tPjg~&Rm0`bbcq|#F>aGhCP zD5$<(x9r>Of*bu1p__qXkQ77p8^cCTE6SHO2&bDw3!`>2C1x2veH z?hW^APfy&8X%ps6n{`H}>(r@d&zdxU+U!|f=S>luhq%cT=1=hDsa0Jk&7L)X?u1G6 z51&1Cs$Gj}w_NqfzQoqo@5X!EuIzW~`_=Du+pX4p@}E8K$;EdJ@6jbwhmW!kH+gJ1 zT{$FvW;!>vxiJHgt_31MS!DZBMk4I;FzpZVf%5|f)HxkrMO>Jwsi@G?u2Pmt z>rh|@=~!+Wo>_?Ur3iGc3o>P#0CZ)|M%cIa$bNiLvi1sq&fY~{9t6#BWa`L(I%n@f z$iBTzuvdaO){h^2&fZ#tT^c->i7I;+}ptv zz=IV#DE3x7R8i*1Af52`z>_upG{q^3Zf*N>RpvMt+Fz=8vEucLHH!Bu{z%cSZU0l1 zUsU|1qWkTKH&iBx&2j=f_=se&iOm%|D|S;Pkxl(*MKalxrztK`T&hSioBHo7lFg?4 znBvQduPTz%rk)opk*qdxZ^cfET@{Z~JXX>5tDUVf*>2`vp?HJhO^SKE?(vf3?gtPh zJ=B7He`0>Vj}cob3XcPMx}G0+RmhpQCSSPIX3Q8jr&kaBOmegyTd#W7{O?&>+R*;A z9jp{yol6C5e_F|gtI~}(H?HVX5e#TGe$4o_<6j-meyI;$4Bk!^bLLmLIp|-8^}qi8 zV#y;_L#01l@+SlKedFIwij_ETgYF`E1_tSsh(&i&FYa+7|3{EQz8xjpnqQ-!2w!1L zzlq!?^KT)fQ!SVyoxcrI)NAwxq>!^(L%Yz|(F~TKWHZX$CrFchLm$!qNMv#WA)Vyt zzSN}%V|LbZKwk1OZ1aP|5igtQ#WqME3{`Lh69kowo+BK|Z3ey(hcX2NxmTPFT5tn4 zK{-W+8p{s`53@NT;OBym$_l-(w0~A8MNgC!kpD~XRKX*zQSKW3u|@eCM@wY!xhxLX zJYIhxmO+H*&|q>rO7TuSFImGtkrmQ44B#c2n!*|ecv(Ows$t*&c#x(9 zT90*&93)XA3DmNWCbw&Zm!8*4!CIheg20OqeJ%uBI=XCF3TOKj1H%0V9M>7M8WIUGs`WCPQL*Ptm~r-$-G4o&FE%kEcS3{^#MyZVv566uD<-?@ zKb6e?$MY3-PlA;9HJ=~lJB4$+5tTJfFH0=P{pYi+wG^$hq!-9npBM!lg!_B$ya3lu z#DofMfJ}#1N^$mmNd*9PbRFRN{M%W&E=UtE*MC6p!9_O+-r1%+8Gf`E;etmZ-siar z@r=ztNxlWImh#QYdX0d0c@Q)YLAaR#bxt<{vI|qiZ;S#j!Ua!*&M&u1Gdzl+WVtMl z`$4RNcX<#rXP|*H45)Lu8IXN@V~gyo0`2j!?d&Z@*yTacTnu|insrXM1Tnt78J;~} zBhKDc2)jHqat-WV9gwqmKSgMVD@3 ze%-vN42<%4(Z`UkE?)FmwFeNl1L-C`K4fk#!mD>?>I* zYBTPOw|nM6G%nABmWb#3744x2Dbu(27WmzR5$_!B)aCs6UBQd8E|GJsVq?Ax9+Yhy z)qzsv8p4C}d}EuGz(+i2^xoo;pzdC6`A-}_p7)$rz++3?N0HoW0{neDA`*4c_+ELF zam?W}sy1xgYKB~$F5Dcvmkvw8Y7E+u9y@49a%>2htj5zax;Aff&^cWlzLw}bta`=c zE2^u&ZP*Vr?pZQekNpXFlP5h8ci=XJa0t@VpbC3nlW14YZI`ku;dGQ}AH zN^{JVnEb_r>}oV@`MPM1-hH76c^-#ll?<|)VfjR6PUi0e0fS?e@sOjROdd~NI=KeA z)G-KSTrBI8;>id0<9dKyk0w938DV8Vcq-Ec>BG1^f~N}Dj~@|^dpc{RYSztL&D0?mNFy^ zc7sO=1X~?2BvEzdF3whmw+lW(K)_%tt~Iu7D^|=ocgoczFT#nkhc=nG(~)ZO$p3;% zMQj9Z(lpa^diNn=s{zNIC4@;XHSp>5i4-3VRf`iT^^I8r$Bhwf+3{(gdE}b^Z~;OQ3Q zAe?VsD@3M_o^9`^`!~K_#!3piap~e*%SkA-AzaH!r0e3@bLZ7li1XWJt=BGlL+9EB z(b;pEW*&jPR~S&o`q2@+-7_cP8@3@_%Q7_D!D7K~oINi}f`0rSu4OMd-`FO+XT-Rc z_&N{z;$^>ZI2M5CJvjy*TVg}G7U2?*eu(B9u6VrS>57vSdCk*4zrBd^9SOW# znPU-I-y>8%NabTymazq}PtKd=oT~aMs+Tbn$bYWJqZ*Qq*A&xB`vZBuqMT7|tGF`` zXON~Fs#vLbg5s%);}p+SoS}HO;(3afDt=q>D#dFR`Nhn7-lHho7v#rOeo9e}58~zc z0AJSl94-v;?`ZsX#SawSaZ9q@kWOaO0{JOU`5TJ-XiMNe>DmvX=w18noa5N5+(L$ z`C*X9OD+u3mk<)E6OkuO4ob-I$lSqB#P&YK$uQ$VU}ca4k4Z72)DeC5yp(@ zm4LjZ3|qD*KgnlHI>=zFY)?6Ybipj-YlN#4j1LoK;2ZG_3y$1|?Qn_}ND>Srdvh6l z!8O=e&gV{wf2KI>_tq|w4)WC~+6dhJIR_6EeJWR!J4sxoNGZPN?6VPhhu zPTI$xOdLi(Dd*2C<}$w6TYqWae7CeOc(Ef3<>%xYcPQk1;DLG9loxVs-kl77x#YqC z6}qatum{o>UJA-BQLw5U=VFt{;>81-b|^e*?*WC_hm_$;!s2+sI6jDtj4)C}4i5^0 zxyA&(*nlA+FlFs&#|KG*;|bj)cmjdX3ouHA!zEbBHm8NykeQwmHIm@$M?+?KmA8V| zAu|lx;wlNeXJRZ4p(8xlsi1~s)0PrK4BGNX5?F^k4$8srzeV*KiCA&1u~kNhz#Ipf zIhZ+_{$ya={pOfqZQHybRHi@Kugx6OuWi962#A@1NVpRgiTma|U%nhCV#3IsYtP`D zvnNlfZ_!bCnfY9E9S2N2d)kcoU8l|BL5E8vxD7X&AQLvptZCg7V{lpy2pf&TqsE)q z80Uzjp&Ul2jtP`9AV)Lk)X1v3 zDW}geO){5niuftARrLyF+HD7-0_G@Qmyyb`j^ypOHv8f3Lg*k@k+dxeQsVU z_xIB5CH~bP#`9mB-&lfUfyasTXaR(S8q9z?z9-Xlf#(aAb7S#t$j5z4c&4GJTmese z&MiP-l^5ZHJO_MxlVOizT9*ew(+GFsrx;M@bdw>wFjX%g-9#_K1;<0@ zm%9nC3{_CFT*kX{=OOI!ASi2;W*AWCbh9D*_6F=_zcpwNuW(s=7a{EOASmmj@@>UA zr@IglzP;g|J$xo+?X5-F<)Mx7sQ5}R!Ufkr=iB3NeYxX?CePaYF2c;i^MP(VzM&SO z4V|No{vJh_ZU&6i#X&uYbfKm45W+l0q^paA+60}eE7K)WS)Oao@p#ZZ1Mlz0WUpPC zL+6egc?y)9btTC3T2_k6Vwv9VnZKiP2O^TMj4&bt7kSLFdJ^Rt)vxnLO6^K+lF4CRM?-U}Ijjv|WB;Y$it z=DEQ7WE9&f9-`P?v5z8;8`DcW11nWNNzw686IGt7I8%{?0Q2*CLR_SHnc@|SS1Vqp zc&FmMiVrJ3uK2X#bBZr23SWqFeyj5D72j2SPjQFhM~aSzDrEa1zpN1pJW%EKik%fl zD00FO)604NDSXv@O~)&+&M`?-d-cp2lhm`mIaVe8GU9gr+hA|v-VK-KtGH%i(T2;@ z%{GS>2UP_9m%eKXmcARnC*Z>Z&b4|U>;5H+inoUW=2{)P{+*!U-!GoFBY6yYsxt0_ zm`ny4V8D}{4G?!2lO%HugY@mpl1M!-kiVUfOg#w*f6H(`IgOI}(yH0fM?B}F(MMz? z!iSlqTu#Ddem7JC>>)gk*B9m6}19x&dLVxyN%UFL^t*`9T}R2S+2`e)$uF zG$%j?$1p)+<-kV!Gj8|>Y%}nUGDsX8yAZ+i;S2skaRkL1;O*3^6Ev%xTXkY2VRF^z zNW$!@lT?C@I=Q8YP6~aR$>)}QQt31OUKE(3oiI#0nO@Z&I}GM1=ivpTcrH{DcuN5% zlav`%Jij5NYZ%}|8A74VsLEKOsD^>|@St=Ev<^$yW?g55KpzpPB^PykO;#&0ILcsb zdbX=!t!!mZAn-niQ9%S-I(}P;rO+00fDmG^3p`37kV(Sur6ocs*~;)?B9256&Jnn1 z=b6NJzHCSB?U`ORcG|2-Gj_u8@P_wArdK_WaY99zvE93O56?R~++U|xg?QrT@)J3X ziO?foYhvM3ITqXI5o04QmD4~`+vP;>k}*V<{)$%6%9bF5tz=W1Gm6GB)n4gKR~D;- z2J?Rd$mf(S)0cf`MSFmbTR3I@c~w((&!2kXjm+m`cw2Rjcb>AQ$z}3X`}|{k*a&-m z-$ff$+7jUo@M(DW4Oyys2QHm`kl6P>>X>eTO9XV!jX?;zJXBY~5Ah;g@JPhtwLa^1 z;GMn*$`**hYo^#^y+**hJP4W}Lb#a$bxt<{vI|o+29L7>FTw>+gU&BEjStrnC|NGc z<9-lXZxZ`l{EIz4r=7i}2)jH8nhRl%>6~-AC5Z6t4fE{r z8gcg6ukG^C#%kEBYb@0&=zM!)V2}I9{pA~{vv(uHv{wR8*9r%ruYDyDnL7GA6V~ zBoimZ!#vEmTLQpJlDD-@?H z&QrWnah0Mx!$aR~%HOWIN%6aiTNNKC;yijXIGJhOx6V<)#i z9i55k4AjS?Pvm$&WZxjh6gw%V+B*8FoZ~k04^|wiSgtr$aiU_S;&jDXihN$Ao~sq5 zoxrbFo)3^rzf1A^iVrA0tSIe;e5viVUDJ0eN_!#SAC=#uDD4LM2g)B*JeIBEXz$ik z&aS!Q5PvX7vQ_l%*I--4cl_g+WUI)1Yri*f&n+1@$6IU<$Ft(4@hMYx9*AyxbLy#6 z-LseP9+dODN#S>M!n9kwyJO^@jJ87t4IR`5eqz$Lk2(-OOMJzg_2G_3cJKFSznH-O zf;K=;aXH6;pX226FD1Z!u>d027_KLT()zPxD4hq$>qwFD7sJ=Zyw@l({$lFMMAPIw zrfB;6;1Z^c-QYZ0nABg)Ad)3&0}(G(ZnQV6ipo1OuxiW^ZDGEJmbQYrlKsUz0g=8# zGXf-o8$B2M=$`W&=on&@XO-_UhW#*l22}YTW9|l2(; zG9!Ezh7DmWd={1sVQJlhp3mL1fu5XUErS9}&oR;dS!dyE+9CFH1{oJ%#UZkpV9RJj zxe3iczyd+w?KQmU+vbZp-+a;4Psyn#(FYMrln6yajv~Yn#dSRiR+M7a@arjKDL=Ig zR1o~sa>8&#*BMV>#^l9QnUMH-FC=t8#5*a3QxV1MJ!{|~p9Zrl3?3vow!tn!C_xl| zG9>&BDF-Ei8mT4(Kj}n&M}uTGk1rYvN&;Kb7fn!!(=HIPYfEU4|Bz5T2!3GIcCdL) zJ)T%_b<71qFSj4wL9len#+UFAro z1#2r3U*tWG76bcX{&+0YGTWQ7J}a<21a=9&-f{$k$RUfc68S#nOEI>2;@{dbRWo`H z?wHOSIIw@LYjNGo>KQS<;8fK=)~jzpw^(6bzr4a&&-{YI{JuSV$GYNuk?M-t>Ta=% zi_1%URL`7TT~$?Gm0LKmU+&~N6|*X*#^zMdn^p_g;<26uy$TBZe$^@NhvB56x?=J) z$ISzoHgNVFxQ@v!?dwDurI%)eGSi!dTevOV)?OR8t=rB$$!qU+2%XA{7w;KuI|~Oa z6F4xHG;XsZa!uOG@U`Bm&~+&BiR>*w&pTmn(Z-b<2hd#*qlli$X-Bbx$=4l1(&pOE ze50(4=JGO7^O>X-ASM|lR@%9s^$|j{Zf)#1Ly)f(INUnRJp;EZ)!y<3@~o2*{-04@ z0oKq=S%9nFwU)q;UqzZ-Zx|0Nn~}(RSs(X@# zj=|_#4%(EVimxC6RR_VOT?L7)?+HsE&lRID)!xzr3AY+0$Y;nkDf)IoANP;@izW~B z-3gjy@(~%Hz(E+~-#G}+G{*ZBO};3U1vem?#(b&vmMY|Hh`nVa@)_MwBil!O647p# zSFLtAn!RN^^u0_48n|r?L~Hk)sd%n!h`nV!8m*&f@c)cHOC+Q%KVff4tf}Id9@tyV zu$=S)ixD1wdkY^AXulY(I9{<@k>@hgYZb3nT&c)&iRofT0DfC}o)eV+Q1Qo#k1GCB zk?&Q}{vgk-z~7Tcr+!n@-&Owa%CnO)UEX1VetCxlygadjmv>me%eyN;d1nPE@2UW0 zJ`~8ndO3CwIgSuH{t#n|ofJQ`Fkmz zrFgC)pW&Hq*0%8>p1iDS1DbbKxTctLUSmJ$8Z7_pN%6CDBs)>hhTDlg!Z?bMWGC9c z?4=s@-i`rLVU$3LAj2lX37U&3kI^AChz zBRU2DAIjG$`*6QSeb_x2=$;PlObAm0>_fc%!#;E)z~l8R@VOH~8JLQ8FkwG48J|1f zqvTOaWE~d#<>ZhF-g@C}Xu?!!3Z|aR z6X5HJ8PAa|Cd)Af^cTSLBO8J}!y)v&0(0L$b94y;8CYcq?GW*D%A$G_r;B_vp{Flj zP)}lj$VU-ML|(I`o&{P(658XRP2*Q1L~!VRF3}apUyb8?!u--e^UJ67 zcXO`mWycnr-l@l8ukA2nZlRapWQ#(=qs_nnJ1nrE$YauBJI%-+stt^Jtbb1 z2`WC?%PL~x_@wWtBy4B4NhtCD3*TBXm(_%$B3he{ZkUt)`Ne+AiC@|Ib z!WVz9G0K2OUxh_8`7B)W_#U?jhU9aBK8{Gz5WMSBghbZM`nVs&8bnhDqyT%e2lFy6w_I(HX zxPRPV-n$xocY|@vmZ@CqbY*W2|N38z$NNpo!0I-ThX`;vAw*FXWov7(PxQ- zwD;+R?ImG*8G_bHvAv}DvkAuPPyMb7rvzvd8LT*5kvHd*U!qv4Sfe;!af#w;MV?D6 zw?Xk9#Vv|IQG861eVh5WE54+-Tk$VMoM(Si{D6o~{y&;--f@w2DbUjjor>wQJ_Y<~ z%AZaIU#L8ai(Z}+)Q_$$h*L%|rr1gGShkjdn(sWtQHo;}FIJqWI8||mBA+6;9UR+; zD;2L-I~7Opgw1K-S%xAp;sssTL*m3 z4D>6%S5$??!V(UD&F4--TH0{@8ILnz_K0+MGm`ZUnLfH}ZuChC#kdiJEP6Kn+;ex~ z{|d5P^5uJ&xeIK@+hoP7@Z(@XAJ*1kui80+bC^%OfCqgsDDrN& zg*f6TK96*i^*jFM`4f3)!O;t`^}TI)>m)n&)o!PCgV|$5+{?%d9cuJA`hzVuAb2e2 zbMU{vWh7yb_*Ym%g2qnRKoUlYzW%E+avb=k2M9XRQEN!>a?Qkv0jbM(#O}eY$5_X6 zEc*y5O!iYF9&Wy%FPw0Uv)?zd?HwGEj+edT#5d$Q+V}y(x`ZzH=dG0IvmeWUFP|q& z;Jr0N38K+Weg@*<>>cMoj$8L2gpXkF7=awNzPrI(6O>A%O-jjk21eE{RzX8fKt8+P z0kC(BLLx7$YzOWKaW#T@8kJ`+sZ z5(sR48!UZ1Pt5kM18vGs2iFQMvjm2`8ELk@`=F2e$NjbK9UH;3Og>a!CTzQI71~mFCk&w3hc-TA8O|4*B#TR`ZYkPR} z$@caGTRagO@~xzn$j&z5c%EYK;H^tyX^-AdQM){M;`p)O^Ld`OEFyIg+Y+-9-%8^B zI^}&8ImVD5tTk$#AA ziT$7Z!9e6$DEo_!O>99PCo1n>$Ord>T)t+1W9dltkKTp(w0<6|4eZ&4>Z`~OF-ETv{ zfigAVJ&=~ji1#mUVUbYU%L3_mlEG^jY0rT3-vKdxPQ;oQyz$W%>4`T!cxCe5WRVg% zX~XHczV3}w3J<%4aColIor1KqRiIP+oLmW!`Z*b+o9jktDsj)}#qnBM<+!{@K*#0JKATlB1qUNK8qDW!d?LudJbzV`7E8C zpx>t0N{+Q6h|L7kiG2euy7#+DMgZ6PGIVxwiH}6#4-Y(C?tJt7ZPYU(IrA% zLCO*#)>4G1wiJ>jh_Iy)h9JrkArk(^aNv{B0{{LFj#r7C{Jv;{5wT5t(KsV&ABe`< zB6MT~jw^m(b#}1%8_=sxyqD6j_fq`z!)UNi`1xx3S80?ty+;pxzB-04SCcqoNl@}T zDuI3AgfS-3FiDMa9A8bbue8olovIwwisp9{+1$W%lX&Ok*w&k47;QwcYWcFggTevJ z1dc+-aSagH@t=4PMH^Rc6+m}E#(WPVqRDCi5(cBvGYtb|9)@QT4NZP2@)_OaxqS>zBHH_LpVcl$v&(FT zzL!OV|7YqVTD#{A!Sj1V>@o|`XdMru&k_k~>LGJH>@qn?6_{4>g`bCAhHaeK26Bne z5W5Wf8{33qMzUSTzZj+%W;j-VY`YA{DB59qDT-YIe6jLF6iXE^Qmjy%syI(k-k(7E zRmzL~0Q_yr->$ex@w^>viZr5yH6<-sdwEeoMyJqrs zyd2Q6NxVh;b?zWdMqIq|mf^0?CxUv~Ou_+Z-KBJn2iO$Wnn^kC*+-M#q2 zn55*lyL7MXK9*Ior?}+V15PY$GyK!sGZu5G@)nXTnL!fK@k*EAAM25Le+7HkWrS#0dUH5j!?b9a`;*2K z4hxiS2BdKfQh2$0H)yjq=_{aJE>v@zH~5F(Mwg=%+>vjC?v5C(K(agPn;`Eb%OS}v zW9mzY8MSj~I_~IQB#|$3F3XM~%dVdJ7zm$bi)Kul<+vB{oZZGm4yNu{Dh{JmW;3$m zcHzGUEa=bLnsr-AHufhCE6NfcY-r809NN&DWuGzR(^5nfC)|iA<}4D@a?YsjAm2bd zyk#o~Da--aHiX{@Sw`^71ok9IAaDy1Om6vbuJ;y5ppbnEgx|%Uli%rxqcbw znF(Xd-+VJSLVfGj{jp4V0K2kHbN1B{m(tE)mFs~hK{=adahMWof zKioI8>MH7{)z(d`tc}l|Rapn;Ahk|q{|Pm7W?wp|VrFd0v>Da4v91gH_31XDf*wfx z|5)AZ*)#A;%d}Y&U{r}+T3I<^7WB-ko>9V&3cl{k(PqhWF^6pWmZfuMVa8 zxw-kLc$W`@7iO;}&ucfV_-t?CfG*w@dCVPK=1t1;VtMOUc$=;o;JxbPc^j`9aC(T2 zgkWguQ-~LS5^wZi&>lHu^yPCa=2X|p9FlJRzu>!DVzEjx+8xfsC7U{ON@;b)ELnba zXvgb816|@E$iB*6*OXV+&Ycmw8D+f?l~n5yEQpu)>4la%- z?>|B}x+RVKeJr0uN#El#XWN(FB>9E<9+!RH3hOcCbrO%qK``GcZw(3aF!KH-j);p~ z5O_y_vn4QO33Ax__^tA#NTfbK%Nc#;piLQ&&UbLpZ}CanqrLo;mvZtu7G7ih_9 z(k6kk>&<}~W;^n+Udm0qwV+KIkj_VV){K$RVA5uTxApC6>EF{(UlyX#w-U4|1JY@a zo#YLV2_|hB1h&5YmOhwG0)6X2n=;hV9s0ODzyw3Gt!#a~Kjm@a_BBB?+qVfc%j6?6 zybGJ;s+9I)I-kPqd{<;1-gfyg^5GEF03^JGd}kU4XtwVKi)L~T8qL1(=k_r?gJ|zZ z6#K#U<9@V2H2Z;W#Cn4;1p0m*aEW?ZzqNZ#Hk1`X*amVwKT#j`vrb#za8ytLnF(e; z3~$hu9}n9lk5wX=R`DfYmhW+y?Pt55hR8O012M2=Chj_XQ|82p;uUY=jH+q#X3nlk zy1_!Z4TyZ${gEQajSxCFuS2w9vM&&E3JJC)qCc?i5HfL0Yly9Lq~;r|c(LMC#hHqH z9HBnWKM>a_ay!Z2qqs%!CyI|LKC8H0k!Asw`@Q0OiU)}pkN&AB-@ZmirQLw}n-jr{ zH3j^s%JUstri;xD>Fn>!H(2E(l^>)0CCblGyjW(H!D7*D8~)u>UD|S#kRk53*yg!C=oI7Lr{)&SYhboRz9HaPE#R^4QzgWIbafKqU zYm~23T(7uEk@px(m+=JGLDPS6m_%;+_cYy4UVl>GC6uAecO#XsDd!)4EoI;Q{KA-o zW3Q!LlHvbI&|G9zwY{@g=pNJ8khLwao4LABN64J>Hq=lif25 z<1ORs2feo= z_h^#zP8KenLGmGzB}+&mI^oir`Cq`l5#Pi=?8tqQ1=}^A5Dm*29}W*^S~UDDglTcm zX;+BtIE@2V+7kBx!YNE#?mi7V5_Z6(ZwDDl54pbtdTSwx&aNq-WGe)qdj@nxWhH55 z%xK2MP)2Aa3S`d56ksSb#KM{L`xN5pCz+hA88hbK5*V6<1SgyNz6Gk$Yam>wvD=?W zFL?f3HPLOd4TsGg&iR`d_$IVv?L>AAFJ9Xab7<9R%|;xHYRG zYEB)~Nelt8j0DZ~BzT@WE!i;N2dAZrK*SK;y62derT;{NrT>QnOOt59Tv9qmZU|ek zZtlqxmR=zxhag2tP9njQBwCwXQo2@3qsXzW^7^_ddUx1frJHu7^|)eRPwSFBw0SJc z#bXT(^0dIG4F!|Y8qTt_vdA(mvyqjSrKWnxnC-eln=?zJQ=FmAdt~7ihdlS(Y~Og_ zCA+EH%q@zD!M{ne!9OS2;NLXa;NR?Ix1f2sdqHG;)`hZl&C{F$adqD!3sSUfq4KSm zlhrUM8ZQeC)eJ2u0U0rTES8~JF3-;5n4jYRlhJ7c4k&mRbWuHt5h5=qjPd0Q>PbjX zbVdC%9HXckG6v9V8$*G9QM(`UE**1akTaIlTgczt)6MR3& z%*+L8Ruyr^t__b{8zw#7N;i#S>p-#ujstxV@qI=DRfU{63y3__5aVCMMfm4th46ez ztnuk3010{cFF`b0UUGoslMZpCDaXGR`PlMYfs5&o&` zNOEg0V#sE1Wolco3U-#%z2F|(Z3|u;X{lAA!jE48#s%CcS!x;Q2nywzyGvK z;xXBH_^X^fr+Q-L%+b?kR^?6QfjZ>XYFv|Q>#A^Xg>)Q3P65oUsGI8N#>p-R*ZVnM zt#0gkb7J`9LLR=g;LVtFhSxqX9P+;9<%M1E^+mBBVD1#=_luZNFZ3V$gxiIAWzhg6 ze8-ES1Zc0-fD-VlC2ilLVV&_^%ot{3t~sOQ#oq8KJ-o~FIvzUvB7XL87gK%d#JNYB zkKv?&%v=OB8U?)_-#4HCNk{tw4Yl^n$fx~U1K(Ue+RTa^n28fdmkuu;KFHtv<2l75 zjf0&}URK_~sTO};M>glUy!Cxz>PDvrzsOTJVym&&^~cPR3*-nquyJff^qTaQk!#ad zg|G9j$IK0e^V%zB)>TXf*3I#8s-f`x3ix-ds;H}Q@+Q~T`Y(-Bm}j4iC+2NTGov*n zbiscVQ6CbHxW+#pc~~Zb$WVxAUn$LXxI5%9)dk^=7XA$%?dHtG$ohEoHQNAEY*(3P zBdj#uaM=3ZgFf0>sE^xX^zrW2*0%?`3M_#kt5Wiv1iQ;O4^!_XyT#a8+4L?oT!f`AhW-lK(h?{1H(z!_$TFR?ek1y z1H1^f!oLM45Gas!?7QxozZoI{b&l> zI_%DU(ASW8n;JZ+7GdMtpgc_$=@Dx;ys1n%$Qf-OHWZ_`}nPE0$oT~9+~ z8*!{jp0}}FAs%tw2KQeGix4?)vs#hk#_^c9;d#mVjgg9D6e|>`D$Z0~s7U)0%W->% zYZUpgN&X(iA1FSe$iB_=7ZrCYzNxrR@qNXQ6kRkR%ZZ&I*jD*76e|?Jt#}_1%r5$DBGjyuPFZq<;6aae1BItp9H9fclRtuCwb&sC@=PT@Ew&GyF7UM zxnn+B;E1D%*uHT@j6YmAMEPvR1&WI`eWmhih$wff%EkVUaQ}SZ;239IhdphN_6lvxspE?gki!9|b zj|jX~`L8Q(RNSQaeZ>b9w<*ebfbu()m;Mj_4dr($zNdIVF|7T=%u~gb@1#ioMBKg} ziu{f?c{vY&avlIjsGPosnSPNXtFinL!-|67W*UXyp(|ADk$6I&?86gw&AD;6r!s?Gev6(=cHDbk|N^!bX*6|Ys4 z@jczYE;Ank(VTx#yn0h|)9enm zclwllk&F87i!7YG@1BKg-wA=g8+>QsUwp?)N@tooz@+lK!N0{UU0P1l{hpVxegE6; z^v?V4p6;H-9P{_BT=@Qu$iAF*`CAX{i%)-OpELbh$ouSjYI>J_=?kCQw-VTS;nT=B zf8Wy!AA84Hh_4KHY(6P}D-dBK+fVi*?9K;`pKrDkne_*^9x`URk;RZ=+Uq((C{11@ z2&Hc(7fzdu@}67+`_aURNwPZ#(X^hdCz{U7V8WdUYx6GTU&&}ccQOsJ|MH3G>}0^Epr!AP-f(j%Cti|cLaHcn;imO${piwP)_8g zQ_k&Pq%=SRhrMh>om(O4x0iephc^lEwL%z=2v;p`J+)0iWC_fzkeq{vCL;Ll0)Mig zCES94?nu;me`L4!hj%-vp4{Dt*rbsF3CwjHB4i_ciT}n6WjW6KBf8<&;r&uk(4n5E zCL6`h-ClV7$%su%oLoMa%*%b~iM0;)0*j-pb@12jVpKT9C?B$n^0<^*MtSM`ylqFv zc@fw3My^*I^BTpxc`>hLo;N+_waP0l$j$B1Q)2;FIyAw@k!yxwEktoX7CX?+E-M~- z<$0yC(lZLZg;TuDJg?g@@0(Y}ygxa4A-snmA5T7tDcj%rq-7At#cF)0fj(GdAWH+( z2dmh$gA~3Sa;!xU)=hwuvZ5j3jO1gkZQv{VPT(b^fp+#2cJVKxU7YunCh%fY(m1*z zbPdklk7El@vV(J({s}v{X;Zm70@DSNw;CAtB>4B$$^cBh?n?7w%fNg*E+)uG38n~auH+7d`?eVZ(Oyt6U-)`2!=@@Ayj`nEtH_mA7x7}4n42%2T` z5g9(jfxa}Q{g{3)qMdINl(S7uU>f5VMD(c|Bj1XAXBq~`JPgku8k+n8LOaZ=RAzYD1wl7f1{7bhjp5B1Eg~R&$*|N z&|vf#-k>f2EbQCOP!ZeM52lrT?(^`m!ur`heqf6wLPLD4v_y8c5yy}u`?i0hlW?)Z z7koK%BXI1Yy^`la2*-=Znn+#5wnQZIaguh{?kex4$cGB%D^?t$$Xj^I$0$}PPF3Vs zz;t=|2J&1cf0N>Einl9nQv9ysR>jAOI8UEee4dE@xkJ-`tNbqI-%$*sp_ng&h2P+TGc#eRwd6bCB~ zRV-H=t7z=AmC8?7oTWHd@d`z0Z*0#>pD&Ze z=S$U>(C14|d}v%ey^O>={*NB&_vNWKKVo~!?uXq|K)8Q|V7v&D|6uf!z76@cXiqh1}?!glL#nI~X-(z>J1DACTsTFLk33M}CAqC(;N1S4Gh2oF$QB{4b8M zH!q5`huSM6A3?IvNpA`!Jlov~PTbb0-Gpf>(I!q-mb}M)*q71em3GUziIKs))Q(aiu-VDh%|_QPbFsO% zmSh*;9-;B|7`j54Yf5m@X%bW*uhI{|MJFc>Z^Cm25oByRjL#Y#ywBHX4G#@#O|g#h z<_9lh6SfN}K5Lknu9wT|Nxd!!WdvVC(n-o&@IyV=yy%x97-i+6Y?q&%;48ZjR1jjI z?3cC44?;9AC655j>#yObf?i?qt3Y!=^gjH>>zUVRI?#prpfFxE4_pfJC0&)%`F za92}ZQCr*8w zd~OxT2acNuGHu}OIj|V#miBcbjnYdqLYe8!aQE2KZSA#j+q&)Clf3qBhtR1mZdH!x ze}@D1@%O)@-R6Y-8m;RGxe*50Q2TX0^0Ew{Wf=+)?Tf3q1oL8^!3-L@;)ayZv$P8` z4`UQDj%c<4q{9aVy_%B^(n>(v`ih`$JMvN=x5enAjU-7Q9!qvXW`aqpg22#B`w02? zKAs6CZ4v}_y*Vu*Kwj2Mxv94nv?&A9`6D(eMnZ#0qYW%c9~y=CzSNh6X!NZFZOVXj zymUVwX$F(F479B;X6fUjz0tScDg)AK4t-AMxP}T z(w2V~c5b`AFSGxh-PjS@xeKfv;&GL?4H9<+NA|~KE&)mR3jQKy+c(d4sO*4_!m;Ie zyz5;|JvbqUD2`MVTQ21C&Mk1N%4aI_B^s79?|iROeuLsYidz(aqWGBNvx?jw>f!Sk z@eRd2iu)D+u1L!e^M%kciDJ72ip>^yipmQW&mzKxDYkOpK=L>NOErC*@)MMwqCDS= zqyD+duTT_28{~8aK|Sj=pV(x%3rH^qv9=! zcPf5c@jk`PiVrDDKY+d`m48-oyW&p8KPtYdxKHt~iXSQ(TYgyElO{%PzZfxrt&~4m zQThkuwC^#W^b_D9<%cMaQ5>&Wr8rfwPLZZj>RF+*pLzAFS9=pFcA+zw!MuU->H)S17Jhq?MD~ z`Ax-p74KJ+wFgLlRQcx>%^Cz5&v5NG{T+u_^znK~y-9NrxZs=fA$W35@e$PT%)`$? z^zGNXr%XXK;9cYwa4khhnuAFA2s&SU1P%Wjd<6B3$Ku`8ul%7tg0?j;i#va7;=nu5 zdCm`XPQmgO^ouv|!i@x)8zJmo2Ey$Fk{xQ42orypPY|DE`h~)9dIfr6!dKAU$O#+& z!+Azz_B@>LVAilvLK8H$-ub`hX4=2*pR}lNT`U>KyqP~LeBkB7J zDy0hFS5RY?^?e0#SPFavZ9#5q*Ut#ia9=_=yb(FTO+@iDH|<{mBvlQ!GsjZr!+e(Gx|{RgCdUqk74AW?k{MZ-m4 zGWeJf_!{CEpK19T0v-4o%Cvk9W$_|QUqig{%~oGSESzoo8fv7zhB&e~jkn^D(?U%+ z$>};d?k!+k?pfl!0rx+!4^7A7&mC5Ulo-;QasYDAXK~)jH>Fo5cQ{iY0ozO_Kt>D) z`%kdVxnjW`NtRA}nsdoE{m+qUYfdfP=rG@ob~Z z!M5PkXD8%maA$6ZsO36{xN@TYZiScff6U_HyS>BB}q0}^aLaCYR(FvvI z$rDN~QvDmXH2#fR`TmVs8~;XaZ2v~Ar>*gD)Q&kRIVov&s=YNkb#kz^!R%BAYj!Gv z<6+z*$sO!x`Dp8DgcR}FkqVrCEv5N@b z5@{L1Xebx&LVm^NkOv_K%6L)oRg5=veQYmEEdMX}qQtvVe?Kn)6@(b5)Y%@M+h&rC z^f2KM??uTpime0LC3M0+ud`TmK%gr4H9Fx%$+RunLjn)Tbi~8SYasswUX*yb-Y7+b z8=N|@yx#Rlarkvq?_TZC?OcyC658WmE#+C!#s#ASD#xKaR-f zu@Q(S+zetJ;%$iBZadie|A}kF36D+ocRCLJ`i5m}Io=+dUNDP8^6*XEB#%vZi@&Ac z`i_}43G=#mY`RP6-}wm}g?ULlHr*>8n?S3_rkf;fZ<5ER30~fKuRPB?e?Y=-Q)2py z(^81yTPT>xI&_{<+!q~dvPxR2p$?#e%97_MkK_yL)4G3}I1$r<1x}JnsbCXQ<`_SQ z52!%J(Iy)cb~rd&NHl%Y%%k=2=>)Tohj$t^abo%4(W&3%2sY%{vydmeNzIy_3#Ula zD(iA9W=yN7oi^*zSniZ5`k9~H+G_uEKakN`lFd)4$*r6{t8Pw3W!>4cr%Z7U^C1xb zKz^C$C}Y-zgV&AY>t{-g(>M=KtgkW6ERSqpx*$do`Mk$a=tJ;t^5sK9nokxC%x7QU z!y@(Vx-b_9VGt&`_y7QqI}he#eY}@2xP`v)W>Zx`gs3u z>$?#Nd>A&tkX0%9T0u!GD$!u_O#*M%JE)!GY{T}kUdm0qsq>TF@#Gvbr`MTsZY<_Y%@-<|Bax3!LeU58 z9~-Q8Zhu)(u|jdGB8`vCw@}f{ORiRajp7EydlY}5 zNb4udv;PxcRNSQ~^H7k>JQVPKm4Bp|iH^u}If^px1YQinz*AM;RWVPow_>rPnU|#J z4(c=WkasH2ciJg`n}~Ul{fh4qapL~3rptU0_(mA3n7=g<%E8kG2=#F7AbDDI$zP>-qhiv05C-V)sr-kETNTCk4$_}f{v{&z>(@lc zd99-UcNPDk_)krbVi00_b0W&MR_v_u9*X@G&(`!}#bGKhBci^Gh}bXj$pgL9lo#JT z;IAN$dTvlT4!`gm7b(YZE{Ne!Fs9f^@eIWtieeW+xdF-#R6I{{l%n)|zSx1 z{U7`c<#|12`h3Neiq|X3d4Tj=m6!7Y{6^)!r}&?Wa$X?)zm=Es1N;lh%XtF+SIWPx z_y@(e756K0T7lc=X}`@2lC;J zaiiiU#qTRVptx0Wo8r@o&nxa!d_^&J9`~Ti#a@H$%3?nSHc>oD@hggFDE3g~WC`=1 zuUM{Vd|_Rpyqt%~C+8n8yDi^58eX>w|3zN6 z8sc;7{e9aOzPm5yANag1{BC)h^B;L&-mLH7wJ;h2PY1zwsU~ z5wb*Tx%v~J;cQ4TfYZzvfbY!RlR`iq6ER^RyF!No2-nv*wGt3#C+vfgS?OI8DvK@ z_0NcnWm5S9s*fR|NjDJgSh8%e#xhS#ZYmRBX5#p(@qZs#4m0j0Oy!MClW#)iv%Sbh z1D3;P&OeatZbSz6j;5`VdIRK5vqAh4M6*|rz|F_)g3EbxI9PLKYg+Ihg^o1^dn9jS z$8!o+XG{H$$OO}r!K5l2l5uLYQSzi}PqTUZmKXg!=Ri{+G&A=6o$P2A+<1~Zuib`Ei7Mq+@^MC(Zm_nGW^5|{W) zPCbb#L`?b+W(hfpun19{nUQ$Pm;W5V`;L@pQ$Mwgz#RTuX(DeKi|h&#Km@@rS#Fms zuTPXLw@a1>Q$sAyoi+Z_NZ*KPyZ!=uNS?d=Jbbc|&>sJ6CzKm*+6#24X)emyT5K80 zX91Te4UiDUe`7@Tl}6G(92XFLBhMJZMTp`njoPLns;@MXb%;0u1i#ro2VZHMQ5kk> z#KSFnzq7rx)7T{^3}Dkcu%f(b9%U0f{| zvrX}5#e#HBN*>E;T(IRylXneq9~YE7+ML}Hrs;yRI?eVm+{^_!TmI-N;LQ+!mwHzr}(;LpSUYZCWN6vI+u2Gwoa`pt}(h zOxh#}?0Oer{-g*xSuf?L-dfP63`pnfbjOL2&|uPLgSYi zk9JBT+1G2`4&+rj3IBFx$oFrV#OF&Us^=ba-U8iBe7>H ztoT#KClvYU!|mU$NIMRBnpuc%DIQd8gT|!1vtlk0_S6DJnHS5{b$iIil@0W5H$wAs znF0B)Do>Ld`FV;mFMx8_D8E*5JrQzQuZR5iC@=PZ@IO+1o92H~`Clk+?EbHk$H5c( zKg!8G9PoY0u^+N-3-vIN=lM>Q;|*kAB#+@zkPrXlIhGLf75gflr8r1&h+>)I1&Xww zu>54j%M>~8Q$9~o=1IX{t^75LH!9wu_;tnG74K8rtoV@PPZXb2d{$BV1M1nS{GS!~ zD88#Gc2wj`ogb2URmdA_yT%l0x0H5LEL5aPk@6vmV-%&oKt5IZ8HzN_GXDa_rHU&Q zS1aDEDE$ZdHz-dlCChJC{E6bDinQ7?{W(SYPb2@5;_HfBnM66Q!o+tK4=8@5DD$~U z7yC8P%p-Ngy#ve9E=ugHm^z?vz^cXA#(7;>LHnC9Lw^|h%_9gMi{0Dh^2lE3U|yf?c;YkaLFZTlq$ z!sokZJ#jGXez>E*t`2;n$)G*O;h(jBaPJ#ejokC6`RyJZ5MQz1DT>95<82<@HV|tB zi)Do%YWnS)1KGy1O*#isj>b6`0yc^rF!^ykc&xG8KnSJ1%vKDgKMqb@3VMA4msVT;r|t3cm*LE<{Da=FNuPPaO8F(Irukz2D?JAIPxGQiy~pDy)we96y{6h z!&d5N@HXmN;@%8MAC9b{S@vxp-1EN)@+Pu>$Dcc#sXIV5^4H)|Wpl(voF5s<`bHx*{vPv= zV$msJo5-@du}pQ#k+UZzR>*LXAJ|^X?(^9~WqEDN=?NJx77Xs1wh%St*x3Sv(`*Ta z-16pT;aUq<-YhZh3R|+4mfU1y{36Vn1k)G6M9FRbL`in?M2T6&rmN35Z(@C{h4UuS z{#j=+6&LfQc@tgAmY6xgeyiWZ=GMxx7QvPT6De527Wh4s@d^_uMCrE9;-s^!6&uw5 z5=>7aM-%!WVjiWYp2PrOPKXP631K**=PX$y6DqtLaGgtd7?%n;iop6H#eWc3w=OZ8 zBIGy%%lXqLq?SoS8Nt`UvoZ+2hH?V$DO_hfVX=^91f#6Ho|Lbl98?fk)LubFo;wh6 zMy(B(tqq%Eb{4M`Xp#9(fvoF1ytG_rEra&H(T70r-eaL63q{I(oD7yjHQ(y;*r)mjOkmpVkfEn894ZPeaRc zdtfHvvBl$sMw)Oz+h{WW&tKnG<%yeA7Fh% zCMfv{W&!*KI!BpcNpt{gNCQ9lK4V(VL{U6jeEZ29NwAT}Ue$A`Z$W$BKuik%FWd&o zC*7@EaP^w>Wm=Gfu{RshoTL5eGGqUAyXuc?8qExXSv0 zw$3P`v4Iw<+ihlzB3I2WIl!$5DiT}iowI^CeQ6-cm~mKm-g6!9LTsIIE2A|GzD#Kw$lZwXY z5tNO>hVWJyT~YK=KkKyh4M*ZRkeOg_yO9xX`DZbYVAu6!nKv-o%yvCZ+h_&wi0g3@ zcOpmj7ica4NjC}pD_-;$$cM1wxelio`nWD4t~gq8ykfN?pJkYDz9OHY$gfshqqsrw z9>pz+Vn;^)$CQ6oal7K{if<_HQQWWicg2qsL+FsKKSQyl;wg%~6w4IH6Ja-;pg4($ zlVQ51*C~I6^2?PMqZaC+8z$zzQ}KSqEkvYqtYZ3a6lpLcFLqv_%p0J7K2UHy3hgmW zZ%2eYj|e>sk#kCBflc2Yb;v4>(G#r}!|70*-TLpAmAIz+rs@vDkc6ym|ik6?ZAVskm41uZq$? zP>ur?%ZC+dY9r5=hKXGi`6@H{zKUll(ilhiI7M3H$V)!~UatIH#YKus6|YmgL2vsfyeFbOsY^a^RD?2|Y4M`mUQDi?@xx7g*gN%PQGZTv8AZi5I>D1Jw&3Z0x^#lWxM$qzGYmFbJ0& zhm$?|B24_jB0hj^7Wm#fm7E)?LlzjkR|355{5x$NC84yRF+G(2eag<^U*8%ggwyg- zjmLR3uir9}q|;pN{h5EItk(M#imKDSa2ns+^Oiso?me7|D@hhtlk5Ub;SvtzUSs@) zORpn2gye{I_=i3IMs9^0m2Mgh9}r=979kow6U7t0_qHOZ6XATG@x50D!Q#k$kSvOv zgLb+y@-!r{$M*tbeD6(#$oSq{N?LvIEkLnk-+Qki_2c{A<3RXneeZR__PTNIpR<&I z2yO*rO;2UQc~wY>LDuwk5bltzAUBZRk3V-PQ+ZYMeea#m3s4ME{O6So2UX*9@Sj&+ z1d?kYnzQxY(bU8VM{%du0ZeC#CvvT&xU}QREH3TXCB&s2iB=}3xU`FmSsT7!EiNPC z7w>c^U~ntA(5vk_C>I5zi~c!YZF}5i( zei0@nz8D_$n!3&0@mUvUaT3G!s7E<2dg43t7J-1ohAlJULQ-gwwM zImyFb2WuYWD~Ha5#H@J`xo^?$KP|3`4bv6`_HWNww5Xm$f00ih z6d^*sKur1UU&v3mNaRbF)RU<6BmpPim@rA} zV9JKjLZ;zBFY1rfB19~pkbL-yBeLN_&XOg>2|mq+lEB+cs&kzS357zACvby2yhb61 zU=SFcTp>9Y5tAr{ix6?7Tx-91Ybk-_5-)LPAAKp^2l@w_+i$iRG%t4&PRBpxN7yHB zsI4}&>9~*V8>!WD|LrCQE5Wo&O0)6eDYH1E*M?balEs6Rz)hZqXsuW>wKs=Lf&BT- z2Yo-tKk0*R=YG(w^9Ox{B}VO0Mg~gsKogc40>~ENm7NEIEnxzcPe+`A7&MnAE>$G# z#2|3OyIe!O%gJN+@%AqFET@g~Fl{8WM#H=oTvYOaxP{xXXc*}Gg?>)l$Nk9AUef`^ zNZTmg#aSiqnLkP_h~QnGnO_MeD3X?@$oz{qFFVv59Oo&Lz0D;r zJ^73szy%weGGX+u@cDME2_)$oC!E1m9{NG1SnkZqnz?6J`d?w1*%y4>)VVV!1E)Yf zrDk65+}fJlDtsgsk{Por;OTAhw6mvH%&CgyURpK3V$PJ@p0V7Kz2M{RxH*GMo_T_c zGqI=DeW_-ivN3|&^G-1i=^B;-OB%G%!#eHh^6a zF@1ph8$a-BYzLE%S8CD`O=P~MN)yaAo;NKp{RLrT%Y^Npc^FwAZ`zD*km6Tvk=Y0< ztpv2KZ!`35#%)Dw$hj>>pFGBaHz6Mhv`?8}$SMd7&9rA=|LJ*{dM6>xu6Gh{?u(F* z^-^x?tp#oC`v-O|2AK&aZ8ik9zKtg(+65-lK;KHxrVMqoL!lxP8cfN1uB- zhA%k13HGm*@`4Jk2aYodk#kRc!uc%bo`yg#=RQgmFH)>foTA8ag!vXIUZZ%u;;oAJ zDE>h45k>ZUmVZ%km!ixmK)z4;_Z2@E~y?UFSE;HQ(v7(Yu<)(Akpl05Jx#dVr))(YIOy!d{@827a1 z+phQ$5pr1z06lMMe!fo4`aaTpX&7W!4?p-pO!fH|Q#sAC)R#}h_V-u$xylb!ek2k4 zD^-reC_KkC%6VT!Ju9~9qGd`Iy; z#RH0*bKv%Q?7zT9icJ+`ik%b-75ga;QXHZZ2i?Sf{v1ajBxr!6JRN^0bsQ zf4!oaOS@Njn$DU2S*_KPIb7(^(0**@*4itduUM!!K(R=Xwsvmc7{v*SlN4!vXL_yT zRf@|M<$Of?TIFevXa0K?X^kiUxMJ$s9J40p&zdg27m=Uqlv$1@d16yV-a~#IUutc% zzu>k)^u!d+`NjJk>gT-)aiJbB-g_KwPVo@mXh)b+?2}(u*w8t}!>!%PfAEIr^3A_{ zr|ZJ6VBJpl_>1p2)7QS^E}XLO?&)3jrB9!?@1BKg-w7?8x39~>OTn*w#{+#2(-!(` zdFJoyyzq}ZoV{r|O|h0Ief#FO-G!2R*8F|fF8p9eWZ%v09^N-);nU!ZkF$~c;duDf zkKyI)Q8bgk&Wr@+AKym%;pb1*$4FQKQ;k0Xi@Cg~38Azn*xI3VImyG~?#$~0k=Jh= z)5Gb1AVkx+mIZT{Qviw8JiKywoRSWg4EJ-(JhvPDPsuGG0E1(-vqVLB7la8vXFmkz zM0hQ{DsmdgB@tfd7e^LDvMBOv^t~%1>7X%B_;Yqd^>fx8BKSG`2J)((vtp1(^m8U- zVBqJBBeTo7Hs666(d7(#qi0crTgo=z!&swDkhvokg1nFH$z(?|_0NdDpR=;vAY(`n z$7bc^CV*@55(sxRi|z(1zRG5SVQ^Q8ud<=2OMI2_{B3p@61WMt%!#Kq`YPkjxh?n) z{31+leW`qv@sMGfiK9*scxi_*p1@H@e3g;l(FPN(C(+Mmvg=8d_)JbciQ$M?H9{CG zf_oXCbm{%q5rpckk)Zy8qmb1B%6-Kcp&U%Y%e_iTJs7E)f^~vU1pC|LCc#Z3@z~?{9$UZMF!yXiuVW6?v&~=Y7wUFZcD{1oP zFn-0%n^q|11QRI9(>7mBk72>aCe8MwEDDkxmPI)St^ zLz_HfcI9QGk>(_?^*Pi(*wNSa{9F433no=+zf=<`*%)H&d6YKRkjoMG`1k;$@r>u> ziErtc=EVg}LKpl;5%D-Ffj13yF!}N!BpuO2=CiMeyc=NXjtDbR5b9u?q<-43nTL@) z?-7h{kj^f|Ut0o0@&?7$w+Q;agGB1%witc1@0cνbrCUK5OtNf6le zc4~pU9pq)bl$&}}=TGKfqhd%m!RVU}fvv9)igF;MKA6n{eJeqmG9aB>ppR{Df=T0@ zimi{|EGmMG`e1$w^zlx{lmY2H27S+20z>ky$JVz3ip+6qf;6+gn?SRS*{0RVv^S;w zn0|jszWLZm-t?KkJd6(`qFHN<{6*wz$oxq*1`hT$6S#d0&mh|Su^Rhf+8Kv1*pJlt zlTWgCr@88*e%5KuA&?H&?(p0)f%|&6V9P&?`4eo0^PQk#(@MVJ%d(b-ZN#zWh(5q{ zcu(>HW`=zA0d@z#d(TXDy~wzN%1zt+ZB19QQr>~d7hB} zsp1og&na$Kd|B}|#kUj>Dz-smQcq{aTq5jz1&T5+lKIJffUTe&l$W&@sAsM68&v;B zBFtLggS@e}YfQ0|V!mRb;sC`WMKd2j10A=U_B7%o#i@!j z6wUm=0_B$~N`FAP)ym(jxL(op3tIW8pVxM2Cq?NWkZ)Cfo8mKyFDUL*d_{4$;@gTJ zC>~S{;hM#IB8rU^jgK$0_N#-+yD8=>n)!o%%F~cYeWi+K{$RZFlNF~Z&Qvr$z-WJD z`D+zZ=Miw(hRN5zmN6d#(VQPh5Vv3y2++DNuAQoHQ(QI!t6yI}A93}dOzcz4hh8Mc+wYQv0Z)rPl zZ@PDX^Y8}mYp=Z(Qhv~$s|VfGJiIOqvhd($$dl%A-BISdIhjA+5xqSNGY9E+wA$~v zO}3AMA24pi$UW=&58HFiux5KRLnHTm`>cU`vpo0AzwF4UfBG$_WA!K&J-G3w#wa%nQiy6H2>?B}3`YL+HtoHom`RBEkEBd5!O{ z|6-okDKWmk&Sv3gdJ{lmwjjiU-TCMH{;DEbGLD52v1n-;RfN-Jd~l-|AQ`KR_KPsg zY~bcWn8tiz-*;CUFDhZ*cUL6Lkt-73h5vN-Ui`bmkm@)bz!==4rzY|Tvea)oWvlT{aB$O(-F7(}*-=Pc%! zp9md5!iY_nh3Gj8!}TP11p*V5xB0L4ne2KJcl%6EJ&FHBbe)R`KNfNn;g^VFCMUsa zt+(RAVfh0^WrRN-v3{&3hiCrg>C9t7>iU@Ny zL2jv>gdLnGU?!s4!AWv!(QJe}gq%RQ3lZxsuBs>DACC!yEr=1cU<7`!NORjzn!qmY zIhS8mPhyWR$G?Qb8L^qg4mSS-oEjnL68<;vs~461C)CWDed(NvnXxI;W>nY4x-RI~ zr`v>zx|!88{Qp>;ZS;*@T3I<^Rz=;kdDRmN^ZMl#6c+Z9uS;AyYi@2*&O^U9F=1v! z<}FlJ+0fhXB3{{EsPZwc=HDoo_uk~lc#xe?(j}oHloLaUUuHu z-k@Pg?x$pFfEZhki^bSCR@)z$INXQgk75nC+i3EP%Lc+On{=di5>n7UM}=80(o| zP?+DhXYW{7d`O|XqPDtQ>|&VedsNSyTwPUFU6ornv0v`wITf=i4_$EJ6!*h;R8fsp z1df{rGHsy0_Mo({6KRxQni0xOZx(Lhwsc#2ZQQnQJNG27z1tzg_w;!0YTJT4StA<< zHoQ~6B6>~w%E+~8tHRfL*N6VYEp9vt33;_w%&e=J46K{u<5WZOGZ0Q5KTq%EO|GqV z65oXgI`o&`Dtr=}0L_PMiXRFU4Pf|^a0>pJPww!5sri`3&`_IjcjQg2_ifSO|Amzv zr1?xz429^czyw1UL6BjDz^QmH8HL1Fp!vu{eZ2Vckef0fo$IiJ>quxYX_LVlnn@>P z$4g9OSZSAlw(ETu#=)h?$9h?xsrPcL3`l39K39=uFm=rYZR_jT!hdd~zDz`;Z-rF` zq;nPYVV8qo^eu(N);Gk`$8*N$yA8A{1Jbz(`hH{y40#LEY<=UQkNe5(Ym8|0-36Lu z@(~#Zr{hCtDecGf?<3mzz6<4tv-SQ6`EUqo020#B7>BdmCw;Px>* zg=p``B&%JFZI=6m!x{8>kj?_=`xOZdrY@qjdrnRh>^p?5A#aArdUgW5JqHKR3Wt900gYk>Pe$W}z>}U~^Et8}f$iZ3 zws<1&`we#B_aN-R?>(?x*(Q4sY1>V{p-8gkCI)NdU+YHKt}_OU1TC*cy0D zXlv}Q@?MJl6^j+)ilY_BD^@E`SDdf7L~*s^8pREY_b6^r6dND5?=j_{Rot$~*VMTE zzgPT+qKn3%?IukzgNV+@Cwb;?t9%FLyDBd>U8MI_KCU=M@j@cfE0sreQV)9&>yvf` z^4OB+V;#}hT62{zP~^GE^Z|;46^AO8D~?s1s932uL$O9t+8O$;RDPM_N=31mBYmy% zcPZYj_}zM zBAsQB@1=OI;y}fbilY@LD$4Oex!KAao848)FIT)tajl}*)=}<$<#`QY{XbTuk%T;7 z7A5{#@ioOa6pan_FUtQ-@gqeJmMovH$Zz_RZ>?y)yM3ziofUg1_EMDd8N-w5Z)jf8 zWBTJ|S|5h@L*7Bwfk8YQ1-8n*hxcpLr&m6#m<$d0egH3oIQ0qz0$XJ|{Tg*M9*sIV zr@^DqeP_fw$Dcd+TqQgjEh>yZeemgl^k{UldNgwOJ`1-qo|~~f|HIJp%=^N@7b@K| z3*#rp-{0}rTh3ru3DaREgtk3z{()^Gb%xz%vES}MFjGMAB(wu;gfcFEEKP9sl}X%!F_nt?3@Sxz}%|NYXiWc~9`K^eRfCX=gCc#rzu~16wqm za|{W~A{AP~b@x=u>2HYGQik|bK1 zTvGZWDUBkZ^hN3;8EEB$0^<=ijk(HLER$Kqm&#pVPxqRvQ z6ns6P2W}x6AHnw9B-!?xW3idIAxSm`H%m4JH>blN+c^+E`s{zshNo65 zs&k+=zE_~OwhkTGpsiaQK9|mk>h~pFSiw#KBVxfp#fTz(G{4x+JL`PIm|#!|<5}0=G|`?yv&x zvA*3*as(nQxdgw-E_bc(YhMVl1fEWv5zQ|8QvWpLrgL|Q{w`c(lDQ!~q7i58+VHrw z;ZC53So|2!6D%I21m>eEQ_h$Ar@vNrxE5n|_Ex4Im_&8Potdwgt!p1ZQ=Msb>(dTJ zNQ)!Nmch!;V!V2@p%dcih&(>rBRf=C%nLZTLjL_!15M(G7>qwp zbM?Q*Ms7cb9dEBY{8+>PvG*l_RTXF3=iGB{as=Wy%j;B!4)unZ6G@!^U(_R={=ro5#M4rb0R_8V_vDK#WrxlUumF`YaNRgq5G65%c3+21%) zx;99YTCRO}^AS(i2j1AGehd6trczd1PspH?Le~bA9p8VhgAhE%OGlFR;$7LccR4D` zM@-|4I5{QVv#8LkRg}vfon0=!ugrA`ST4)sb`a;o8`}__{{cr3r=ZTn@ln>cHyHh^ zT!hgcdgGzJ6_8CHh|V8juN4J#CTNAx)Hb~3s+|lsu-IyQ8 zKwrhdihL|&IIjo7M=SDxrM^&cx#HD|>lAsuFx`(8?^FDp;!edsDZZxowqk`M`7PS{ zx1x&!hx!SMCo9SvX@pN#U3gaLGSLPX%t|~f4%!`>PWV>n&#L|xB6L|N9{E31{Zozi zaZ)fogNXQAs>@my(1lM${OJrwxrR^eq3QZ5%32mkH%8N)uQ*xbE6qU#*|AK+IiAY$ zZ&19Mi1-bv^P0qRf3El&4S!hiX~kU{FKf*py;*Ap%`EwOe$x)GsYIUZ#JFNJ#nTnr zDa!GLblp|&t=La-xFR1=X-~*cpc!|Vq2aR?NzE~x5TL+Ss((*WjyHtgqPiS!(C=0K zw~E^ppHh5Q@nywV70K_hyaS3J_d9emj!;AOT8bn98Q(%NPqBj{Svtli6ovkUE|WHa zsdKmG_(izk)k`$rVns8qaJA|`P`p9$HpNoK|4}sO0Xaw3$BZ*Pr}~SEWFQ&;j-nj@ z&_7Wj+$>@eO_-dGFRnW$FAba?|tn`xgw`-MK}(Pgi}^?$ebYwm6X1 zvH5{$N4NVvtfF$AjA^8m^{JQpiF?Y1f)fw89Y5JsYvSH*Mg68E_P#v=H*7QyobPhf z!JP)t?lejqek75PRnBpbchkBG#0D^emjl1~5Qape{b0k3q~F1a`i$sGgPtFigK!5! zx-FKF^y>(*C>ILxV(Db-b@0OT)61YmcwLFMZcUM=V6<}qMKbTvUKdcjiDJPVh{#f# zcHCHJG3WnU0{!-cn12rw@^nutac=`ed8tafM7~}eYvDYqe8dbst1Rm6P-}3Ei9JI0 znB6JGs8Mb=1Z{!OZG)dj;GG(5OQzuQ;ZEUOow?^B=ymuLO?b^I&{%|~XWE8LKlM*0 zJ(q+!(S%ES)&c3c1DLi6)6X~wM|kcJ5p)4F@*2rC+H#kxaH2_B^KOJ(i74F2X@R+0 z(85f~%^1nO&g73{bIu=I&2|B zBbkR72+6WWK5!khzxGWw@h* z1dSl{hYyB3CR!1r*vOJ7b5Li?i)>#>W>FCLg7>`hKv|kfGf;J=4 z7-U{-#qmrD$~jj<5K1 zOBuv6@r`E!bEc#)#&S^OG%F`kiZj`;a*avKjWf{ET3w>>YN%l3%38`6K(ylR*rZ z-w)C=MQbs62w8V-Ep|--quwjKUfqGmA@RPAN_-oI9mt=DfMZ z?JD&qr&Mpce#!zc*0L}2yP}d|H8@~!h?)8e3X2!cmhT|whK?FLx9mrFxcY=DnMoYPt3u&D`gDYdV0qW%wOqj6*i%o&%YW2gbdIjsl;> zdFRLDvfMXWuVL^e4@Bn$*vhg3j5sMJ-D{{2IVnhxV?5Z1O;KexqChWjYhb&Y*2?tYt47ai)GZ zT6rKkPr}|)#)uWS2C{8$2JCVBSic;2WA8_hnLQt#?nY!!xNx$t!|OEDJ)-!GrhiHG zR}{-N`~$`RQ^dQsl0Qwc1`&4atKLwtwTAPXD~vx&v8TrOQ5>S-*nMJ`XQj;n^L(Km zS8S$80+HcntfPzSXDaqq?58+X5gjo&guAPP&od zD;3T8b&Kkx8X14DVjB04_D2{_M>NOt_qE=&8D8bs1(#5r*Df5p=u-8&8J)Uz>BfWp3N#d!x;Y3w3@>-S@??x}ZdR)=@3)#1+wR)>FRkFz8nV;d~EIk%Yt#x|tSU4a1d z;;9brX#9g|-Pq-XNc42JY9w6_3O`En*!vx0%=+%+zs=XEV>0rPeD8uiGH(sD6!1og zwOM2w%#CqUKi-~@(P!T$#SE1J(jv$eWz>`n#_*$O=l zAKQD zu$%%f)KIcZDfA4K+)@ey;lU*mMvFL{a1p$$#6p3krf|%>uUlj|-|owsoE>_VMWE;P4t)>X`ox7qF^QrW@rmt2@! znnFuU&SekR75{pYoY}Y<+3TLvwysXRIQ7bjt%$6|Np=+cCilWOef8_F6TfNSG|a7q zH!11&=>FRPY;6S?u_wZVE-VB%ehV^=$U2bO#il)WK*&j$JP@5HpxjA8or#+a-N=lZ zjcf0#R)7(CceKmxhKJC6q-D7*&y+hKvdII{8H9*91$8EF4s_ez40J7E@*sY51;R`o zn)nXvF`aQHZW#h>dy6f5JV#9ZZh~y`Ky)re#E+~1Bi?{G+uk*>$L-|yvVURhZG_A` z`S5fN&`;!CO5+$u|1(9CZXAq_H;FWk>3#)|TV9cg`W4bu#cw{Tc}%*!NY~0JK-Q1$ zF?f4BR$J|IIDWGpGW}UB1V5}B9nso6XAAh8o(QaqaAS}Ahh<_rLbn%<);!cI?*l7X z>>K@9@SC7tE$7R7nKQx=(@H_WSHXAk`potT+~?;z+0NVtyoRLkox%MqmGI=n8xDu1 za85iIxJEMDg?N(U$wWkQACaSLqv0JDrMHgsy;Se7I7E>>Xxf{k$Tp_FNKv>?=+~%z zy&}&?rn_Bnlj2Vlw<$hM#0BngMNXXKTG6{S{$DU@2Q@KMq_%;HX{lrgmRmz zj%1a%327&k$9=_ePwhDDpZ${Yk~=6kk;Qo8mtd|E2hm;(ru{Wq_SjuB{H+5#jX} znuAE|h*;zf#+6;ru4AxV&bxyBoAiKGYXb&KM9MbZ`w z7tR})%EfKh_=gprRQ#i&oKLaj@qy+Md%U91?sqgD&v(v7t*7DgEHiViu89dGvKb+5 z5dQr3Laaj)#JfGbeZJ@H%XMDZ6)VrIck*5@Bd6?%a@Td5j@|EP{jr|gaYMm_+dC&# zAh(|w)c5^e?rpUvo;oq2D;9P)<^1Jm9_4m?c=;myC_hjO)W(KSzML?uXHxAP#@-7Rm1V-OgmmL%&D7!1Vb^d%UlQE)IzkPbUL|lw)py$l7B* zWO5^lWn+ToPfk-sD%lEJV3l~QLpu;y6A++FOHIM{^wtK5#Hj-3%P)Uu+jh2o7Y^u1 z@Zw4}Cp~`q*JY@hhnu4}qN7>4_z|qikc(9r^1PaHZ*Cqwo>$;49_VGo+qGQT(#u@# zU6SX`c+vZVvwY@lUah=FjT?J+UNKOnG@|%(C(Ul}1PG4d(3207HJvhVp{y_f3Qx$O zW5`t5>`_%K9Dkm58Vu`oFnbm9U?d@n2F#sWxcE@>A8|zw;?2f}WK@#2qm?AVC$w6U zygHa*vq`RRHR%~LiF)XKO(!YxIm71fnpsyhUeu~sx43ssD@1%DKF_qpH=WJHToyC| zuJiI-3;6#!Uy(g6%&6KRVP3Zaj5r=~cDWNl2=s(amK%fTb`a;mn>-Mmj}Z~4pw7g7 z2fA%<1A2M62&27Bcw=ulWRnM?Qx_Y_bjF#u%MoDP+hW<{Ib-atgKYB9MoZZHi4|Z( zc5iKaJJ<_F80(h=Icgyd`!UfVoGqd2J-k1Ey=O)1FzO}(C?Jdi+_b_Vhq z!1%6;!ahJRP+i&^`Y_d{-J$c@iuo>5EL5DS$cqN!OBBfqP`_I72a0?KWB7W-4T?Wk zl>LEt*&o2)YxrY|Pb$j(LHvuVzp40+;$FoM6b~qxd3eIHB0mWg)<-y2;Hj!NQ*5Q! zUXiayGkxm(yFnU0Own+G<5VY+!F+QR7b;$&xJ+?{;zNn>UT`{A8s74W({sxwkuB%kM|N-l_hyji_&fkUJcmc==G=ArHP( z2kvkL!oVF~2=F>nZZ2nQBwC9*HAxdu9ywZis=j_0j%hb=@LyA;491>9k*lmaiw zNJ7{s;@BO4vOwhZm3C9O!&@Y11c506?l75_M{4MrKmun*piy#%M5ZQpn9Rj{j5uCo z8p8ACa3X6SaTZ_Bst2__FIn61I}rL1Jl+jAwwTd48Vfdk95dYjujC=cJK(YAt;vWl z$RQwfLBaW@ixCnOd~UMf(Y!YW%``f>LB+CR!LF#xBN}7eie>O<69Nqik7(*}Bp%V6 zRmdmK);HncKF%XnepmW1Jfd0d^$X7CBac`k&zmnVM&tG9?D#P6l6Ys*hc!#cBWC`_ zoAfX6h?~8WVyhdqYwT_Of;6I3H2L~;KqwySo#~LR6K3uID+4I+K!08a@R-n}$7w{o z%TKNx3y^+2rvb{d%At5fUevw>9`ReS8td1KM|??dLIhvs0w6nC#&M;o>hOqda;wK9 zelJoz93D96Q&4B(*z>gQ zy-}-rJmMhO!zPE$*t*u3W$nE3y=D-_! z8z3`JK0KX==fdjni1T5bZE75C&~JsedBkUst~xwo47^`AV+?4Ht4AQ)+mVg!VEb`9 z&_v;OV0TvH5qnmXM|=s5Q5_yJhC&;o4CA=1RXIESIFDFUxIeZDukDq2#FW)o!~53J z^N2i-gkMt}tjK2#hL2S&RGh6?tazp3D#bO5d~RU=yA(Go-mfUU72=Qch-fEVm%iyd z;y&(IY=`i?!2eU-#R1Lmm?H0W)P<4()>XZsViQG~m4)~&s-LacOL4H`aK-Z!tNR}B zm70E~qP#ST@>Z*Uv!dYT{7Xyz0?r~1o^oQKbRX>6aP;T2^C zP>WaWT=jdjo!fWq5*K&mZ=A&s!7HxX5?SM(5nX$2%w6N(;Ouk#)nMwpwUf)-#-}En zCQTDN%H7Nz`yv@T_Ia_yxx>Kct^LF;n$~yg_WKjBCx|(TI*GNPM0RABdy(IQW9*Qa z0FH42!n}zYDCxabOwUeZD&ZcF8q9v&*~H zFTc`vZ^d`iqIJq5w+=d`d7nw(8IfXN?N8jS0ry>r{MRK`B(4F+SU<73Ajs=_dv^J^ zMsK?k^{+oMO=l_APyFTWrQ9#rC%8+xS3`C=pOB11s*`0%BW8Wl`H041pqCLM(Fw?i zMM*bN^P@5Zu^V#0Gh*pb5-M1Uv@4Uv(#aYoS0eqC2^%p%uo5YWePwXKZigdjqQUE`q6v8SEkHgvI16#Z!srPL(>Q`^bD9v9i%?{7 zWGhh1p&p)TJc^|(t9UiIs#%K3sfQTjIP$B(>}r9OldhDU!kCswWD6tQ?v+Wm3%ntF zUmf5v(QiHAzCe5$@Q*-b!!kb-;5T&Wlp$yYfeAqi4kt1-N*Zo*F&sgmYX-@6MiMmJ zSS#CDW_v40LI~=;hIjeUvC9kYji46BTNcJ!1&5v5`bf)dB(KOLDcH#I+{owP!8|5& z6(JyS%+&%Og%M}~Qx4fk8{yNOHG|VIg^}`4gD3(`o2bVi)4tJ7Aux#0(9tkS!&N|L zNAoZzQ$sYFY+4a9x;^=&RmC?ze1wU@zIXB@lVJR?X^p!PM|vb!W8(PqMO~utFtnqt z*!Trm$A=xayO$gHisG2Q*pP4ndB=f~4kvpLfoiN7yQ6WVc1`j2zw4qWU1_>vxFTb~ zAYvjO7hgOkgj?|DtUVv`i}R32npMdLJoIeEgV$=T=9I+Pl&kXLq9Kq?9*DBm-<=fHnYanijm)TXKyGCPw@FE9;x2$@m%9Ok)I_9XxiNTd z2XQXE$pg_Dh)TsNs55c1pxgHNLMS#x?6Lb~>|F`j}4a) z*jo$PN(wSBXLcWT5ifq^9@yZrYy6VhR z#O{(d=QX1;zgT%yMWGil@huJMj>VdaeQ5_=-(ba2ihSx|c%kBK#bU)P71?iRx;2Xb zzqm!=tZ)L>=@8`XKeU_5r2;8}_ViV4LbiX#-I{gIE?4(8|cKat})#6^lr6qhT? z{y_W>RKG!SqvG9)KU4gL;;$8dr}(Ji6N+VuyjHOMHxzliQh!hJeZ>QcpDB{7V7e?t zk`dG!Daw9=e!A*M;uy(ZF#j0E@rn}_rz>(o8Pi>?NJfVGa>Z4OHz?kuxKZ(LMbab8 z_iM#JC_bwAv|^d!pA}zLB%i|k9MdCytav~%jqP+8&Qa#hA|J04ks8V4&2;Fw7y&*z zlzhMW5S(MDGdgsuF6X$3H|T@sGJ1Hwx%-6O>of3fb9x!p+8bZiJux)l$DQWS?{Q{* zQ1SMxeHFQ%uG`}->A!t%#k3_KR6M?91K7v@+xsRM^ZcI3teuGIhnTkz6N&BAn00%+ zC5#F3IQu^9W@2`3k0ydVZV!K7E^ZmV^Z2gx@{GC-_IlZ;mOafkpW_d_>n_<^@%9py z!m|4HbXzae8$P#7qZE| z%Q0V<7m+3sQ27V*8RsAbvkR{xM51yPiKO%9k4cO|4?a!VtQB|*l~}Yk3y7tcLrYF# z{4+FI^3|gva-5c;)5Y5aKq#9|Mus zQRcV4b`MRal7moO50NQ?If==%yeo*~=}-GyJa9QsZnuzG!Xp|^WLBgZYD_Rag2Wjc zm^w%kE8yi#WeTh`-c%;s1Rurw%Aolu2Ad+YAD@>*=M#cW;Y})ZLG|+G_2wYcnB?}4 zVKW4kD;A^?vU^EmV?s+1j4@X9I(Trl1lCU$WTYu$0;0GE_{BjF=gTjDSWny8`VVn% z9-ntu-Fb(>syAq|FUSBsCGRiiwrlXqRQ8l z{L9AG%AQ}yi<)t~copQ-TamUhy2`)WyC(8ooQ_|Z^W%b5$KOvjZOe`dT}ycKK;US^ zby757(zQVVW%l3cnC=ykf**4WDu8P8FeVquG%LV}JrJjln@r|Bh`#=CM6!Q}?!Vm9 zSg)b*CJ#hs5$<^RQBY^%CPFtdqgr8uer^RAaXjMea$_eV05(}J%j0$s=fRsi5S>3G zB2Gb_iR1HXC3~PmauG&*>{}Xp%ORUQ5aoSmrZdjOU5)_TUOmem&lO{D9b}V-Hqy~( zcUS>NT#Y!}UMtw+_OX6B@W$Q-$jp-uPj?q~^hC6aag3wCSJ9-4!Z_R1IFoKG0b^HL2bTmcSN9{1#^fS=E0(xxeNcqBu@*lHv@-MT(ayUZZ%u z;!TRTD{fN!iQ+cJhlw~Z$!!y#BI@zT`oF6B8${?8s=u!~8;s#6C>qYMEp^y2T%Ww( z3cZ)68>I2Po-)6@*NS*L)`Le6QQ8&A{YpKq*i7+s#deBa6wg%brPx<-u;Oq*l%QQ8^#ZdUy^#XA*$toU=q`xSqyxLxsC#Xl+X*kgVEruepEx#GVR zKT-tKBI%=w*^0cU(N0}O!|{;}U^r(=5zV~8GgX)UgYdqp3pWd0_7hN6ngbe+Z>pv< zoEX^!+BMwXRjOaD_ya}5@!h6+sp65ix5K_iTsSFQTrm7@#v!=3&K*1D$Hg6azF+El z#3$p<)b^eIz46`e*ma3ji8YBfWnQ9R!ihVL*Z#AQv!Y(F@_#J+;fzfu_bq>G;ooL# zs@E6#25R%&bG&`IUiq$^@>oN#WnNm@Mf?5JmodkD_pJT9CMSmNez*9ukN@-86Z;+K zcmLdf6|KJWwyf!heU39DSR0ThR3izf`~yBrj$t<@hioJ&XJ90q2d0M$Rm$3ca{QV1 zd)F|{ub5^?34deJlek-A={yRPEE$hckFVVxv`nCf7{?nj6Tet7P>w}6CYOSkzf%JJ zsRVuNcM)W)7`Pe`{SW1< zJR@T}@Z%0*>@N5W`Rc}y*C2ihpZPufxI>xvd&rg{-_9Pzvi>hnJAiDXdMe65Y)4hk z4%AMnj+cA#m;Q~8n+kC4OI<9m^2|F<#7q4shg>*y=3NoC1>{&95V|^$bhaHyGfV*^ zu&axgM{`Rl^a;WVLq)uZFdE)-E?-(oVNwvzBW<>b!wD?Ul_eb@1TH9J1R=;Xp1^zo zuSSX2S`co8z`}S)p$jaGBrq|UGD47WWS9y9Q)D`K@E8|Iy$O7pGkmQ-Vy#cPh3KQ# z`eWAmr$NrMbl%UqSvuw6q6hiSb{l)98g`jTE-n+lEFZ5s6KD!7BY`(2d`A0Bf&WiV~_>wB(V>j{2Cf#84{Is$Vd|Hbyi{U%k zH3y}(QtxW=e92V=E75=RyL801qYY$%#Y3=sNjfrR&B4Rbf63i=e2!o5-e<;J^(vWD zI6FRh;mp}n&y08M+P-zXQ(m{cPVo-;?K|an?a(>iYC+-b!b!!2t>YK;8abq0;hf2Z zQ>PYAZQE%=x3-fPOqx4oMtnixqM60`On1CP`;P59b-mE(#cS*&euu|#d2x^Sp0}W+ zaBHyK%1i!`#Fk)|n z+xC{i9-n_`k8NP=je>0QKy>)sxpfrOnYcpeMrPC#NO!4eG%IcrWV_rqKsM|^I+n|D zQ!a1mw!J=h9*ZN)I1|UVvh8iE9Xw~#UKYHucQs^_2ck0-_OQvJGjUfT#J0E9vWG|f z(B7?(O&%I4fjtiV8E3>B5n$VU1opU}Sic(Zrha!pW}bX_x}0=J)`$$WAdc}{;O%rp zFm87>8AtzXcpQ6d9&zO7s^SHoK`hf7$M=mp83oAt(LDigZ^zSCyFd)LgWQoh<{>)W zVUN#R#+kB+*5M(I(G!8};qjS?<#PY9Oxs>h1a?H2amJp}4cg(yf)`|6lFqbB5aNYb z4Wn}pC!JTR<+wdOGLz18cw{A=Cr5^@pD6EiC+ol#PdZO#@z^?BFzLt}@{!3n+TlY4 z+o%XW$rC2;?*UObVS?O-Cd{5XbJ3i6Q-d$LnO>Ci<1P{omovcHgSvg&gc7budTVR=7LlsChmbKW?^Hz>+NRnUK?`Y#k8RNSWc zxZ+ca&ndpB_^RUTin|pn6v+^=To)H!Vuqr8-y1q9BZfCtY^~T$ex#|Q9EFOs$?bNADr|R;eD{$Vy zMLP+!!u{tY2b^g3-mOi_oP9CBFyS;Ey+5{e^nQP~_vzK|d*v;Ad!Md)-#yzaZ_(RF ziuZOo=jIg2=4Q7f*boMA?9Bxfqu(C<2>eQW5`(Xa5W&x&INeT z+W?09R*73`3WFsCi{tSThX<=j;09r?Ab!O)z;8q()+cc0Fse$IQJCXw zTs1!5JI7p0kD85hg^i1Q#RKsYZu>Uv^0C}sD}FxYl5MaRS0KQ)*Wa?o^TgOAXJ+!y#%|c-+zR82xCQ~Xy|J*z?PLAWNcL!ni1Yfm7Sc8yzxbUfCKGso4V z2(Y(fqSY?75NFy2!7Mj)n_=(8P)nA@GOf*X`kYX`Id>&!w5Cj?JmW9dIv`W5`vE zD>hS1<-(->kiNUd_g3tuI9!qU0os)ZZQumeXDH5A(&SC_bY2l;X3BFDbsF__m_qzW$~9M~a^*3TKIO_}I+y>L`+mpx#)K_u#|5 zKYC=YCRnsCwv3*tBIGTCBW1)J9oc-mV0*Z z_tRVU`Shv}y7z(9uX`WAyy?_^U}>%+OB0QjMf>D_;+}O+K?CqK>kjPupmq^?nyHER zQg|B9|8uWHiS?!2%0F^}4cCS%L?jk%%n^%n3L}<@ivW_##C^zwyd3E=aVIm8@H7!lIth3h*x)`x;iM?+!S{Kf zLYs%c=w8TJF>W;=I-hc7p5`>9QJ#iR>2z*vEH*GXM=hfd(-@wHH=QbY8qzmeD;Xy| z%_d0I<7tlV(r@SlSl^??ft+Ef=(kj3={Gt0m8W5ofV1I+C3NgvfL|fh6!Ba_D|o#5 zxU`f)UJy3O#kuyV)#CEoR3l5*-??hJX zok-~-9NnsDGE*w#X1GAw=`Gr}Ykao1I1kLskgAv&E`63HX25oQiEE)9hS53V7p`N)%Y5S(Kto%6op>4c%Z=k5kgfn8_m|MEfK(MP!<(=DoV_9k zcRpmSgK%_x!{==7f7>3%Q}0BWaVBme0*uVKRp>JD`NcRRl0&e|eFVG=-$h}$F?enV zaUQ(M1JSwHbDTH@btdjR&~1CQK@6~aLVM`ng!Yz0HhCaAPr;tujWKbTBhI$h%(BPl zDpS98kWC(l&dad3-U=|{YQ)+0I>8>dkM%>7hxRr=W}bX_x{I+BE<_s|$2j_X6-~P5 zK>@H$jWg-CA^=q?GU53sv?^X^ClWA^akG)GjZuK+xOxP#y&c`Hb~zj`a|`UfVA(Te z5v|R0^6^|t9!??Uo? zPT^%z7C{U8T--A0`D6d_xF-*RT`qW%;>pCU5A2Z~4HWsbzd9PwR3zW0lTypG7jbnaB`IWwDh zfx<1blRz+MCV%VqW3TS1v!pKGB5afR6V~loi}kuLuDE;2pRhXD#T8dCS&Ox}sAIuq zygkT}a&R)yTyQd8v}_Aj+H%ig=qJ0xIYA>`8<-+-8J}iNn&E^F@NCPSXXR~JD9hvIDAG^M7u+l zFlt1`9fYBbGjm~v)6!h{tU`v4V8R>V!LhV=+;bWGexTwVKv6j%5wUm&P}Girigy4- zB})Z6-;9|v-0z$@Lu3O&jsZf4TO{s(!pP)9l=lEBoGIa>2z^8xP9Vu4>pfARxs=H= zw3g=F;RB?{G7e}jdBt!>9>l+lVNUiXK->^`ieR>mD{sp2-k>ZC#RNPk6+%#-Vz(5s zIGSPg`68Uz4EsemE8e%_OM=`%r8R#n8NYf+74g|t{7@5L6~DuFvYoBVl*Z$eZ>l@_ zCRmIC=ie7x^y-g%6%NyGu-tuKpLT8Y@#ihd^Rl{o3-i2&oO^RR=H9exG+o|?J0`PB zj^&c}A&nlD2p| z?Ccqn7EFz|oj&#ANeia6?GSG}tRrZcx%1i?sRf93+GNL!8>Mc ziwgyd5jJ&F$s}9l#4jCc;hgKj5NInGYp0r~7qP66HakW&~2 z+2n!f?16G81$8EF5_BUoYBf3*#a4h3Q|Hv|$3yXIM6z7A1Gj@%1aI;{bUZ}FDX24X z>}lHDagD_(WFpSky9%<&LlaFAkxN0HiMs;2ZSNM#UN+*4y&EB$JT%b}5w}|bMr1$L zws#Ngar?Nv>~t7=KZ49W>^#twVJCEF=S&^r=r=2xblEUg6?gMXq{A`AW)wFA>8j#x zoC@e18u( zNvh9KT%;&-LJ)tA>enmYq$e2yn}RP3sFj$&`cQHtj&a?FDHrYH*c6HB%~ikEn^e=5zv!A{~B z7V}H@deY(v7-y}#hWjDr;B?OK7EH>CA9)?AH-h7&68F>goxL@%hWi=Iw@lc5Yo@yv zYpKWl8U4$8CeBUxO`Yat`<*TQX56{Y%f1s|gWR0B6JLHDpIC{INY*xdv+9dG!rwLs-@LsrajM3g$gOPXf|qr$DGxUXm*N2uo72LBK!7 ziEM7jtpK6pvj_+!LR`eLGXT7*fpf|&rLb7ShZ9zaIQAC6J%RXB0PR`}BSDkPAeNX~ z4v{H>wWpG4M=*_X4IzMABG4#4966rI)Tr(FWUf&N5myJlad;3{tZh)M(aBnkPUabn zcyY-*hJM?)8f#Hmh`fkDbKyzaC1n5>lC zh+^58p!qAmz7|JPT40stO14o1)&#WR(o$2fJ)x=rB5}aO`SQyj+P0mo--QGE_`=5oAs=1qUmdl)Oe-{#fM zYt*>0x8aI`^4i&)NsIB(#|}=g%zJW%)0f1F9cF5i@J5v=s?RlR>2MTS*u<60SMx)U z2hDOyGH1tUHqDz$rmRY4%<5%1!BN&8%kO**UqO?8y!{SZGwZ6xi&_=mee9jn3K3t7 zI}47+Z$5SQwVL;|#oA})7FB>ScC3th1H$E2fDwBjoVmZvvG|>|Feqsd} zk=YcS^?-4)d6q)cJ zB3)J7*-j*29^;-zx^6}RvVL@rz}wrg(`pxp;dWqmvfR*RV<)^2YRR%#rnPwvIkD=@ zdwL$nY2zyFSwSM&+jK0rGZbq%(<(vGSHYFlL{Yh64cOvIR~@d5{1)4U*Y+e=7IqRW zs!T7{NN2bP;e5b_ao>^?6Rr#>Tv=9f-V+}u8Q)P+xH9OyROhHR<3}luRV-ATtyrvh zrQ#~ZHHvpA-le!%@qWeMC~jALPVp~9oTq3ulIS;mlBPc`phW zM?*4Sb0Tyex5U00K2Y`1s-LgAa5%^(Yl2a04RSgzsT(%8PxGZjfWP&eO!+X7Y-D7u7;D6pl#=toI#&H& zUg!3my2ZsEnG;N1Tb^qu9n1+vVq5k*J1!`5n)OVK0WUZ`(IT-l$h#u3Ik6JucLHmO*njT< zbGQ-pZ4h#YqZ2Pz#T{OPhCT^9C)I&FY=$r}c|3K4RqLC}*&2yvac4%-&ttrDhjN`W z++klv#G(}f>AwRcr=$G@n#Ze}F5Xm$JA9Kl+?bps__iZ8-)~4z?vRHAR%}`csDeA> zNl8~Fcld8cB)P*`R1J6dD=MFpJM6(c!X0)%b7Vgss-(5EYlbS%kZ&h!g#PO(-qYQmeB5NLT7GKV)2emyfS=;eD5c&{2-Y_(_BFWCHT(N>p zAID5Lz$NK` z70ck!CIlK39?{g{NIW8K+s@WE@k$VUh{QdRbAsc-AuYUHHR0p@*DfK?zN##zfX4ZP z)8-E55r=z=<6Zb#WbG32h?&3fCjJXN;%2W_Y;_}iIr2v-G-7fUtAJ2E)S^`(5hshQ zPoDjq-e%@l7(;UH$P8fBM?pLLc0L6!Zids;Dw(f711M`;ecrio$Am)-YyMw4!Oq%~ zUvnDqusk9!YF`46_-$C$>TAU#zGU5re3c7=J5CtG_ZzCiBeuz{9*@ZNs_qM|%iT@1 ziTLH+&baO%lisrej5r<%^wC+8t^+wS95(AfI~|Kr!yM7;7_V|3yc4j@-!J9k~oeN;^9xK3zs}X10^YJiO9Ujrcb76IO z#Q8AJHZ_jr(r<;gdBkUst~xv-*NpFGi~-GY^$28pJF>AIY(KU$nkZ}+a!odm*c0}u z!y~?wQ#~FrhC&;o4C72Y8{MECew;_FDcm31gxB`UJYwpyRzcs4?U)9CG;6{0I1+wM zaj+tvH5fitu~2cgVzJ_timMcl^N46STxb5K7=I)L_23ii;FwE*iqGRDGr5b&9JM zZ&oxs;+?AhSdlCV?HeBPVb#r=@qbkPImMS1UsaUz_Goy;V7aeq@QPi##Kj$%SBzu4 z0q&r=hO4$j*0^Ux*IpZQ*Z4O$`&@rDm^yFm1BvX?>sGo|CAPSo=w2M`pPf`7Joc4v7ii7$+dio0w7VWle`R zF2UdFU=Y2m2fz_-OKeR%fSHBkz%sh~e0Kuul52csmv^gQex>i;%Js$SltpeGbV~C+ zlfW|~#lG5~xLE`4yAt`YORPv-1CFtNVsk-|*Y)=7@^6jab|vaxe`1=>Qmmi&%iBx2 zUu5%rw=U4_2JHh0sQkl=trM<8#wn&)3Tz}H63s;(tV2ew8jFuLg%*+HM|ego95$U1 zvFQ5(=}!WZi;w*ZT7>MlEDeE$qW%x{Ch=r15+#j%x0 zZg|GK5u|ez|EZhcvSu-UHo%&r$gdLwJR|#QF`ftk&$y8)k88Jp`QCtdtV*kG0|^5fE{y)PXqoDh-_HqM<{+n$DT2!9}<`l zwBT?eQ=_EeCKtmI6uM@R@CinOW*ci|8_R5O1xW}&z1Q$AA3F5%U||$NEsVD;jJFC7 zJGJ$ZmfJ{Pk-h0)BgbWw(kBhCfKwe7Ts2A8&r7x*o+mvLP0S;>Xw-r!Uw4Y}upA?=U{!F8y>fV)`{HvIzwt}7 zor2Amt_zT^Qvl&_aAycO5T-L+OKLjC(Y1t+!5=9dpD9zzweK=M;^}(98{5t&=&Z*E-bq27iQ{`^MrPDG*dTUUjWcl6{n!i#La?k+v9?)*c7qH?vt^1C1jHaqB9Hjn9ev8 zcNqd~d%2dqY{VIRYayFFw6O&CZnXl8cs=55dvVy~_HldJ%QE&#Au~@tJY6k3AI?l^ zKgI{Wp=7$HFdlZr5YII9_rqfs6amD&gmhK$i;p9g>5Z$6MzedetRLOO@b-4Jvf8B< z;>>oihmUeYHyHMw54B`jEYsRN=QT72=X>$_t0p|{asRMP+g>gL8zIa%yY428XonvQ zev$hs=}fBxAz#HjMYb#3BXDf-q^r(6MeHtV6J9ea^NT6Vvyoox%5F9G4-Qlw^W*|q zKJid<6i?H5WR-M16#FU;Rve|srw-aHRGh6?tazm&`|V7(Mv-$8sNbcyS@C{F&O2cI zc11oSQ2z@N=O}0M5dTiZ!ByQkio#hTeLWmlv?p8@^p>g%XNB;7)DbQm6?B>723`99 z&Wvg-KS4iT^&@eNWG|S1jN*93iHg$|zoU4u;-!kq6;~wwMny6;EQj<6@z;ufP<&MJX~i~h9A)k-^6@%R z)m%ot`H!XTlAL3Qs^>CxI-~mE7}$h+16(TS=;8h5?h|&e&%nFQ>19}vZhTqy#L$Ev zcbY$sweCKsczf2qiri1vVa>ap+xKGSx(_NIU$O!0tl$LDJ;9+61N^|4oxxIN}V&5$l)0e!vYdPwC>crpubFWv_Z%E>AZ!`1*%x9d; zeIc9dyX2%@k|5_uK;<9IXZ#*QFuU+3LL|zS?l6f_P98rx37YpRW4fKkUqAg`LM$o= zc`W@u(2|oFcSG~WGE2eWAhq!A_~s>z#{8Eg&|g7_`MfSg``{;KO+DWK+yugtpO|(h zK#h&U7Px?kBKd%}S;4^qyy8{^Oj?DO&Fp#<2QJM11gJJg|NR9$m#NeH0 z5wAr|_9o^SPHWFnJ&9RGJq=Ru&aRKXkkgfKVhf6!AP> zd3iU)7ag|&{uqdCaOOuSenYn&5(q^CQv`DolWBQZ5XaM>_PGEbFZnEhGD~2l<|;47gR4_ zUT+REjbZJA?H@x3DpxE>BV_lI#>Rw}AQ)q;=ymXDVgls&GOFj-@V!c zG1sv4itgT1PM$2;XL!JX{xf_NSG73;(-TznOQO`i3@$CS$@!4SlsikVBp6JyWC4d~ z(Z1C*>(`(D%f{8peovVfHRE{kD#)p~B5h@Km4CH&P2{^c9ltQ=CnwT^!r6IK3nwp} zK4IqEY4aSFCrzHbpm34>_VVm`Q*3q8f=P3y7Z%$=2Zzj_ITs@efpx6L=;TeAH)l>E z4#2!#BZuToD!~GclNXj$wlZzOq&bCVd#i(|Adz%3G;ybtOu-G|tKt1#vC1~LpaQL* ziONM~r?JB7jMxLZK5k0PgEf-hM?m*qZfSVzKj{7BMcBamBuDUL>`jDfWX7}tS;P0O zj5FeR1lZ-qPDB7~)&a0QZU>RipC%7P=g)|UQ&4B(_`F)lUajC+nfBPBH1?K5HhCb* z`_8!()S0-;q1*QAS@w9Y7<=m=n>;j;jz-&H1sHKP;%s}ZV2|6!`mrx<>}`O|Jo)f+ zKgNUFM6`=>jH71{-%ghf<7`voOuDTIz%D2<;Zu;VD&B7=5-^W(c-ji#{*j8lD*;ta(_ikB*0qjhZ|!kw<6f zZ)o}ojelQtHW<^LplCS1w$zc&aDClX@1^MmsXknFd9M}e=~xdQJw$0&AonZvxMDNK z(-qq(c2SgeMfzT<_f;IMI9!oW-n2VKahBp-#l?zC6|Ys4c1FINRliN~PQ@Q9{#@~X z#osD!SA16SPl`PDSf9TszO7iU_%Fqe6kWC-(nl4u6?so%cwI%q@sSK*c%EVx#WNLU z{~*4v>cY)Jm;D4JIl}ygUV-Pq;iVY}a4*snaA{>(f6^m`N8`<7++ zx2LaNI_Qb_V;OfH@TO<%bE9MTHy^$+5xX&Z``G=hdwK_=7sqZ-Ti5oK$c>TPoo1a* znO+`^)-TVD4Jyyd`0G2)z4gmunS;tRvS9Px4dqV{|LgwP7ANvv-M4CZ&8|J*f7dyX z{%?PMVt3!PO$WStAFb;rP@BGK2cl0$Z{KhrZ8}Q$?XcZXEbO~`Y;@S}oh4h#GyTHy ztZ0{$r}tr9hwXm*l3}}FT{V#z`OPAMEY$RrJWN0soxQ^C?713#AcRz8EAzF zTEW{?uWz{*-E_dcci8TCiihofX@PUV+wV19g%&N?Js`pwy4cFdfsAW59Eddizx2Ml z&y9YNZnm`M$-VpZE{}Szatl6q5nIrkThJ6+kVsqKvCkh4_)VX$@z=V2cK7z31JU<4 z9PnNLKt`wZ+Z*?Js7Ar=UXiEjjy$<{`J2W59ru_2j-QDkq`FDRl2@AyNO;}@JNKl=&>b_F5kpG@%mpD`}x{{dQ5 zE_au^cOxh|jL}!QyaT2AWL(o_VCN~f5 zAY}4>@AhJ*w(yzfQ!R)f;ZUlrsP?A10#X*A%iO+9{2Qvg-nt21wLL^+O$yZ(P_w7u z!zKNg_B_$>-4f9_u#i2~#PvlTvZtE3A3-~z&s-3?%*S1v-DjF=SRB;JdY45E;5J&4sM%F=)Y{SA68G$Yd4fjN7E#9ng=m-dO}idfW$ecy6tO?bjPHP%{pJo ztPyqE*TOV3C)bWaUyI>r7uOw7i-p!|>}y5B45^r$c#v0 z=i=QHQz{9XtG|`2e=^rdlM6dc)}YVCaJx*Bn6q@5oB5erztp5WAxPO&g9D4f1e8T$b2MQYd^**L3*8-D1wZc^F+F}&(#;-vg2)*6`` zhKC}rken8f=A66MKX0vX$~AgWGNx`pK<(jt`Q;DK0^?|>2YdlMN9G2?b7>@F&!nq^ zJPqO51gBZ~8E@NTzKA28-6|$3_vYtj=gpp7xFDh5Hvuh|I*s?+zhHt)RK|y1CQO-E zEQ@~2TC2gJLCK7~8QfzBja=aVS6ng`{T#$&Uotg0%6W4qluW{>ZHj|zIJac)V4TA3 z(z(4icOd34w{6$9`K0Dv@p629=#=K(CGpNOvauxIf^u6ALjE|f_&135in&^AyR+Ig zYS(spqjrxsZujSQZQK3m)TVyKdpEM$cfEC&Ls6BxDx3wgN{!WR(Z~bdfckxzZ3!a`o3r!SlOxL}S86#}2?lOkSQcduGuDNjZNOu^!xG#qrUWGJ5gin9jbT zn%j08gewggq(j%7_Upnk4L$XN@WwVoXEAOEoL*y`iAx~Bw$~l@UPC19u`b5mxsXjB zh|W`pXk-N#aYjnI-FV#ii`jT9ZYpHE+y?a=yb2nW%WzZf#a14O&cld|Q&4BhErxE} zd*u{%v;uosKx6NFkWC(l&g;lDoPs(Nw+gy#?_JnqH=6ANIybbp9;(dn3p$JQ#^ z`4+_4_Qs<}X7*bR#F_ft1DW=CJkZU-3H{R)dyKyy-cDB+M#eLPI>ym&gGaNn>f(x# zuBtJdGQ={yahs8@n^AzQA07L__I6CgcH||t zbYM5-5|8(hlH)w~rN2_Iz!4rMg6i-Z!f_7Xmm)bj{sWZpA0W$*AhJ0TCsrFxC*u={ z@1=Tw#UYC06elRoR-CWMF<6#&mEvl}n-$k9$~Xkl-KV-ti-i89>bn$QQhZhMEkzl3 zK>CkW&p>0cT$w%zG~);|&Vy^Aj3?k4(Noj$K`Z>06Vjir`b8Q)Lv>ll6!G#%h5So3 zewD^wtNM+q->JwKx@mvAB6(Em?qvCUluPeT-NOqLz(-lcGQ?IGW2Y2dbT&bJt z-4#ioGX4U^$%@kyixp+RBi)s%uT;EA@rR0}JZbN4#h)q4ae#0$C;WFBex$kJ|I~Ev zDt@H+sp1KGT%4##qL$^Ks@PnywPJh4&We2%2PkrVDCQrn$VCRIPgI<)_#MSXic1ui zE3Q)ff#MB{q@ii=F2!Fe{#x-d#U~YCQ2dMH-xc3f+@rWpkyJMA#}sQQ)>5pm*if;B z;%SOq70*%}pg2U4+&Jw|QoLC4QpFn;Z&f5;&h)=j{Db17igJC%ZONRkIIJbTIiGpQ zV*b?gns*w8r=H)fG`x*szG5fEo{D`GWk>{e#2zYP?6vFAzOyx4dBk@GI)9FL1zutY z4wpFAiDL*HuPoiudr7<^J@c0pJ2E*VKY#1*Dt0XKU#MG=d!~C6+6zXh48KeAAUdPMar-8@kYToZ{ITik@sVMq394J`m+EnNo50nawI%4D3+R>$IsAR}E}l;f-5R z@%PhORzyylUeV;Vl8V;{cCP4yux3cJa@=%ai;5PrT2@3M-#x2S#j05gMNdOmizSOH zS}s{warL-Aptd`(6-E6fWpz0Vjl>`-F}>;^(4N^a5rJLMJ}IK%r0ywLjGF_ErC{Pm+UB<`m_KrI$+g&Y{?V`s(Z zHh(?1~9*a!jp7AGGXYQ=j9a@`Zz632eD>=2`2 zvC5-i8J3E!2bWW^)=xRiN8gax9xH>IW5&K}n6aqKkptERNXW%AZ&94&yc zFJ1scCs#vfbx$JWF*4+R*t2y=$Nvw){{zq08Hh}iz@a%w)oaP!$_wgow;oz(*bQFbl6 zD46|l7+T4+Lc^3ut5!(bAgph;vw&5Stw`<-wkwON?|eA8wIpcpL2EgO8h$vSHU674 zC}lj)`)&uPsazQAb#MqQF!w*;JEzo@8Bm<#^z7LX<>S9eN1u{X>97I=Q4B1L zlTN-!;XxH%TQx}~y;g)(ldf$wM~S}ugF*+5gH;;&2xeMhFCH{5gr*F~h0wRNMv<^D zsv0GdT@*z&+(7?~7hN*k;okg#81-r2wMd`=ku#Op`&DFKbjM98!^y5t|ZW6~DmvPU@&mSO5oD4l$H- zq(Ph+lNLC^piS}(ny{SYt2EUZFbj^d|GtI2zm_99!Lye=ro(3?<9N3pkP}-GAt7+o zV>mpT^Nzn?qm7Fe6?ZgaINU$RnVTY?jX{Zqu0Kd+b_n_4!8G*L2f|y~WkSY>R)7%` zNN3v{4tvWGNqcGV#$M_e4!MOrh&RsIn}Gl$Gp-8^^hR3aOx#oi*yWbtz>MRD!g3jI z%Dot}$pg{3BpvA}s55cJ&~1Br(KX~#3GE$j4ChwZlc$#yd#h6H(U7snCrwj7a>1q! zH1QMIt1CA~YRR};AlvoJg*~(1$jlpi_h_DcAl(jRx+KLO%ex<*XwsdLUA-}!8o3<*9!KHWBur!hPSt)p4BeAwwUcW5wf-0o&B&^oiUsp$XJ~*oLn5IT~LN`_C7FS zL_7S;8pGlAtH7C73bb$17)~79aKtg3;NE`l7!EJ}l{#MF;{G3dUjkr7ajo5bmzg`v z0K>3~fEQ-iWSfBjMn&0&U0?iI{U_TPFUV zh{*!?E$4mlHgZCIo7)FA^8>xM=LN!dCl4%>oCb7E*XHsex3w5R8{hzK&K^kXcETRV_Xs)3MLsTUC~P960VMs|zKK1A zR`1|Pi$7ZEzNJhT&zUmDvu|cVPKS}_%pmbfA?G#8-z#+AN?sNJdm-n~8156{A$Ycv zw~d;CGsV{kuNU4Vd`S2s;S0i-ggb?=2|pD6L)ZcjWv1u8CGZ{3{k2?s0BioPz3h9A zy-#^Ebr%&Hfh2Q_0pqKCtg-gw`x8T?O;^>N@E6!c$>vJo|`ON$coc^!S)#BypV+hKLbOvutx$-Njel6w|}QLBmm*1lu$!{`yq zwbq@8TVqS)K7(NC{cIj#q@6qs9*#3Yzd`U5pAZtU>rEItKH!ExVVsp5JJaX0DW@dX zCAU3E#faDlptB1SbOo9AX=8`umi z`f>Stt%_)%RS^Z4_@yQ+uHf^rp<8EBulX`3o5C*4+a2$*;Pvg3T#vozf9%h*En6^W z`tq6;HMMC2gj>Sy+h~Q~94|l2-qg;ltqD!r1QxOXB6C}tqsW*%spqHJQvNo3 zBRg77;;`@wmLS7RX3Ls&$%+N@mekBKJJ)|=8s<~xSh6cTJu&m2H{ar}L8<{_&%>cZ z4^MU(T)VhtQF7MG1&ih!p6t`VtZTBoXGPEQWbe|l^3wjj`zE_!lA>njikhy;}*w$nA{3Lb*S+HWk(k02>Wqr!Z`=8(quE67BX3fl53p~Fk z$oNoLG}o-|F|NOt(=c~jUZg>8QLLHY+;16e@!Lf@`0Q_m=U>P>XHT8a zGVhYIo6Tql2R`faCE3R0U{nBKCw$}5l?RYI2k&yvYYz#-xp8E6IQr3b#=)24{=%_u zo1Jd>$cr< z?_$s{4s~1yee4%I=g12n2z?qM9^a$Fy(7fe&6%0b$-J&;~O zZZJD8Ci4IK?!sd`WeY`$QGpuhuDy;`(&N+RKcNms`5px~PSK7H+2_*lD zJx5wWHOn73)=1jXUN!8Z9%s$cE{d4$xx#xowZ}-tqcXz+HN%IR&pU z^k5vqf4i}uJ&pd^vEXO<jzc&zXM z`d@XBu`k807WE}?Ov2&ffb@P0=3WwV&TlSwN7IXI6_O<6oZl?);dHl##wbkBrJFq# zyaM{d<#qa2X6bu8r0>(lg1125fs6&WLm%_SdO;PX@|Qgp?0}3Qt;jvry0~`y^KftlzdQ@5u zq~V;qZjN^tmj5S@1$m9?8w+Ornsr9EhIPp20=g%`_fpjPXB`W2zK~x3JH9C}di&BEJ-cMBg9+IMS&drth{g*GOHyc!LJdZrTbfU-4%Kr8p> z8Y8;j_zgyW`~4nRcHnyi-o{MrJx1K;_dweO&7#EoN}zu*PGiG&gn6Rieoh3>7>wR* z$zvq`0&63Z%XJJG89rx_TTH+*12`-q;fT$xOo`=Ul*}<;r$Eb{7Bco*ix*2$n22!| zWbA(_TJN8S;PH}3|J;1=IfF~R$YHscQAIJhGB0wtxL6Lp{6&rsm&k2IRRb&*zWn9j z%U|S3dA7>Im%qqS;@afk%U@)mxTI%mW)4PTc}tm$7rT!c8I;Rr)WF{eChN-|t0|vf z{zzaHSP*0E{f`3EAN$?`=( zANy8Wt<2#00IkUDx3Nw?KLQ&W)EWDwi)XsMcyQfu4bgPmr!MQUr#kT&Ly`j;R0QdK zrTh9;I~g^TuCxsC7c!u71*?Y1k0UPA*Vtu)%PttC$|*X(*O9rmpAHqCOXz z-r&QhDGEnTZ@TlP9MGUW;}!BR{l3NeJz%Tiug5gjM-E<>!I*{_`asPg+I=TpWii>U|Ud0%FJ z&pNDsFiOc9tKh2@{^5diS!rp%e*KckzNNhbL301!vnHS|!==7wwLyVitqOa_s`9Mmqe; zmi`8|l>tjAGIPi1$%q{ra%>RsErOqD%cK&q3r!dsMo7fYg)rU@bo@;Jd_Yb~yh|=W zy79YL{Lt`suXs0cX89QJE-sPaFe~1}V#)F`-cz1t`55md&MY6}rQ(voSFjOC%zXvB zhMIcY=e7Lqpd%|HzSY4+2vo3i83ti1A{2ne5G3#xalYo{)EE+rf?w3>rZULmun0pUpD@T_rMjg`XbBPG_3(9A#UdUn{#$?AS8HZ zG9KE$z0~{>J)pTM<5fXq5l;ru%muKB=Ru-~MIc(>@JG*e5pM)*5lJ+20W9JZkRUu$ zWTe(O{Lz-$iy$o$gEVuV7U?}m;9AC5!}}j2{$E&!1|!P!p4!eV)JCIR;I9!UmiO;9 zx^x?CV^8d`DQRKmmI6()( z{j>ogn)~|(@?V`cI@+vfaq)BZdxz=4Jio)%Z~E&#zfPY%aqzHVdlkX60X9a-W_X+a z5}F#hn`Ya6HbazREK2GFacV=_y@vVR*)|o4O4FIo5M%OS<)T{8<`AlB%v`x>=DhSM zem^ri3znp=OfV~u+Bf$Lnc+wkFEwEio^bd|PbGaRr%(7O4%-H^cjg=)Z-X1fxcug` ztK#`K<=t=rR@Z z8wxr+cd!UAU+$B~S0;ukrjK(8)i}cX4#t3)pB|iZWKCAM3CK`$=Na;w2|AqaB)ruN z5sv9HJ(h!5iz5`>t3jrckU8i4mO&8KH>YXP5urYIN}N89@mw5`-uckS{)ThT?_3DN z`f5Y^c%L|ZSAlkMsN-_z<2McG9CN^#JQ!FX~})^(%* zRvh7Q_d|Job2JYk94-~B$6QlXMtyTM+u-Z+%79}Lu8YM8PRt+OGdRNKxFl3BAXDYY zo};OSzTZ%RoJ)%sDxO!^7-feL%ebwh$8>ppm?p}Ra)Ti3mf|w=9ujAi>5KU89DXJS zrA?>yudqQ*YiIcjtzK9kfn$xQ-GTh>A^WTo7Y-Iy3af=vgf+rN!WF`^h3kYHh4u{^>GR%UK5iG@Eqq95 z-=N|D5Ah>W5ez>`c&6|Y;U;2SYny@BkViw@D*qqL|EI!NeZ2Rm7njnI?T&m>SR&+oNO>m{!GXj1L}WSxKsF=kkbbAuM>VEjOse^9gpAhu;&oN(Ggw!oTYGl zHbn6J;%J!uz50}Wwt2n2}fcI}tKBg)rcw1S?P-aDRK;r*FqTY3p#$P&8fLrziS}MX%=sh z%e^;k)~{9W3ycz2yT{w+?ldkI%<~;$;biR|Pb#QcyT{v$Gi&#F2XU}=r@rH%zQLVT zgqIvmoAlMnO0L^%D&H{snIwNw5 zg*_90#8EEdWneAh10b5Z02c8%NFZag?}VfIA<*EDW5$0=b}dc;`!QMTfthbRgtO!r z(EJ`4Y_y z=I=c>Xurqj<_3-Vg69TvP&;l)5Wk-n{NNtu25mBu3)T_ffM*EV95GwShoL#dwT74H zEi2p{8B{W;(-zmvFeS(4$QU7Ci-i*-CUIaIj-XJDqyrLjRA5arJ;TVx*a?U4RTC7k zC@Z3CvRU(j*6z}}sGxhGix3oUS*mbJ$U5K%<_AeJ1ageCxg^f}&x^ZNK0U|G+5jA( z9J@CC>2<_RFmDLuvbg^VO%^2V!u;L1XTF}$T)K1-rok30nTF}O9(ylP$(jvx%Td1A z3C%nF(U{PD{!C6{-r@5{${fv!&X>*{9nBkE9Bo^Bz%!cZsYTB9!D9alT`rxV& zW!OIf(A(R4TGRH!Jm4iTn#;s&r$srSxl6kU`&#fn|R(xgku+jLp|!_JY6*o7YC#_9g|T_mk2isuNB&S7{cEp z{$b%0LbhG%+b(=j_DCI6N175SsO zO%IEGa`D;fDAAdWtX6@Vl znoqOgr2VEDCs`6Pe+KHq-wcM+64?%Oz4kov6F-6%>^BFq_9D4wgUj5blC!CpkzLAQ ziMU-hfs3-4r}n7i?{%atHGd8-{OFQ3Lu-eU!^H)AR30HtdsGg{*rW1Dc?Nq_9wjc=qjI3QEg6dX4`5HmuCFGHjHx5abjTN)PAyL_r;x zNGH~bbLXHsBHm1%56~Fyt8e?Z??rpo+XyV@QDdKT`^v{Xzxjf0_~Dao<=x7Q>)pxH zO?G@ChFqW1>g_;gaDu8x*|gcziDpew!cVt*9@l8|$L zHQ*ghuZK_(NfL6-ZzlL~y02l}zzz)4WfzU_K;mi~E)GcVH_*p$&N;tY2*Uc_3+clY zMoQmBpj{m5cnkX0g#?aV2fwhs7$#GgALftk-{p^eea0!pLB~&8v>$PfemuS-bm4x4 zhEw0X%J&d13N-+8tuhJ6bX88lhT1~qH+1s);g0qhK zT-|#fC3tIRF8xbALo?@5P~S|Q_F}v?#Dj>q89EYi-MUL|<6!t7E`G4EQpkIs@uv!B z3g-(~2~QKQ7n*$$;@Nl@XyakvP4fS)@C{*a6rAboYhTM*^5--6)9i-a_?2xuydID} zk=b+S+UK~QOM9h$FS!3_r#)CR904c$rI~h-6qw=PXE@2$@i-R{M(Bkw%l|1hn@d6 z419-={J#zPsLA_13VOtbztwWMf7H;r*tFQ5SS$)1zuPgma%5#yWu*9%zy0HrDV2jk zRaKJC+x2u}WM$r-NVLxfk!f2$hz#2LL9B4=2RX^b-W+cfKB^bjMW!W6lXW>`lXbB+ z$+}4QLBpea645{I@V7qt#=GC7E~k|#m~=cOkNvY{8iF!)_>z@r=e_=+jVj}nhgACO zOSa$n{@SyeZcn_F>{_;c_{)R3Hr&3pYxnKnd~oNZ@L8I(z4+xj-}jalGu-sQ>?o~V zIN!Ir@_N0!y|nVX7k+R4qi^gS#JZxUcH5gmQ*3)@Xleybzp)ss+ZSJlp0l1$@!P;t zeK1k1}5h5qhO07MnPqZz= z{bSGMXqzM8f$4#j2pD~w;*R4eiNtTCq!~g*J54u9Zi13SDCvJPC9(KqM!1)!igQhp zYcr0Ccpu2HbK}PK-(t|aon8%n(VItNa5I+$*V25@mg2(?x!I}P3pmSn;jON5R*Oprt|4xFF zTZva0_{M}yz!iIm0mxPSCiCJRtc&S;b7Ca`R%wYD)OL#k7eLoCc;L4usrEFIR1^OP zPq!vYOne!|YjJ9D5l)d0{O92teHL`SEjj&wJV>lKHL_q4auE55Qm^40MrrQ{aeO4+ z$l|m&0cb=D=*AYS*yLWrag6r5qH*dri1vCYT0jTU-c+=X2pK7h7#F1_YY?q0!psDz z1#}RtkIB7;HW%Dg(QZja>l%s{&_T3rik8E2zN1XOnu_*LD3bvlMB5W&ve0ja!uhOK z&wGI#`?haWKURZxKv%ZAva3tqn&P#q9*dlD^|1J8xPi6^zDf>!t zRq!raR_ggz@tR&^9DY;VxQC2GNaJ2Mu8+7na+5s&ngS3lQI;aiP8mZ(;-V@slfg9Y z%8Xpgfb+>7j8njJ&xxkV6nhz{qGdxp|J%&;&Bj$D+t;y#e-7A1p1*}GbvC16W;+yu z&i`R|bmN-Sm}oBin$yN~4Tu)>Z22Q_mx9AIBqOo9%5nI2)woFCagpu?agYmO5uXVn zvIR3z1tZ>b9V5O05q+D}I{OtybOBm&;WJCG6d7p%Bi{F4F2#2kk=cwua*zvPDK>`$ z5!wC+ff$Cve;7-1Vg3kFIW_Pnfk!Z+3(%5ZFs23(c?U4kNJe~Q6eAu3(PBm%4Pq@L zx&SR_LBhJn;@d?yJ%n!S5=1%Jul9Q%>{mtBfSedvjq`-asR+cU5(918S0MC(T0fyc zx2FS9hu4Np*k^R7Kl&HH3JJvj;!iB=h&1v@l>Eh?&;h+je+6pE{}{CtH2zJ}M#XXSYvu%Hm9BzVudxjkDf`EGi+#z-w3w(aS<6dZB{3GC#?q+DkDroH=4w>BzACO=(YlvEF zL0@ZP?ZIJWo^dy{^*Q3PSmp4xSR+AX-VW1(m>IXjA^shV$@_ucc0Vj-%#8bi)u1#h zK-m4z-hacTc@ASTrXn0ohX|&Ia)t#&jWCUIhu; z3S#mp?Hat_*|$tS2^q&|%^v{K6h!)#*bWIVf^Lad;dwR`xh7lhEx|yy>?@GFB^c#2(lSczs$F!(;jKc z>+G{JVsk&g6F>iTV#lNtdoU0-@jEtZnjdX+aHGjNP5dgqFb5A@ZQzG#fan43)8M{O z2+uWKg^q?EunEsDsVgkH5EQL|-DDLwcie1(ZL*f<0&qfOv(`H+G#__S5NP!^`#PWcjhNV;(JO@{JiKbO`% zl)MQ#sA^c?JO#}`v5RaQu5K#)!B}BffKz9M8 zToRP;O(1Yy$@h*U{Mg6|gzbTp!1yr_ud*#5QZ5O~_a+h;l>sJhA;r5H9t0P2Vm&dd zk_Zr_JvE(nRXXjdO#4?jV53cN%BoVziXcr|fGLD3Baa~*gCmMr(k-h&oP#6cm0IS4 zVogb_p6FEPumEKpGnAi>n7%iKz%05Tqz_yXli!RZ;;lH77?gQ3D0B3_0!IYK7R11N zlKJ68?<;Y@J4Ot=CxS9Z@2hdZJBJu}vkJ_W;LKiN#H&4>I1-2NrP6jCL}cysa(E3e z?_+T`SAp{^9Jrc+0L>G`Toa|z7zUQf#$kmsC|!R{YP5w+C07JCX(GG$CmDGn=$zaIpFT=IXf&6lGmFUYU9>R#qs6;MMWHV+p(|!nqs-KI`&Qw2#XRCGa#yWmyp^ z%8JOKF&tk%lD>W<;ofF*pew<_hX3^=iM2uZ^&=_u^c#fg$a=C+l=Woc!-mh&&-F-( zAR-@0#76?U5Rh_gpXeD8x)?c`a8w{A@YRfWC}9eYpl3vCnR!egtTu8oVXcu92cg5cnuYK!VG|#4V%(4Sdq4Tu`7YS0LuMYD*V* z55j>Pli-w8nUdv!2Z1FBVvsr~@F1`dfd{GUaX=M;y z1C`CxgES{Hy&#o|)O&LfAgw9YF$x}O@J3?Jy&%FN6L+p1h$IfC&bZF)OHO~M$6;9C zJd8ji9_PL5vmu*=A4y#?cj@xQl`EIbuEo!!uJHCUu=?uTl-csb)MvxlxYXVkwe;|E z-;Xx!8C~2n8O=*ZPw5$LnvB+tjus@b2=N6E3lF^rmm{79-l*rjo`zk{F_?m7ibgzm z7M3jF9+?>~x~gZi z$>``w1I9+1j*c!K5Q%u0tl+A645ija_FcRMu5<^v!p*C{Y$dK}m#Ao!u4Ip%8N`?q zlw>`2$v_&%7^mbgoo1+C&dL7v#I;Cf{(d}b8MjH(n6Fnh$ z^KrP8(M1FBt=jjePv^F571L|Iuk@%3syAB3cqJa>(m{&VLwd6LHvRPu{;l1}Gy;tfYpupIqDE-?8Ux*27@XPM09SL>e zrUa&;LG{|TvFf#op1rhY?%Z_K;AL1g>68U?=HOB;8wyXmpuCaly?hL>70s!VrJGmy z;x52dvkLrjT3rTqW?{QazV)5s+k8l)lJoM;Ppr$mAZLC2!q`R8izAo%LmPED&~UAs zG9Y^egBul|A6pl_09roVUWE9e^`5Ey2<=swu5n%u`(cND1qfe~dIF~6 TUavtu^ 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