| /* |
| * Copyright (c) 2024 Raspberry Pi Ltd. SPDX-License-Identifier: BSD-3-Clause |
| * |
| * @file src/rp2_common/cmsis/stub/CMSIS/Device/RP2350/Include/RP2350.h |
| * @brief CMSIS HeaderFile |
| * @version 0.1 |
| * @date Thu Aug 8 04:04:02 2024 |
| * @note Generated by SVDConv V3.3.47 |
| * from File 'src/rp2_common/cmsis/../../rp2350/hardware_regs/RP2350.svd', |
| * last modified on Thu Aug 8 03:59:33 2024 |
| */ |
| |
| |
| /** @addtogroup Raspberry Pi |
| * @{ |
| */ |
| |
| |
| /** @addtogroup RP2350 |
| * @{ |
| */ |
| |
| |
| #ifndef RP2350_H |
| #define RP2350_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| |
| /** @addtogroup Configuration_of_CMSIS |
| * @{ |
| */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ Interrupt Number Definition ================ */ |
| /* =========================================================================================================================== */ |
| |
| typedef enum { |
| /* ======================================= ARM Cortex-M33 Specific Interrupt Numbers ======================================= */ |
| Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ |
| NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ |
| HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ |
| MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation |
| and No Match */ |
| BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory |
| related Fault */ |
| UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ |
| SecureFault_IRQn = -9, /*!< -9 Secure Fault Handler */ |
| SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ |
| DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ |
| PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ |
| SysTick_IRQn = -1, /*!< -1 System Tick Timer */ |
| /* =========================================== RP2350 Specific Interrupt Numbers =========================================== */ |
| TIMER0_IRQ_0_IRQn = 0, /*!< 0 TIMER0_IRQ_0 */ |
| TIMER0_IRQ_1_IRQn = 1, /*!< 1 TIMER0_IRQ_1 */ |
| TIMER0_IRQ_2_IRQn = 2, /*!< 2 TIMER0_IRQ_2 */ |
| TIMER0_IRQ_3_IRQn = 3, /*!< 3 TIMER0_IRQ_3 */ |
| TIMER1_IRQ_0_IRQn = 4, /*!< 4 TIMER1_IRQ_0 */ |
| TIMER1_IRQ_1_IRQn = 5, /*!< 5 TIMER1_IRQ_1 */ |
| TIMER1_IRQ_2_IRQn = 6, /*!< 6 TIMER1_IRQ_2 */ |
| TIMER1_IRQ_3_IRQn = 7, /*!< 7 TIMER1_IRQ_3 */ |
| PWM_IRQ_WRAP_0_IRQn = 8, /*!< 8 PWM_IRQ_WRAP_0 */ |
| PWM_IRQ_WRAP_1_IRQn = 9, /*!< 9 PWM_IRQ_WRAP_1 */ |
| DMA_IRQ_0_IRQn = 10, /*!< 10 DMA_IRQ_0 */ |
| DMA_IRQ_1_IRQn = 11, /*!< 11 DMA_IRQ_1 */ |
| DMA_IRQ_2_IRQn = 12, /*!< 12 DMA_IRQ_2 */ |
| DMA_IRQ_3_IRQn = 13, /*!< 13 DMA_IRQ_3 */ |
| USBCTRL_IRQ_IRQn = 14, /*!< 14 USBCTRL_IRQ */ |
| PIO0_IRQ_0_IRQn = 15, /*!< 15 PIO0_IRQ_0 */ |
| PIO0_IRQ_1_IRQn = 16, /*!< 16 PIO0_IRQ_1 */ |
| PIO1_IRQ_0_IRQn = 17, /*!< 17 PIO1_IRQ_0 */ |
| PIO1_IRQ_1_IRQn = 18, /*!< 18 PIO1_IRQ_1 */ |
| PIO2_IRQ_0_IRQn = 19, /*!< 19 PIO2_IRQ_0 */ |
| PIO2_IRQ_1_IRQn = 20, /*!< 20 PIO2_IRQ_1 */ |
| IO_IRQ_BANK0_IRQn = 21, /*!< 21 IO_IRQ_BANK0 */ |
| IO_IRQ_BANK0_NS_IRQn = 22, /*!< 22 IO_IRQ_BANK0_NS */ |
| IO_IRQ_QSPI_IRQn = 23, /*!< 23 IO_IRQ_QSPI */ |
| IO_IRQ_QSPI_NS_IRQn = 24, /*!< 24 IO_IRQ_QSPI_NS */ |
| SIO_IRQ_FIFO_IRQn = 25, /*!< 25 SIO_IRQ_FIFO */ |
| SIO_IRQ_BELL_IRQn = 26, /*!< 26 SIO_IRQ_BELL */ |
| SIO_IRQ_FIFO_NS_IRQn = 27, /*!< 27 SIO_IRQ_FIFO_NS */ |
| SIO_IRQ_BELL_NS_IRQn = 28, /*!< 28 SIO_IRQ_BELL_NS */ |
| SIO_IRQ_MTIMECMP_IRQn = 29, /*!< 29 SIO_IRQ_MTIMECMP */ |
| CLOCKS_IRQ_IRQn = 30, /*!< 30 CLOCKS_IRQ */ |
| SPI0_IRQ_IRQn = 31, /*!< 31 SPI0_IRQ */ |
| SPI1_IRQ_IRQn = 32, /*!< 32 SPI1_IRQ */ |
| UART0_IRQ_IRQn = 33, /*!< 33 UART0_IRQ */ |
| UART1_IRQ_IRQn = 34, /*!< 34 UART1_IRQ */ |
| ADC_IRQ_FIFO_IRQn = 35, /*!< 35 ADC_IRQ_FIFO */ |
| I2C0_IRQ_IRQn = 36, /*!< 36 I2C0_IRQ */ |
| I2C1_IRQ_IRQn = 37, /*!< 37 I2C1_IRQ */ |
| OTP_IRQ_IRQn = 38, /*!< 38 OTP_IRQ */ |
| TRNG_IRQ_IRQn = 39, /*!< 39 TRNG_IRQ */ |
| PLL_SYS_IRQ_IRQn = 42, /*!< 42 PLL_SYS_IRQ */ |
| PLL_USB_IRQ_IRQn = 43, /*!< 43 PLL_USB_IRQ */ |
| POWMAN_IRQ_POW_IRQn = 44, /*!< 44 POWMAN_IRQ_POW */ |
| POWMAN_IRQ_TIMER_IRQn = 45 /*!< 45 POWMAN_IRQ_TIMER */ |
| } IRQn_Type; |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ Processor and Core Peripheral Section ================ */ |
| /* =========================================================================================================================== */ |
| |
| /* ========================== Configuration of the ARM Cortex-M33 Processor and Core Peripherals =========================== */ |
| #define __CM33_REV 0x0100U /*!< CM33 Core Revision */ |
| #define __NVIC_PRIO_BITS 4 /*!< Number of Bits used for Priority Levels */ |
| #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ |
| #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ |
| #define __MPU_PRESENT 1 /*!< MPU present */ |
| #define __FPU_PRESENT 1 /*!< FPU present */ |
| #define __FPU_DP 0 /*!< Double Precision FPU */ |
| #define __DSP_PRESENT 1 /*!< DSP extension present */ |
| #define __SAUREGION_PRESENT 1 /*!< SAU region present */ |
| |
| |
| /** @} */ /* End of group Configuration_of_CMSIS */ |
| |
| #include "core_cm33.h" /*!< ARM Cortex-M33 processor and core peripherals */ |
| #include "system_RP2350.h" /*!< RP2350 System */ |
| |
| #ifndef __IM /*!< Fallback for older CMSIS versions */ |
| #define __IM __I |
| #endif |
| #ifndef __OM /*!< Fallback for older CMSIS versions */ |
| #define __OM __O |
| #endif |
| #ifndef __IOM /*!< Fallback for older CMSIS versions */ |
| #define __IOM __IO |
| #endif |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ Device Specific Peripheral Section ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** @addtogroup Device_Peripheral_peripherals |
| * @{ |
| */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ RESETS ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief RESETS (RESETS) |
| */ |
| |
| typedef struct { /*!< RESETS Structure */ |
| __IOM uint32_t RESET; /*!< RESET */ |
| __IOM uint32_t WDSEL; /*!< WDSEL */ |
| __IOM uint32_t RESET_DONE; /*!< RESET_DONE */ |
| } RESETS_Type; /*!< Size = 12 (0xc) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ PSM ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief PSM (PSM) |
| */ |
| |
| typedef struct { /*!< PSM Structure */ |
| __IOM uint32_t FRCE_ON; /*!< Force block out of reset (i.e. power it on) */ |
| __IOM uint32_t FRCE_OFF; /*!< Force into reset (i.e. power it off) */ |
| __IOM uint32_t WDSEL; /*!< Set to 1 if the watchdog should reset this */ |
| __IOM uint32_t DONE; /*!< Is the subsystem ready? */ |
| } PSM_Type; /*!< Size = 16 (0x10) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ CLOCKS ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief CLOCKS (CLOCKS) |
| */ |
| |
| typedef struct { /*!< CLOCKS Structure */ |
| __IOM uint32_t CLK_GPOUT0_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_GPOUT0_DIV; /*!< CLK_GPOUT0_DIV */ |
| __IOM uint32_t CLK_GPOUT0_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_GPOUT1_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_GPOUT1_DIV; /*!< CLK_GPOUT1_DIV */ |
| __IOM uint32_t CLK_GPOUT1_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_GPOUT2_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_GPOUT2_DIV; /*!< CLK_GPOUT2_DIV */ |
| __IOM uint32_t CLK_GPOUT2_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_GPOUT3_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_GPOUT3_DIV; /*!< CLK_GPOUT3_DIV */ |
| __IOM uint32_t CLK_GPOUT3_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_REF_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_REF_DIV; /*!< CLK_REF_DIV */ |
| __IOM uint32_t CLK_REF_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_SYS_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_SYS_DIV; /*!< CLK_SYS_DIV */ |
| __IOM uint32_t CLK_SYS_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_PERI_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_PERI_DIV; /*!< CLK_PERI_DIV */ |
| __IOM uint32_t CLK_PERI_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_HSTX_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_HSTX_DIV; /*!< CLK_HSTX_DIV */ |
| __IOM uint32_t CLK_HSTX_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_USB_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_USB_DIV; /*!< CLK_USB_DIV */ |
| __IOM uint32_t CLK_USB_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t CLK_ADC_CTRL; /*!< Clock control, can be changed on-the-fly (except for auxsrc) */ |
| __IOM uint32_t CLK_ADC_DIV; /*!< CLK_ADC_DIV */ |
| __IOM uint32_t CLK_ADC_SELECTED; /*!< Indicates which src is currently selected (one-hot) */ |
| __IOM uint32_t DFTCLK_XOSC_CTRL; /*!< DFTCLK_XOSC_CTRL */ |
| __IOM uint32_t DFTCLK_ROSC_CTRL; /*!< DFTCLK_ROSC_CTRL */ |
| __IOM uint32_t DFTCLK_LPOSC_CTRL; /*!< DFTCLK_LPOSC_CTRL */ |
| __IOM uint32_t CLK_SYS_RESUS_CTRL; /*!< CLK_SYS_RESUS_CTRL */ |
| __IOM uint32_t CLK_SYS_RESUS_STATUS; /*!< CLK_SYS_RESUS_STATUS */ |
| __IOM uint32_t FC0_REF_KHZ; /*!< Reference clock frequency in kHz */ |
| __IOM uint32_t FC0_MIN_KHZ; /*!< Minimum pass frequency in kHz. This is optional. Set to 0 if |
| you are not using the pass/fail flags */ |
| __IOM uint32_t FC0_MAX_KHZ; /*!< Maximum pass frequency in kHz. This is optional. Set to 0x1ffffff |
| if you are not using the pass/fail flags */ |
| __IOM uint32_t FC0_DELAY; /*!< Delays the start of frequency counting to allow the mux to settle |
| Delay is measured in multiples of the reference clock period */ |
| __IOM uint32_t FC0_INTERVAL; /*!< The test interval is 0.98us * 2**interval, but let's call it |
| 1us * 2**interval The default gives a test interval of |
| 250us */ |
| __IOM uint32_t FC0_SRC; /*!< Clock sent to frequency counter, set to 0 when not required |
| Writing to this register initiates the frequency count */ |
| __IOM uint32_t FC0_STATUS; /*!< Frequency counter status */ |
| __IOM uint32_t FC0_RESULT; /*!< Result of frequency measurement, only valid when status_done=1 */ |
| __IOM uint32_t WAKE_EN0; /*!< enable clock in wake mode */ |
| __IOM uint32_t WAKE_EN1; /*!< enable clock in wake mode */ |
| __IOM uint32_t SLEEP_EN0; /*!< enable clock in sleep mode */ |
| __IOM uint32_t SLEEP_EN1; /*!< enable clock in sleep mode */ |
| __IOM uint32_t ENABLED0; /*!< indicates the state of the clock enable */ |
| __IOM uint32_t ENABLED1; /*!< indicates the state of the clock enable */ |
| __IOM uint32_t INTR; /*!< Raw Interrupts */ |
| __IOM uint32_t INTE; /*!< Interrupt Enable */ |
| __IOM uint32_t INTF; /*!< Interrupt Force */ |
| __IOM uint32_t INTS; /*!< Interrupt status after masking & forcing */ |
| } CLOCKS_Type; /*!< Size = 212 (0xd4) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ TICKS ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief TICKS (TICKS) |
| */ |
| |
| typedef struct { /*!< TICKS Structure */ |
| __IOM uint32_t PROC0_CTRL; /*!< Controls the tick generator */ |
| __IOM uint32_t PROC0_CYCLES; /*!< PROC0_CYCLES */ |
| __IOM uint32_t PROC0_COUNT; /*!< PROC0_COUNT */ |
| __IOM uint32_t PROC1_CTRL; /*!< Controls the tick generator */ |
| __IOM uint32_t PROC1_CYCLES; /*!< PROC1_CYCLES */ |
| __IOM uint32_t PROC1_COUNT; /*!< PROC1_COUNT */ |
| __IOM uint32_t TIMER0_CTRL; /*!< Controls the tick generator */ |
| __IOM uint32_t TIMER0_CYCLES; /*!< TIMER0_CYCLES */ |
| __IOM uint32_t TIMER0_COUNT; /*!< TIMER0_COUNT */ |
| __IOM uint32_t TIMER1_CTRL; /*!< Controls the tick generator */ |
| __IOM uint32_t TIMER1_CYCLES; /*!< TIMER1_CYCLES */ |
| __IOM uint32_t TIMER1_COUNT; /*!< TIMER1_COUNT */ |
| __IOM uint32_t WATCHDOG_CTRL; /*!< Controls the tick generator */ |
| __IOM uint32_t WATCHDOG_CYCLES; /*!< WATCHDOG_CYCLES */ |
| __IOM uint32_t WATCHDOG_COUNT; /*!< WATCHDOG_COUNT */ |
| __IOM uint32_t RISCV_CTRL; /*!< Controls the tick generator */ |
| __IOM uint32_t RISCV_CYCLES; /*!< RISCV_CYCLES */ |
| __IOM uint32_t RISCV_COUNT; /*!< RISCV_COUNT */ |
| } TICKS_Type; /*!< Size = 72 (0x48) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ PADS_BANK0 ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief PADS_BANK0 (PADS_BANK0) |
| */ |
| |
| typedef struct { /*!< PADS_BANK0 Structure */ |
| __IOM uint32_t VOLTAGE_SELECT; /*!< Voltage select. Per bank control */ |
| __IOM uint32_t GPIO0; /*!< GPIO0 */ |
| __IOM uint32_t GPIO1; /*!< GPIO1 */ |
| __IOM uint32_t GPIO2; /*!< GPIO2 */ |
| __IOM uint32_t GPIO3; /*!< GPIO3 */ |
| __IOM uint32_t GPIO4; /*!< GPIO4 */ |
| __IOM uint32_t GPIO5; /*!< GPIO5 */ |
| __IOM uint32_t GPIO6; /*!< GPIO6 */ |
| __IOM uint32_t GPIO7; /*!< GPIO7 */ |
| __IOM uint32_t GPIO8; /*!< GPIO8 */ |
| __IOM uint32_t GPIO9; /*!< GPIO9 */ |
| __IOM uint32_t GPIO10; /*!< GPIO10 */ |
| __IOM uint32_t GPIO11; /*!< GPIO11 */ |
| __IOM uint32_t GPIO12; /*!< GPIO12 */ |
| __IOM uint32_t GPIO13; /*!< GPIO13 */ |
| __IOM uint32_t GPIO14; /*!< GPIO14 */ |
| __IOM uint32_t GPIO15; /*!< GPIO15 */ |
| __IOM uint32_t GPIO16; /*!< GPIO16 */ |
| __IOM uint32_t GPIO17; /*!< GPIO17 */ |
| __IOM uint32_t GPIO18; /*!< GPIO18 */ |
| __IOM uint32_t GPIO19; /*!< GPIO19 */ |
| __IOM uint32_t GPIO20; /*!< GPIO20 */ |
| __IOM uint32_t GPIO21; /*!< GPIO21 */ |
| __IOM uint32_t GPIO22; /*!< GPIO22 */ |
| __IOM uint32_t GPIO23; /*!< GPIO23 */ |
| __IOM uint32_t GPIO24; /*!< GPIO24 */ |
| __IOM uint32_t GPIO25; /*!< GPIO25 */ |
| __IOM uint32_t GPIO26; /*!< GPIO26 */ |
| __IOM uint32_t GPIO27; /*!< GPIO27 */ |
| __IOM uint32_t GPIO28; /*!< GPIO28 */ |
| __IOM uint32_t GPIO29; /*!< GPIO29 */ |
| __IOM uint32_t GPIO30; /*!< GPIO30 */ |
| __IOM uint32_t GPIO31; /*!< GPIO31 */ |
| __IOM uint32_t GPIO32; /*!< GPIO32 */ |
| __IOM uint32_t GPIO33; /*!< GPIO33 */ |
| __IOM uint32_t GPIO34; /*!< GPIO34 */ |
| __IOM uint32_t GPIO35; /*!< GPIO35 */ |
| __IOM uint32_t GPIO36; /*!< GPIO36 */ |
| __IOM uint32_t GPIO37; /*!< GPIO37 */ |
| __IOM uint32_t GPIO38; /*!< GPIO38 */ |
| __IOM uint32_t GPIO39; /*!< GPIO39 */ |
| __IOM uint32_t GPIO40; /*!< GPIO40 */ |
| __IOM uint32_t GPIO41; /*!< GPIO41 */ |
| __IOM uint32_t GPIO42; /*!< GPIO42 */ |
| __IOM uint32_t GPIO43; /*!< GPIO43 */ |
| __IOM uint32_t GPIO44; /*!< GPIO44 */ |
| __IOM uint32_t GPIO45; /*!< GPIO45 */ |
| __IOM uint32_t GPIO46; /*!< GPIO46 */ |
| __IOM uint32_t GPIO47; /*!< GPIO47 */ |
| __IOM uint32_t SWCLK; /*!< SWCLK */ |
| __IOM uint32_t SWD; /*!< SWD */ |
| } PADS_BANK0_Type; /*!< Size = 204 (0xcc) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ PADS_QSPI ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief PADS_QSPI (PADS_QSPI) |
| */ |
| |
| typedef struct { /*!< PADS_QSPI Structure */ |
| __IOM uint32_t VOLTAGE_SELECT; /*!< Voltage select. Per bank control */ |
| __IOM uint32_t GPIO_QSPI_SCLK; /*!< GPIO_QSPI_SCLK */ |
| __IOM uint32_t GPIO_QSPI_SD0; /*!< GPIO_QSPI_SD0 */ |
| __IOM uint32_t GPIO_QSPI_SD1; /*!< GPIO_QSPI_SD1 */ |
| __IOM uint32_t GPIO_QSPI_SD2; /*!< GPIO_QSPI_SD2 */ |
| __IOM uint32_t GPIO_QSPI_SD3; /*!< GPIO_QSPI_SD3 */ |
| __IOM uint32_t GPIO_QSPI_SS; /*!< GPIO_QSPI_SS */ |
| } PADS_QSPI_Type; /*!< Size = 28 (0x1c) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ IO_QSPI ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief IO_QSPI (IO_QSPI) |
| */ |
| |
| typedef struct { /*!< IO_QSPI Structure */ |
| __IOM uint32_t USBPHY_DP_STATUS; /*!< USBPHY_DP_STATUS */ |
| __IOM uint32_t USBPHY_DP_CTRL; /*!< USBPHY_DP_CTRL */ |
| __IOM uint32_t USBPHY_DM_STATUS; /*!< USBPHY_DM_STATUS */ |
| __IOM uint32_t USBPHY_DM_CTRL; /*!< USBPHY_DM_CTRL */ |
| __IOM uint32_t GPIO_QSPI_SCLK_STATUS; /*!< GPIO_QSPI_SCLK_STATUS */ |
| __IOM uint32_t GPIO_QSPI_SCLK_CTRL; /*!< GPIO_QSPI_SCLK_CTRL */ |
| __IOM uint32_t GPIO_QSPI_SS_STATUS; /*!< GPIO_QSPI_SS_STATUS */ |
| __IOM uint32_t GPIO_QSPI_SS_CTRL; /*!< GPIO_QSPI_SS_CTRL */ |
| __IOM uint32_t GPIO_QSPI_SD0_STATUS; /*!< GPIO_QSPI_SD0_STATUS */ |
| __IOM uint32_t GPIO_QSPI_SD0_CTRL; /*!< GPIO_QSPI_SD0_CTRL */ |
| __IOM uint32_t GPIO_QSPI_SD1_STATUS; /*!< GPIO_QSPI_SD1_STATUS */ |
| __IOM uint32_t GPIO_QSPI_SD1_CTRL; /*!< GPIO_QSPI_SD1_CTRL */ |
| __IOM uint32_t GPIO_QSPI_SD2_STATUS; /*!< GPIO_QSPI_SD2_STATUS */ |
| __IOM uint32_t GPIO_QSPI_SD2_CTRL; /*!< GPIO_QSPI_SD2_CTRL */ |
| __IOM uint32_t GPIO_QSPI_SD3_STATUS; /*!< GPIO_QSPI_SD3_STATUS */ |
| __IOM uint32_t GPIO_QSPI_SD3_CTRL; /*!< GPIO_QSPI_SD3_CTRL */ |
| __IM uint32_t RESERVED[112]; |
| __IOM uint32_t IRQSUMMARY_PROC0_SECURE; /*!< IRQSUMMARY_PROC0_SECURE */ |
| __IOM uint32_t IRQSUMMARY_PROC0_NONSECURE; /*!< IRQSUMMARY_PROC0_NONSECURE */ |
| __IOM uint32_t IRQSUMMARY_PROC1_SECURE; /*!< IRQSUMMARY_PROC1_SECURE */ |
| __IOM uint32_t IRQSUMMARY_PROC1_NONSECURE; /*!< IRQSUMMARY_PROC1_NONSECURE */ |
| __IOM uint32_t IRQSUMMARY_DORMANT_WAKE_SECURE;/*!< IRQSUMMARY_DORMANT_WAKE_SECURE */ |
| __IOM uint32_t IRQSUMMARY_DORMANT_WAKE_NONSECURE;/*!< IRQSUMMARY_DORMANT_WAKE_NONSECURE */ |
| __IOM uint32_t INTR; /*!< Raw Interrupts */ |
| __IOM uint32_t PROC0_INTE; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTF; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTS; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC1_INTE; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTF; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTS; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t DORMANT_WAKE_INTE; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| } IO_QSPI_Type; /*!< Size = 576 (0x240) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ IO_BANK0 ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief IO_BANK0 (IO_BANK0) |
| */ |
| |
| typedef struct { /*!< IO_BANK0 Structure */ |
| __IOM uint32_t GPIO0_STATUS; /*!< GPIO0_STATUS */ |
| __IOM uint32_t GPIO0_CTRL; /*!< GPIO0_CTRL */ |
| __IOM uint32_t GPIO1_STATUS; /*!< GPIO1_STATUS */ |
| __IOM uint32_t GPIO1_CTRL; /*!< GPIO1_CTRL */ |
| __IOM uint32_t GPIO2_STATUS; /*!< GPIO2_STATUS */ |
| __IOM uint32_t GPIO2_CTRL; /*!< GPIO2_CTRL */ |
| __IOM uint32_t GPIO3_STATUS; /*!< GPIO3_STATUS */ |
| __IOM uint32_t GPIO3_CTRL; /*!< GPIO3_CTRL */ |
| __IOM uint32_t GPIO4_STATUS; /*!< GPIO4_STATUS */ |
| __IOM uint32_t GPIO4_CTRL; /*!< GPIO4_CTRL */ |
| __IOM uint32_t GPIO5_STATUS; /*!< GPIO5_STATUS */ |
| __IOM uint32_t GPIO5_CTRL; /*!< GPIO5_CTRL */ |
| __IOM uint32_t GPIO6_STATUS; /*!< GPIO6_STATUS */ |
| __IOM uint32_t GPIO6_CTRL; /*!< GPIO6_CTRL */ |
| __IOM uint32_t GPIO7_STATUS; /*!< GPIO7_STATUS */ |
| __IOM uint32_t GPIO7_CTRL; /*!< GPIO7_CTRL */ |
| __IOM uint32_t GPIO8_STATUS; /*!< GPIO8_STATUS */ |
| __IOM uint32_t GPIO8_CTRL; /*!< GPIO8_CTRL */ |
| __IOM uint32_t GPIO9_STATUS; /*!< GPIO9_STATUS */ |
| __IOM uint32_t GPIO9_CTRL; /*!< GPIO9_CTRL */ |
| __IOM uint32_t GPIO10_STATUS; /*!< GPIO10_STATUS */ |
| __IOM uint32_t GPIO10_CTRL; /*!< GPIO10_CTRL */ |
| __IOM uint32_t GPIO11_STATUS; /*!< GPIO11_STATUS */ |
| __IOM uint32_t GPIO11_CTRL; /*!< GPIO11_CTRL */ |
| __IOM uint32_t GPIO12_STATUS; /*!< GPIO12_STATUS */ |
| __IOM uint32_t GPIO12_CTRL; /*!< GPIO12_CTRL */ |
| __IOM uint32_t GPIO13_STATUS; /*!< GPIO13_STATUS */ |
| __IOM uint32_t GPIO13_CTRL; /*!< GPIO13_CTRL */ |
| __IOM uint32_t GPIO14_STATUS; /*!< GPIO14_STATUS */ |
| __IOM uint32_t GPIO14_CTRL; /*!< GPIO14_CTRL */ |
| __IOM uint32_t GPIO15_STATUS; /*!< GPIO15_STATUS */ |
| __IOM uint32_t GPIO15_CTRL; /*!< GPIO15_CTRL */ |
| __IOM uint32_t GPIO16_STATUS; /*!< GPIO16_STATUS */ |
| __IOM uint32_t GPIO16_CTRL; /*!< GPIO16_CTRL */ |
| __IOM uint32_t GPIO17_STATUS; /*!< GPIO17_STATUS */ |
| __IOM uint32_t GPIO17_CTRL; /*!< GPIO17_CTRL */ |
| __IOM uint32_t GPIO18_STATUS; /*!< GPIO18_STATUS */ |
| __IOM uint32_t GPIO18_CTRL; /*!< GPIO18_CTRL */ |
| __IOM uint32_t GPIO19_STATUS; /*!< GPIO19_STATUS */ |
| __IOM uint32_t GPIO19_CTRL; /*!< GPIO19_CTRL */ |
| __IOM uint32_t GPIO20_STATUS; /*!< GPIO20_STATUS */ |
| __IOM uint32_t GPIO20_CTRL; /*!< GPIO20_CTRL */ |
| __IOM uint32_t GPIO21_STATUS; /*!< GPIO21_STATUS */ |
| __IOM uint32_t GPIO21_CTRL; /*!< GPIO21_CTRL */ |
| __IOM uint32_t GPIO22_STATUS; /*!< GPIO22_STATUS */ |
| __IOM uint32_t GPIO22_CTRL; /*!< GPIO22_CTRL */ |
| __IOM uint32_t GPIO23_STATUS; /*!< GPIO23_STATUS */ |
| __IOM uint32_t GPIO23_CTRL; /*!< GPIO23_CTRL */ |
| __IOM uint32_t GPIO24_STATUS; /*!< GPIO24_STATUS */ |
| __IOM uint32_t GPIO24_CTRL; /*!< GPIO24_CTRL */ |
| __IOM uint32_t GPIO25_STATUS; /*!< GPIO25_STATUS */ |
| __IOM uint32_t GPIO25_CTRL; /*!< GPIO25_CTRL */ |
| __IOM uint32_t GPIO26_STATUS; /*!< GPIO26_STATUS */ |
| __IOM uint32_t GPIO26_CTRL; /*!< GPIO26_CTRL */ |
| __IOM uint32_t GPIO27_STATUS; /*!< GPIO27_STATUS */ |
| __IOM uint32_t GPIO27_CTRL; /*!< GPIO27_CTRL */ |
| __IOM uint32_t GPIO28_STATUS; /*!< GPIO28_STATUS */ |
| __IOM uint32_t GPIO28_CTRL; /*!< GPIO28_CTRL */ |
| __IOM uint32_t GPIO29_STATUS; /*!< GPIO29_STATUS */ |
| __IOM uint32_t GPIO29_CTRL; /*!< GPIO29_CTRL */ |
| __IOM uint32_t GPIO30_STATUS; /*!< GPIO30_STATUS */ |
| __IOM uint32_t GPIO30_CTRL; /*!< GPIO30_CTRL */ |
| __IOM uint32_t GPIO31_STATUS; /*!< GPIO31_STATUS */ |
| __IOM uint32_t GPIO31_CTRL; /*!< GPIO31_CTRL */ |
| __IOM uint32_t GPIO32_STATUS; /*!< GPIO32_STATUS */ |
| __IOM uint32_t GPIO32_CTRL; /*!< GPIO32_CTRL */ |
| __IOM uint32_t GPIO33_STATUS; /*!< GPIO33_STATUS */ |
| __IOM uint32_t GPIO33_CTRL; /*!< GPIO33_CTRL */ |
| __IOM uint32_t GPIO34_STATUS; /*!< GPIO34_STATUS */ |
| __IOM uint32_t GPIO34_CTRL; /*!< GPIO34_CTRL */ |
| __IOM uint32_t GPIO35_STATUS; /*!< GPIO35_STATUS */ |
| __IOM uint32_t GPIO35_CTRL; /*!< GPIO35_CTRL */ |
| __IOM uint32_t GPIO36_STATUS; /*!< GPIO36_STATUS */ |
| __IOM uint32_t GPIO36_CTRL; /*!< GPIO36_CTRL */ |
| __IOM uint32_t GPIO37_STATUS; /*!< GPIO37_STATUS */ |
| __IOM uint32_t GPIO37_CTRL; /*!< GPIO37_CTRL */ |
| __IOM uint32_t GPIO38_STATUS; /*!< GPIO38_STATUS */ |
| __IOM uint32_t GPIO38_CTRL; /*!< GPIO38_CTRL */ |
| __IOM uint32_t GPIO39_STATUS; /*!< GPIO39_STATUS */ |
| __IOM uint32_t GPIO39_CTRL; /*!< GPIO39_CTRL */ |
| __IOM uint32_t GPIO40_STATUS; /*!< GPIO40_STATUS */ |
| __IOM uint32_t GPIO40_CTRL; /*!< GPIO40_CTRL */ |
| __IOM uint32_t GPIO41_STATUS; /*!< GPIO41_STATUS */ |
| __IOM uint32_t GPIO41_CTRL; /*!< GPIO41_CTRL */ |
| __IOM uint32_t GPIO42_STATUS; /*!< GPIO42_STATUS */ |
| __IOM uint32_t GPIO42_CTRL; /*!< GPIO42_CTRL */ |
| __IOM uint32_t GPIO43_STATUS; /*!< GPIO43_STATUS */ |
| __IOM uint32_t GPIO43_CTRL; /*!< GPIO43_CTRL */ |
| __IOM uint32_t GPIO44_STATUS; /*!< GPIO44_STATUS */ |
| __IOM uint32_t GPIO44_CTRL; /*!< GPIO44_CTRL */ |
| __IOM uint32_t GPIO45_STATUS; /*!< GPIO45_STATUS */ |
| __IOM uint32_t GPIO45_CTRL; /*!< GPIO45_CTRL */ |
| __IOM uint32_t GPIO46_STATUS; /*!< GPIO46_STATUS */ |
| __IOM uint32_t GPIO46_CTRL; /*!< GPIO46_CTRL */ |
| __IOM uint32_t GPIO47_STATUS; /*!< GPIO47_STATUS */ |
| __IOM uint32_t GPIO47_CTRL; /*!< GPIO47_CTRL */ |
| __IM uint32_t RESERVED[32]; |
| __IOM uint32_t IRQSUMMARY_PROC0_SECURE0; /*!< IRQSUMMARY_PROC0_SECURE0 */ |
| __IOM uint32_t IRQSUMMARY_PROC0_SECURE1; /*!< IRQSUMMARY_PROC0_SECURE1 */ |
| __IOM uint32_t IRQSUMMARY_PROC0_NONSECURE0; /*!< IRQSUMMARY_PROC0_NONSECURE0 */ |
| __IOM uint32_t IRQSUMMARY_PROC0_NONSECURE1; /*!< IRQSUMMARY_PROC0_NONSECURE1 */ |
| __IOM uint32_t IRQSUMMARY_PROC1_SECURE0; /*!< IRQSUMMARY_PROC1_SECURE0 */ |
| __IOM uint32_t IRQSUMMARY_PROC1_SECURE1; /*!< IRQSUMMARY_PROC1_SECURE1 */ |
| __IOM uint32_t IRQSUMMARY_PROC1_NONSECURE0; /*!< IRQSUMMARY_PROC1_NONSECURE0 */ |
| __IOM uint32_t IRQSUMMARY_PROC1_NONSECURE1; /*!< IRQSUMMARY_PROC1_NONSECURE1 */ |
| __IOM uint32_t IRQSUMMARY_DORMANT_WAKE_SECURE0;/*!< IRQSUMMARY_DORMANT_WAKE_SECURE0 */ |
| __IOM uint32_t IRQSUMMARY_DORMANT_WAKE_SECURE1;/*!< IRQSUMMARY_DORMANT_WAKE_SECURE1 */ |
| __IOM uint32_t IRQSUMMARY_DORMANT_WAKE_NONSECURE0;/*!< IRQSUMMARY_DORMANT_WAKE_NONSECURE0 */ |
| __IOM uint32_t IRQSUMMARY_DORMANT_WAKE_NONSECURE1;/*!< IRQSUMMARY_DORMANT_WAKE_NONSECURE1 */ |
| __IOM uint32_t INTR0; /*!< Raw Interrupts */ |
| __IOM uint32_t INTR1; /*!< Raw Interrupts */ |
| __IOM uint32_t INTR2; /*!< Raw Interrupts */ |
| __IOM uint32_t INTR3; /*!< Raw Interrupts */ |
| __IOM uint32_t INTR4; /*!< Raw Interrupts */ |
| __IOM uint32_t INTR5; /*!< Raw Interrupts */ |
| __IOM uint32_t PROC0_INTE0; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTE1; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTE2; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTE3; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTE4; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTE5; /*!< Interrupt Enable for proc0 */ |
| __IOM uint32_t PROC0_INTF0; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTF1; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTF2; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTF3; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTF4; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTF5; /*!< Interrupt Force for proc0 */ |
| __IOM uint32_t PROC0_INTS0; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC0_INTS1; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC0_INTS2; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC0_INTS3; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC0_INTS4; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC0_INTS5; /*!< Interrupt status after masking & forcing for proc0 */ |
| __IOM uint32_t PROC1_INTE0; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTE1; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTE2; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTE3; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTE4; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTE5; /*!< Interrupt Enable for proc1 */ |
| __IOM uint32_t PROC1_INTF0; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTF1; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTF2; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTF3; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTF4; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTF5; /*!< Interrupt Force for proc1 */ |
| __IOM uint32_t PROC1_INTS0; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t PROC1_INTS1; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t PROC1_INTS2; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t PROC1_INTS3; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t PROC1_INTS4; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t PROC1_INTS5; /*!< Interrupt status after masking & forcing for proc1 */ |
| __IOM uint32_t DORMANT_WAKE_INTE0; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTE1; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTE2; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTE3; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTE4; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTE5; /*!< Interrupt Enable for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF0; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF1; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF2; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF3; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF4; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTF5; /*!< Interrupt Force for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS0; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS1; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS2; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS3; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS4; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| __IOM uint32_t DORMANT_WAKE_INTS5; /*!< Interrupt status after masking & forcing for dormant_wake */ |
| } IO_BANK0_Type; /*!< Size = 800 (0x320) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ SYSINFO ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief SYSINFO (SYSINFO) |
| */ |
| |
| typedef struct { /*!< SYSINFO Structure */ |
| __IOM uint32_t CHIP_ID; /*!< JEDEC JEP-106 compliant chip identifier. */ |
| __IOM uint32_t PACKAGE_SEL; /*!< PACKAGE_SEL */ |
| __IOM uint32_t PLATFORM; /*!< Platform register. Allows software to know what environment |
| it is running in during pre-production development. Post-production, |
| the PLATFORM is always ASIC, non-SIM. */ |
| __IM uint32_t RESERVED[2]; |
| __IOM uint32_t GITREF_RP2350; /*!< Git hash of the chip source. Used to identify chip version. */ |
| } SYSINFO_Type; /*!< Size = 24 (0x18) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ SHA256 ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief SHA-256 hash function implementation (SHA256) |
| */ |
| |
| typedef struct { /*!< SHA256 Structure */ |
| __IOM uint32_t CSR; /*!< Control and status register */ |
| __IOM uint32_t WDATA; /*!< Write data register */ |
| __IOM uint32_t SUM0; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM1; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM2; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM3; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM4; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM5; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM6; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| __IOM uint32_t SUM7; /*!< 256-bit checksum result. Contents are undefined when CSR_SUM_VLD |
| is 0. */ |
| } SHA256_Type; /*!< Size = 40 (0x28) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ HSTX_FIFO ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief FIFO status and write access for HSTX (HSTX_FIFO) |
| */ |
| |
| typedef struct { /*!< HSTX_FIFO Structure */ |
| __IOM uint32_t STAT; /*!< FIFO status */ |
| __IOM uint32_t FIFO; /*!< Write access to FIFO */ |
| } HSTX_FIFO_Type; /*!< Size = 8 (0x8) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ HSTX_CTRL ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Control interface to HSTX. For FIFO write access and status, see the HSTX_FIFO register block. (HSTX_CTRL) |
| */ |
| |
| typedef struct { /*!< HSTX_CTRL Structure */ |
| __IOM uint32_t CSR; /*!< CSR */ |
| __IOM uint32_t BIT0; /*!< Data control register for output bit 0 */ |
| __IOM uint32_t BIT1; /*!< Data control register for output bit 1 */ |
| __IOM uint32_t BIT2; /*!< Data control register for output bit 2 */ |
| __IOM uint32_t BIT3; /*!< Data control register for output bit 3 */ |
| __IOM uint32_t BIT4; /*!< Data control register for output bit 4 */ |
| __IOM uint32_t BIT5; /*!< Data control register for output bit 5 */ |
| __IOM uint32_t BIT6; /*!< Data control register for output bit 6 */ |
| __IOM uint32_t BIT7; /*!< Data control register for output bit 7 */ |
| __IOM uint32_t EXPAND_SHIFT; /*!< Configure the optional shifter inside the command expander */ |
| __IOM uint32_t EXPAND_TMDS; /*!< Configure the optional TMDS encoder inside the command expander */ |
| } HSTX_CTRL_Type; /*!< Size = 44 (0x2c) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ EPPB ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Cortex-M33 EPPB vendor register block for RP2350 (EPPB) |
| */ |
| |
| typedef struct { /*!< EPPB Structure */ |
| __IOM uint32_t NMI_MASK0; /*!< NMI mask for IRQs 0 through 31. This register is core-local, |
| and is reset by a processor warm reset. */ |
| __IOM uint32_t NMI_MASK1; /*!< NMI mask for IRQs 0 though 51. This register is core-local, |
| and is reset by a processor warm reset. */ |
| __IOM uint32_t SLEEPCTRL; /*!< Nonstandard sleep control register */ |
| } EPPB_Type; /*!< Size = 12 (0xc) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ PPB ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief TEAL registers accessible through the debug interface (PPB) |
| */ |
| |
| typedef struct { /*!< PPB Structure */ |
| __IOM uint32_t ITM_STIM0; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM1; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM2; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM3; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM4; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM5; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM6; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM7; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM8; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM9; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM10; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM11; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM12; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM13; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM14; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM15; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM16; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM17; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM18; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM19; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM20; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM21; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM22; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM23; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM24; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM25; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM26; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM27; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM28; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM29; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM30; /*!< Provides the interface for generating Instrumentation packets */ |
| __IOM uint32_t ITM_STIM31; /*!< Provides the interface for generating Instrumentation packets */ |
| __IM uint32_t RESERVED[864]; |
| __IOM uint32_t ITM_TER0; /*!< Provide an individual enable bit for each ITM_STIM register */ |
| __IM uint32_t RESERVED1[15]; |
| __IOM uint32_t ITM_TPR; /*!< Controls which stimulus ports can be accessed by unprivileged |
| code */ |
| __IM uint32_t RESERVED2[15]; |
| __IOM uint32_t ITM_TCR; /*!< Configures and controls transfers through the ITM interface */ |
| __IM uint32_t RESERVED3[27]; |
| __IOM uint32_t INT_ATREADY; /*!< Integration Mode: Read ATB Ready */ |
| __IM uint32_t RESERVED4; |
| __IOM uint32_t INT_ATVALID; /*!< Integration Mode: Write ATB Valid */ |
| __IM uint32_t RESERVED5; |
| __IOM uint32_t ITM_ITCTRL; /*!< Integration Mode Control Register */ |
| __IM uint32_t RESERVED6[46]; |
| __IOM uint32_t ITM_DEVARCH; /*!< Provides CoreSight discovery information for the ITM */ |
| __IM uint32_t RESERVED7[3]; |
| __IOM uint32_t ITM_DEVTYPE; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR4; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR5; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR6; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR7; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR0; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR1; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR2; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_PIDR3; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_CIDR0; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_CIDR1; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_CIDR2; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t ITM_CIDR3; /*!< Provides CoreSight discovery information for the ITM */ |
| __IOM uint32_t DWT_CTRL; /*!< Provides configuration and status information for the DWT unit, |
| and used to control features of the unit */ |
| __IOM uint32_t DWT_CYCCNT; /*!< Shows or sets the value of the processor cycle counter, CYCCNT */ |
| __IM uint32_t RESERVED8; |
| __IOM uint32_t DWT_EXCCNT; /*!< Counts the total cycles spent in exception processing */ |
| __IM uint32_t RESERVED9; |
| __IOM uint32_t DWT_LSUCNT; /*!< Increments on the additional cycles required to execute all |
| load or store instructions */ |
| __IOM uint32_t DWT_FOLDCNT; /*!< Increments on the additional cycles required to execute all |
| load or store instructions */ |
| __IM uint32_t RESERVED10; |
| __IOM uint32_t DWT_COMP0; /*!< Provides a reference value for use by watchpoint comparator |
| 0 */ |
| __IM uint32_t RESERVED11; |
| __IOM uint32_t DWT_FUNCTION0; /*!< Controls the operation of watchpoint comparator 0 */ |
| __IM uint32_t RESERVED12; |
| __IOM uint32_t DWT_COMP1; /*!< Provides a reference value for use by watchpoint comparator |
| 1 */ |
| __IM uint32_t RESERVED13; |
| __IOM uint32_t DWT_FUNCTION1; /*!< Controls the operation of watchpoint comparator 1 */ |
| __IM uint32_t RESERVED14; |
| __IOM uint32_t DWT_COMP2; /*!< Provides a reference value for use by watchpoint comparator |
| 2 */ |
| __IM uint32_t RESERVED15; |
| __IOM uint32_t DWT_FUNCTION2; /*!< Controls the operation of watchpoint comparator 2 */ |
| __IM uint32_t RESERVED16; |
| __IOM uint32_t DWT_COMP3; /*!< Provides a reference value for use by watchpoint comparator |
| 3 */ |
| __IM uint32_t RESERVED17; |
| __IOM uint32_t DWT_FUNCTION3; /*!< Controls the operation of watchpoint comparator 3 */ |
| __IM uint32_t RESERVED18[984]; |
| __IOM uint32_t DWT_DEVARCH; /*!< Provides CoreSight discovery information for the DWT */ |
| __IM uint32_t RESERVED19[3]; |
| __IOM uint32_t DWT_DEVTYPE; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR4; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR5; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR6; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR7; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR0; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR1; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR2; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_PIDR3; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_CIDR0; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_CIDR1; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_CIDR2; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t DWT_CIDR3; /*!< Provides CoreSight discovery information for the DWT */ |
| __IOM uint32_t FP_CTRL; /*!< Provides FPB implementation information, and the global enable |
| for the FPB unit */ |
| __IOM uint32_t FP_REMAP; /*!< Indicates whether the implementation supports Flash Patch remap |
| and, if it does, holds the target address for remap */ |
| __IOM uint32_t FP_COMP0; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP1; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP2; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP3; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP4; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP5; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP6; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IOM uint32_t FP_COMP7; /*!< Holds an address for comparison. The effect of the match depends |
| on the configuration of the FPB and whether the comparator |
| is an instruction address comparator or a literal address |
| comparator */ |
| __IM uint32_t RESERVED20[997]; |
| __IOM uint32_t FP_DEVARCH; /*!< Provides CoreSight discovery information for the FPB */ |
| __IM uint32_t RESERVED21[3]; |
| __IOM uint32_t FP_DEVTYPE; /*!< Provides CoreSight discovery information for the FPB */ |
| __IOM uint32_t FP_PIDR4; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR5; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR6; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR7; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR0; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR1; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR2; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_PIDR3; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_CIDR0; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_CIDR1; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_CIDR2; /*!< Provides CoreSight discovery information for the FP */ |
| __IOM uint32_t FP_CIDR3; /*!< Provides CoreSight discovery information for the FP */ |
| __IM uint32_t RESERVED22[11265]; |
| __IOM uint32_t ICTR; /*!< Provides information about the interrupt controller */ |
| __IOM uint32_t ACTLR; /*!< Provides IMPLEMENTATION DEFINED configuration and control options */ |
| __IM uint32_t RESERVED23; |
| __IOM uint32_t SYST_CSR; /*!< Use the SysTick Control and Status Register to enable the SysTick |
| features. */ |
| __IOM uint32_t SYST_RVR; /*!< Use the SysTick Reload Value Register to specify the start value |
| to load into the current value register when the counter |
| reaches 0. It can be any value between 0 and 0x00FFFFFF. |
| A start value of 0 is possible, but has no effect because |
| the SysTick interrupt and COUNTFLAG are activated when |
| counting from 1 to 0. The reset value of this register |
| is UNKNOWN. To generate a multi-shot timer with a period |
| of N processor clock cycles, use a RELOAD value of N-1. |
| For example, if the SysTick interrupt is required every |
| 100 clock pulses, set RELOAD to 99. */ |
| __IOM uint32_t SYST_CVR; /*!< Use the SysTick Current Value Register to find the current value |
| in the register. The reset value of this register is UNKNOWN. */ |
| __IOM uint32_t SYST_CALIB; /*!< Use the SysTick Calibration Value Register to enable software |
| to scale to any required speed using divide and multiply. */ |
| __IM uint32_t RESERVED24[56]; |
| __IOM uint32_t NVIC_ISER0; /*!< Enables or reads the enabled state of each group of 32 interrupts */ |
| __IOM uint32_t NVIC_ISER1; /*!< Enables or reads the enabled state of each group of 32 interrupts */ |
| __IM uint32_t RESERVED25[30]; |
| __IOM uint32_t NVIC_ICER0; /*!< Clears or reads the enabled state of each group of 32 interrupts */ |
| __IOM uint32_t NVIC_ICER1; /*!< Clears or reads the enabled state of each group of 32 interrupts */ |
| __IM uint32_t RESERVED26[30]; |
| __IOM uint32_t NVIC_ISPR0; /*!< Enables or reads the pending state of each group of 32 interrupts */ |
| __IOM uint32_t NVIC_ISPR1; /*!< Enables or reads the pending state of each group of 32 interrupts */ |
| __IM uint32_t RESERVED27[30]; |
| __IOM uint32_t NVIC_ICPR0; /*!< Clears or reads the pending state of each group of 32 interrupts */ |
| __IOM uint32_t NVIC_ICPR1; /*!< Clears or reads the pending state of each group of 32 interrupts */ |
| __IM uint32_t RESERVED28[30]; |
| __IOM uint32_t NVIC_IABR0; /*!< For each group of 32 interrupts, shows the active state of each |
| interrupt */ |
| __IOM uint32_t NVIC_IABR1; /*!< For each group of 32 interrupts, shows the active state of each |
| interrupt */ |
| __IM uint32_t RESERVED29[30]; |
| __IOM uint32_t NVIC_ITNS0; /*!< For each group of 32 interrupts, determines whether each interrupt |
| targets Non-secure or Secure state */ |
| __IOM uint32_t NVIC_ITNS1; /*!< For each group of 32 interrupts, determines whether each interrupt |
| targets Non-secure or Secure state */ |
| __IM uint32_t RESERVED30[30]; |
| __IOM uint32_t NVIC_IPR0; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR1; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR2; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR3; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR4; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR5; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR6; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR7; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR8; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR9; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR10; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR11; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR12; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR13; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR14; /*!< Sets or reads interrupt priorities */ |
| __IOM uint32_t NVIC_IPR15; /*!< Sets or reads interrupt priorities */ |
| __IM uint32_t RESERVED31[560]; |
| __IOM uint32_t CPUID; /*!< Provides identification information for the PE, including an |
| implementer code for the device and a device ID number */ |
| __IOM uint32_t ICSR; /*!< Controls and provides status information for NMI, PendSV, SysTick |
| and interrupts */ |
| __IOM uint32_t VTOR; /*!< The VTOR indicates the offset of the vector table base address |
| from memory address 0x00000000. */ |
| __IOM uint32_t AIRCR; /*!< Use the Application Interrupt and Reset Control Register to: |
| determine data endianness, clear all active state information |
| from debug halt mode, request a system reset. */ |
| __IOM uint32_t SCR; /*!< System Control Register. Use the System Control Register for |
| power-management functions: signal to the system when the |
| processor can enter a low power state, control how the |
| processor enters and exits low power states. */ |
| __IOM uint32_t CCR; /*!< Sets or returns configuration and control data */ |
| __IOM uint32_t SHPR1; /*!< Sets or returns priority for system handlers 4 - 7 */ |
| __IOM uint32_t SHPR2; /*!< Sets or returns priority for system handlers 8 - 11 */ |
| __IOM uint32_t SHPR3; /*!< Sets or returns priority for system handlers 12 - 15 */ |
| __IOM uint32_t SHCSR; /*!< Provides access to the active and pending status of system exceptions */ |
| __IOM uint32_t CFSR; /*!< Contains the three Configurable Fault Status Registers. 31:16 |
| UFSR: Provides information on UsageFault exceptions 15:8 |
| BFSR: Provides information on BusFault exceptions 7:0 MMFSR: |
| Provides information on MemManage exceptions */ |
| __IOM uint32_t HFSR; /*!< Shows the cause of any HardFaults */ |
| __IOM uint32_t DFSR; /*!< Shows which debug event occurred */ |
| __IOM uint32_t MMFAR; /*!< Shows the address of the memory location that caused an MPU |
| fault */ |
| __IOM uint32_t BFAR; /*!< Shows the address associated with a precise data access BusFault */ |
| __IM uint32_t RESERVED32; |
| __IOM uint32_t ID_PFR0; /*!< Gives top-level information about the instruction set supported |
| by the PE */ |
| __IOM uint32_t ID_PFR1; /*!< Gives information about the programmers' model and Extensions |
| support */ |
| __IOM uint32_t ID_DFR0; /*!< Provides top level information about the debug system */ |
| __IOM uint32_t ID_AFR0; /*!< Provides information about the IMPLEMENTATION DEFINED features |
| of the PE */ |
| __IOM uint32_t ID_MMFR0; /*!< Provides information about the implemented memory model and |
| memory management support */ |
| __IOM uint32_t ID_MMFR1; /*!< Provides information about the implemented memory model and |
| memory management support */ |
| __IOM uint32_t ID_MMFR2; /*!< Provides information about the implemented memory model and |
| memory management support */ |
| __IOM uint32_t ID_MMFR3; /*!< Provides information about the implemented memory model and |
| memory management support */ |
| __IOM uint32_t ID_ISAR0; /*!< Provides information about the instruction set implemented by |
| the PE */ |
| __IOM uint32_t ID_ISAR1; /*!< Provides information about the instruction set implemented by |
| the PE */ |
| __IOM uint32_t ID_ISAR2; /*!< Provides information about the instruction set implemented by |
| the PE */ |
| __IOM uint32_t ID_ISAR3; /*!< Provides information about the instruction set implemented by |
| the PE */ |
| __IOM uint32_t ID_ISAR4; /*!< Provides information about the instruction set implemented by |
| the PE */ |
| __IOM uint32_t ID_ISAR5; /*!< Provides information about the instruction set implemented by |
| the PE */ |
| __IM uint32_t RESERVED33; |
| __IOM uint32_t CTR; /*!< Provides information about the architecture of the caches. CTR |
| is RES0 if CLIDR is zero. */ |
| __IM uint32_t RESERVED34[2]; |
| __IOM uint32_t CPACR; /*!< Specifies the access privileges for coprocessors and the FP |
| Extension */ |
| __IOM uint32_t NSACR; /*!< Defines the Non-secure access permissions for both the FP Extension |
| and coprocessors CP0 to CP7 */ |
| __IOM uint32_t MPU_TYPE; /*!< The MPU Type Register indicates how many regions the MPU `FTSSS |
| supports */ |
| __IOM uint32_t MPU_CTRL; /*!< Enables the MPU and, when the MPU is enabled, controls whether |
| the default memory map is enabled as a background region |
| for privileged accesses, and whether the MPU is enabled |
| for HardFaults, NMIs, and exception handlers when FAULTMASK |
| is set to 1 */ |
| __IOM uint32_t MPU_RNR; /*!< Selects the region currently accessed by MPU_RBAR and MPU_RLAR */ |
| __IOM uint32_t MPU_RBAR; /*!< Provides indirect read and write access to the base address |
| of the currently selected MPU region `FTSSS */ |
| __IOM uint32_t MPU_RLAR; /*!< Provides indirect read and write access to the limit address |
| of the currently selected MPU region `FTSSS */ |
| __IOM uint32_t MPU_RBAR_A1; /*!< Provides indirect read and write access to the base address |
| of the MPU region selected by MPU_RNR[7:2]:(1[1:0]) `FTSSS */ |
| __IOM uint32_t MPU_RLAR_A1; /*!< Provides indirect read and write access to the limit address |
| of the currently selected MPU region selected by MPU_RNR[7:2]:(1[1:0]) |
| `FTSSS */ |
| __IOM uint32_t MPU_RBAR_A2; /*!< Provides indirect read and write access to the base address |
| of the MPU region selected by MPU_RNR[7:2]:(2[1:0]) `FTSSS */ |
| __IOM uint32_t MPU_RLAR_A2; /*!< Provides indirect read and write access to the limit address |
| of the currently selected MPU region selected by MPU_RNR[7:2]:(2[1:0]) |
| `FTSSS */ |
| __IOM uint32_t MPU_RBAR_A3; /*!< Provides indirect read and write access to the base address |
| of the MPU region selected by MPU_RNR[7:2]:(3[1:0]) `FTSSS */ |
| __IOM uint32_t MPU_RLAR_A3; /*!< Provides indirect read and write access to the limit address |
| of the currently selected MPU region selected by MPU_RNR[7:2]:(3[1:0]) |
| `FTSSS */ |
| __IM uint32_t RESERVED35; |
| __IOM uint32_t MPU_MAIR0; /*!< Along with MPU_MAIR1, provides the memory attribute encodings |
| corresponding to the AttrIndex values */ |
| __IOM uint32_t MPU_MAIR1; /*!< Along with MPU_MAIR0, provides the memory attribute encodings |
| corresponding to the AttrIndex values */ |
| __IM uint32_t RESERVED36[2]; |
| __IOM uint32_t SAU_CTRL; /*!< Allows enabling of the Security Attribution Unit */ |
| __IOM uint32_t SAU_TYPE; /*!< Indicates the number of regions implemented by the Security |
| Attribution Unit */ |
| __IOM uint32_t SAU_RNR; /*!< Selects the region currently accessed by SAU_RBAR and SAU_RLAR */ |
| __IOM uint32_t SAU_RBAR; /*!< Provides indirect read and write access to the base address |
| of the currently selected SAU region */ |
| __IOM uint32_t SAU_RLAR; /*!< Provides indirect read and write access to the limit address |
| of the currently selected SAU region */ |
| __IOM uint32_t SFSR; /*!< Provides information about any security related faults */ |
| __IOM uint32_t SFAR; /*!< Shows the address of the memory location that caused a Security |
| violation */ |
| __IM uint32_t RESERVED37; |
| __IOM uint32_t DHCSR; /*!< Controls halting debug */ |
| __IOM uint32_t DCRSR; /*!< With the DCRDR, provides debug access to the general-purpose |
| registers, special-purpose registers, and the FP extension |
| registers. A write to the DCRSR specifies the register |
| to transfer, whether the transfer is a read or write, and |
| starts the transfer */ |
| __IOM uint32_t DCRDR; /*!< With the DCRSR, provides debug access to the general-purpose |
| registers, special-purpose registers, and the FP Extension |
| registers. If the Main Extension is implemented, it can |
| also be used for message passing between an external debugger |
| and a debug agent running on the PE */ |
| __IOM uint32_t DEMCR; /*!< Manages vector catch behavior and DebugMonitor handling when |
| debugging */ |
| __IM uint32_t RESERVED38[2]; |
| __IOM uint32_t DSCSR; /*!< Provides control and status information for Secure debug */ |
| __IM uint32_t RESERVED39[61]; |
| __IOM uint32_t STIR; /*!< Provides a mechanism for software to generate an interrupt */ |
| __IM uint32_t RESERVED40[12]; |
| __IOM uint32_t FPCCR; /*!< Holds control data for the Floating-point extension */ |
| __IOM uint32_t FPCAR; /*!< Holds the location of the unpopulated floating-point register |
| space allocated on an exception stack frame */ |
| __IOM uint32_t FPDSCR; /*!< Holds the default values for the floating-point status control |
| data that the PE assigns to the FPSCR when it creates a |
| new floating-point context */ |
| __IOM uint32_t MVFR0; /*!< Describes the features provided by the Floating-point Extension */ |
| __IOM uint32_t MVFR1; /*!< Describes the features provided by the Floating-point Extension */ |
| __IOM uint32_t MVFR2; /*!< Describes the features provided by the Floating-point Extension */ |
| __IM uint32_t RESERVED41[28]; |
| __IOM uint32_t DDEVARCH; /*!< Provides CoreSight discovery information for the SCS */ |
| __IM uint32_t RESERVED42[3]; |
| __IOM uint32_t DDEVTYPE; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR4; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR5; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR6; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR7; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR0; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR1; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR2; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DPIDR3; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DCIDR0; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DCIDR1; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DCIDR2; /*!< Provides CoreSight discovery information for the SCS */ |
| __IOM uint32_t DCIDR3; /*!< Provides CoreSight discovery information for the SCS */ |
| __IM uint32_t RESERVED43[51201]; |
| __IOM uint32_t TRCPRGCTLR; /*!< Programming Control Register */ |
| __IM uint32_t RESERVED44; |
| __IOM uint32_t TRCSTATR; /*!< The TRCSTATR indicates the ETM-Teal status */ |
| __IOM uint32_t TRCCONFIGR; /*!< The TRCCONFIGR sets the basic tracing options for the trace |
| unit */ |
| __IM uint32_t RESERVED45[3]; |
| __IOM uint32_t TRCEVENTCTL0R; /*!< The TRCEVENTCTL0R controls the tracing of events in the trace |
| stream. The events also drive the ETM-Teal external outputs. */ |
| __IOM uint32_t TRCEVENTCTL1R; /*!< The TRCEVENTCTL1R controls how the events selected by TRCEVENTCTL0R |
| behave */ |
| __IM uint32_t RESERVED46; |
| __IOM uint32_t TRCSTALLCTLR; /*!< The TRCSTALLCTLR enables ETM-Teal to stall the processor if |
| the ETM-Teal FIFO goes over the programmed level to minimize |
| risk of overflow */ |
| __IOM uint32_t TRCTSCTLR; /*!< The TRCTSCTLR controls the insertion of global timestamps into |
| the trace stream. A timestamp is always inserted into the |
| instruction trace stream */ |
| __IOM uint32_t TRCSYNCPR; /*!< The TRCSYNCPR specifies the period of trace synchronization |
| of the trace streams. TRCSYNCPR defines a number of bytes |
| of trace between requests for trace synchronization. This |
| value is always a power of two */ |
| __IOM uint32_t TRCCCCTLR; /*!< The TRCCCCTLR sets the threshold value for instruction trace |
| cycle counting. The threshold represents the minimum interval |
| between cycle count trace packets */ |
| __IM uint32_t RESERVED47[17]; |
| __IOM uint32_t TRCVICTLR; /*!< The TRCVICTLR controls instruction trace filtering */ |
| __IM uint32_t RESERVED48[47]; |
| __IOM uint32_t TRCCNTRLDVR0; /*!< The TRCCNTRLDVR defines the reload value for the reduced function |
| counter */ |
| __IM uint32_t RESERVED49[15]; |
| __IOM uint32_t TRCIDR8; /*!< TRCIDR8 */ |
| __IOM uint32_t TRCIDR9; /*!< TRCIDR9 */ |
| __IOM uint32_t TRCIDR10; /*!< TRCIDR10 */ |
| __IOM uint32_t TRCIDR11; /*!< TRCIDR11 */ |
| __IOM uint32_t TRCIDR12; /*!< TRCIDR12 */ |
| __IOM uint32_t TRCIDR13; /*!< TRCIDR13 */ |
| __IM uint32_t RESERVED50[10]; |
| __IOM uint32_t TRCIMSPEC; /*!< The TRCIMSPEC shows the presence of any IMPLEMENTATION SPECIFIC |
| features, and enables any features that are provided */ |
| __IM uint32_t RESERVED51[7]; |
| __IOM uint32_t TRCIDR0; /*!< TRCIDR0 */ |
| __IOM uint32_t TRCIDR1; /*!< TRCIDR1 */ |
| __IOM uint32_t TRCIDR2; /*!< TRCIDR2 */ |
| __IOM uint32_t TRCIDR3; /*!< TRCIDR3 */ |
| __IOM uint32_t TRCIDR4; /*!< TRCIDR4 */ |
| __IOM uint32_t TRCIDR5; /*!< TRCIDR5 */ |
| __IOM uint32_t TRCIDR6; /*!< TRCIDR6 */ |
| __IOM uint32_t TRCIDR7; /*!< TRCIDR7 */ |
| __IM uint32_t RESERVED52[2]; |
| __IOM uint32_t TRCRSCTLR2; /*!< The TRCRSCTLR controls the trace resources */ |
| __IOM uint32_t TRCRSCTLR3; /*!< The TRCRSCTLR controls the trace resources */ |
| __IM uint32_t RESERVED53[36]; |
| __IOM uint32_t TRCSSCSR; /*!< Controls the corresponding single-shot comparator resource */ |
| __IM uint32_t RESERVED54[7]; |
| __IOM uint32_t TRCSSPCICR; /*!< Selects the PE comparator inputs for Single-shot control */ |
| __IM uint32_t RESERVED55[19]; |
| __IOM uint32_t TRCPDCR; /*!< Requests the system to provide power to the trace unit */ |
| __IOM uint32_t TRCPDSR; /*!< Returns the following information about the trace unit: - OS |
| Lock status. - Core power domain status. - Power interruption |
| status */ |
| __IM uint32_t RESERVED56[755]; |
| __IOM uint32_t TRCITATBIDR; /*!< Trace Integration ATB Identification Register */ |
| __IM uint32_t RESERVED57[3]; |
| __IOM uint32_t TRCITIATBINR; /*!< Trace Integration Instruction ATB In Register */ |
| __IM uint32_t RESERVED58; |
| __IOM uint32_t TRCITIATBOUTR; /*!< Trace Integration Instruction ATB Out Register */ |
| __IM uint32_t RESERVED59[40]; |
| __IOM uint32_t TRCCLAIMSET; /*!< Claim Tag Set Register */ |
| __IOM uint32_t TRCCLAIMCLR; /*!< Claim Tag Clear Register */ |
| __IM uint32_t RESERVED60[4]; |
| __IOM uint32_t TRCAUTHSTATUS; /*!< Returns the level of tracing that the trace unit can support */ |
| __IOM uint32_t TRCDEVARCH; /*!< TRCDEVARCH */ |
| __IM uint32_t RESERVED61[2]; |
| __IOM uint32_t TRCDEVID; /*!< TRCDEVID */ |
| __IOM uint32_t TRCDEVTYPE; /*!< TRCDEVTYPE */ |
| __IOM uint32_t TRCPIDR4; /*!< TRCPIDR4 */ |
| __IOM uint32_t TRCPIDR5; /*!< TRCPIDR5 */ |
| __IOM uint32_t TRCPIDR6; /*!< TRCPIDR6 */ |
| __IOM uint32_t TRCPIDR7; /*!< TRCPIDR7 */ |
| __IOM uint32_t TRCPIDR0; /*!< TRCPIDR0 */ |
| __IOM uint32_t TRCPIDR1; /*!< TRCPIDR1 */ |
| __IOM uint32_t TRCPIDR2; /*!< TRCPIDR2 */ |
| __IOM uint32_t TRCPIDR3; /*!< TRCPIDR3 */ |
| __IOM uint32_t TRCCIDR0; /*!< TRCCIDR0 */ |
| __IOM uint32_t TRCCIDR1; /*!< TRCCIDR1 */ |
| __IOM uint32_t TRCCIDR2; /*!< TRCCIDR2 */ |
| __IOM uint32_t TRCCIDR3; /*!< TRCCIDR3 */ |
| __IOM uint32_t CTICONTROL; /*!< CTI Control Register */ |
| __IM uint32_t RESERVED62[3]; |
| __IOM uint32_t CTIINTACK; /*!< CTI Interrupt Acknowledge Register */ |
| __IOM uint32_t CTIAPPSET; /*!< CTI Application Trigger Set Register */ |
| __IOM uint32_t CTIAPPCLEAR; /*!< CTI Application Trigger Clear Register */ |
| __IOM uint32_t CTIAPPPULSE; /*!< CTI Application Pulse Register */ |
| __IOM uint32_t CTIINEN0; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN1; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN2; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN3; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN4; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN5; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN6; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIINEN7; /*!< CTI Trigger to Channel Enable Registers */ |
| __IM uint32_t RESERVED63[24]; |
| __IOM uint32_t CTIOUTEN0; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN1; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN2; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN3; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN4; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN5; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN6; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTIOUTEN7; /*!< CTI Trigger to Channel Enable Registers */ |
| __IM uint32_t RESERVED64[28]; |
| __IOM uint32_t CTITRIGINSTATUS; /*!< CTI Trigger to Channel Enable Registers */ |
| __IOM uint32_t CTITRIGOUTSTATUS; /*!< CTI Trigger In Status Register */ |
| __IOM uint32_t CTICHINSTATUS; /*!< CTI Channel In Status Register */ |
| __IM uint32_t RESERVED65; |
| __IOM uint32_t CTIGATE; /*!< Enable CTI Channel Gate register */ |
| __IOM uint32_t ASICCTL; /*!< External Multiplexer Control register */ |
| __IM uint32_t RESERVED66[871]; |
| __IOM uint32_t ITCHOUT; /*!< Integration Test Channel Output register */ |
| __IOM uint32_t ITTRIGOUT; /*!< Integration Test Trigger Output register */ |
| __IM uint32_t RESERVED67[2]; |
| __IOM uint32_t ITCHIN; /*!< Integration Test Channel Input register */ |
| __IM uint32_t RESERVED68[2]; |
| __IOM uint32_t ITCTRL; /*!< Integration Mode Control register */ |
| __IM uint32_t RESERVED69[46]; |
| __IOM uint32_t DEVARCH; /*!< Device Architecture register */ |
| __IM uint32_t RESERVED70[2]; |
| __IOM uint32_t DEVID; /*!< Device Configuration register */ |
| __IOM uint32_t DEVTYPE; /*!< Device Type Identifier register */ |
| __IOM uint32_t PIDR4; /*!< CoreSight Peripheral ID4 */ |
| __IOM uint32_t PIDR5; /*!< CoreSight Peripheral ID5 */ |
| __IOM uint32_t PIDR6; /*!< CoreSight Peripheral ID6 */ |
| __IOM uint32_t PIDR7; /*!< CoreSight Peripheral ID7 */ |
| __IOM uint32_t PIDR0; /*!< CoreSight Peripheral ID0 */ |
| __IOM uint32_t PIDR1; /*!< CoreSight Peripheral ID1 */ |
| __IOM uint32_t PIDR2; /*!< CoreSight Peripheral ID2 */ |
| __IOM uint32_t PIDR3; /*!< CoreSight Peripheral ID3 */ |
| __IOM uint32_t CIDR0; /*!< CoreSight Component ID0 */ |
| __IOM uint32_t CIDR1; /*!< CoreSight Component ID1 */ |
| __IOM uint32_t CIDR2; /*!< CoreSight Component ID2 */ |
| __IOM uint32_t CIDR3; /*!< CoreSight Component ID3 */ |
| } PPB_Type; /*!< Size = 274432 (0x43000) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ QMI ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief QSPI Memory Interface. |
| |
| Provides a memory-mapped interface to up to two SPI/DSPI/QSPI flash or PSRAM devices. Also provides a serial interface for programming and configuration of the external device. (QMI) |
| */ |
| |
| typedef struct { /*!< QMI Structure */ |
| __IOM uint32_t DIRECT_CSR; /*!< Control and status for direct serial mode Direct serial mode |
| allows the processor to send and receive raw serial frames, |
| for programming, configuration and control of the external |
| memory devices. Only SPI mode 0 (CPOL=0 CPHA=0) is supported. */ |
| __IOM uint32_t DIRECT_TX; /*!< Transmit FIFO for direct mode */ |
| __IOM uint32_t DIRECT_RX; /*!< Receive FIFO for direct mode */ |
| __IOM uint32_t M0_TIMING; /*!< Timing configuration register for memory address window 0. */ |
| __IOM uint32_t M0_RFMT; /*!< Read transfer format configuration for memory address window |
| 0. Configure the bus width of each transfer phase individually, |
| and configure the length or presence of the command prefix, |
| command suffix and dummy/turnaround transfer phases. Only |
| 24-bit addresses are supported. The reset value of the |
| M0_RFMT register is configured to support a basic 03h serial |
| read transfer with no additional configuration. */ |
| __IOM uint32_t M0_RCMD; /*!< Command constants used for reads from memory address window |
| 0. The reset value of the M0_RCMD register is configured |
| to support a basic 03h serial read transfer with no additional |
| configuration. */ |
| __IOM uint32_t M0_WFMT; /*!< Write transfer format configuration for memory address window |
| 0. Configure the bus width of each transfer phase individually, |
| and configure the length or presence of the command prefix, |
| command suffix and dummy/turnaround transfer phases. Only |
| 24-bit addresses are supported. The reset value of the |
| M0_WFMT register is configured to support a basic 02h serial |
| write transfer. However, writes to this window must first |
| be enabled via the XIP_CTRL_WRITABLE_M0 bit, as XIP memory |
| is read-only by default. */ |
| __IOM uint32_t M0_WCMD; /*!< Command constants used for writes to memory address window 0. |
| The reset value of the M0_WCMD register is configured to |
| support a basic 02h serial write transfer with no additional |
| configuration. */ |
| __IOM uint32_t M1_TIMING; /*!< Timing configuration register for memory address window 1. */ |
| __IOM uint32_t M1_RFMT; /*!< Read transfer format configuration for memory address window |
| 1. Configure the bus width of each transfer phase individually, |
| and configure the length or presence of the command prefix, |
| command suffix and dummy/turnaround transfer phases. Only |
| 24-bit addresses are supported. The reset value of the |
| M1_RFMT register is configured to support a basic 03h serial |
| read transfer with no additional configuration. */ |
| __IOM uint32_t M1_RCMD; /*!< Command constants used for reads from memory address window |
| 1. The reset value of the M1_RCMD register is configured |
| to support a basic 03h serial read transfer with no additional |
| configuration. */ |
| __IOM uint32_t M1_WFMT; /*!< Write transfer format configuration for memory address window |
| 1. Configure the bus width of each transfer phase individually, |
| and configure the length or presence of the command prefix, |
| command suffix and dummy/turnaround transfer phases. Only |
| 24-bit addresses are supported. The reset value of the |
| M1_WFMT register is configured to support a basic 02h serial |
| write transfer. However, writes to this window must first |
| be enabled via the XIP_CTRL_WRITABLE_M1 bit, as XIP memory |
| is read-only by default. */ |
| __IOM uint32_t M1_WCMD; /*!< Command constants used for writes to memory address window 1. |
| The reset value of the M1_WCMD register is configured to |
| support a basic 02h serial write transfer with no additional |
| configuration. */ |
| __IOM uint32_t ATRANS0; /*!< Configure address translation for XIP virtual addresses 0x000000 |
| through 0x3fffff (a 4 MiB window starting at +0 MiB). Address |
| translation allows a program image to be executed in place |
| at multiple physical flash addresses (for example, a double-buffered |
| flash image for over-the-air updates), without the overhead |
| of position-independent code. At reset, the address translation |
| registers are initialised to an identity mapping, so that |
| they can be ignored if address translation is not required. |
| Note that the XIP cache is fully virtually addressed, so |
| a cache flush is required after changing the address translation. */ |
| __IOM uint32_t ATRANS1; /*!< Configure address translation for XIP virtual addresses 0x400000 |
| through 0x7fffff (a 4 MiB window starting at +4 MiB). Address |
| translation allows a program image to be executed in place |
| at multiple physical flash addresses (for example, a double-buffered |
| flash image for over-the-air updates), without the overhead |
| of position-independent code. At reset, the address translation |
| registers are initialised to an identity mapping, so that |
| they can be ignored if address translation is not required. |
| Note that the XIP cache is fully virtually addressed, so |
| a cache flush is required after changing the address translation. */ |
| __IOM uint32_t ATRANS2; /*!< Configure address translation for XIP virtual addresses 0x800000 |
| through 0xbfffff (a 4 MiB window starting at +8 MiB). Address |
| translation allows a program image to be executed in place |
| at multiple physical flash addresses (for example, a double-buffered |
| flash image for over-the-air updates), without the overhead |
| of position-independent code. At reset, the address translation |
| registers are initialised to an identity mapping, so that |
| they can be ignored if address translation is not required. |
| Note that the XIP cache is fully virtually addressed, so |
| a cache flush is required after changing the address translation. */ |
| __IOM uint32_t ATRANS3; /*!< Configure address translation for XIP virtual addresses 0xc00000 |
| through 0xffffff (a 4 MiB window starting at +12 MiB). |
| Address translation allows a program image to be executed |
| in place at multiple physical flash addresses (for example, |
| a double-buffered flash image for over-the-air updates), |
| without the overhead of position-independent code. At reset, |
| the address translation registers are initialised to an |
| identity mapping, so that they can be ignored if address |
| translation is not required. Note that the XIP cache is |
| fully virtually addressed, so a cache flush is required |
| after changing the address translation. */ |
| __IOM uint32_t ATRANS4; /*!< Configure address translation for XIP virtual addresses 0x1000000 |
| through 0x13fffff (a 4 MiB window starting at +16 MiB). |
| Address translation allows a program image to be executed |
| in place at multiple physical flash addresses (for example, |
| a double-buffered flash image for over-the-air updates), |
| without the overhead of position-independent code. At reset, |
| the address translation registers are initialised to an |
| identity mapping, so that they can be ignored if address |
| translation is not required. Note that the XIP cache is |
| fully virtually addressed, so a cache flush is required |
| after changing the address translation. */ |
| __IOM uint32_t ATRANS5; /*!< Configure address translation for XIP virtual addresses 0x1400000 |
| through 0x17fffff (a 4 MiB window starting at +20 MiB). |
| Address translation allows a program image to be executed |
| in place at multiple physical flash addresses (for example, |
| a double-buffered flash image for over-the-air updates), |
| without the overhead of position-independent code. At reset, |
| the address translation registers are initialised to an |
| identity mapping, so that they can be ignored if address |
| translation is not required. Note that the XIP cache is |
| fully virtually addressed, so a cache flush is required |
| after changing the address translation. */ |
| __IOM uint32_t ATRANS6; /*!< Configure address translation for XIP virtual addresses 0x1800000 |
| through 0x1bfffff (a 4 MiB window starting at +24 MiB). |
| Address translation allows a program image to be executed |
| in place at multiple physical flash addresses (for example, |
| a double-buffered flash image for over-the-air updates), |
| without the overhead of position-independent code. At reset, |
| the address translation registers are initialised to an |
| identity mapping, so that they can be ignored if address |
| translation is not required. Note that the XIP cache is |
| fully virtually addressed, so a cache flush is required |
| after changing the address translation. */ |
| __IOM uint32_t ATRANS7; /*!< Configure address translation for XIP virtual addresses 0x1c00000 |
| through 0x1ffffff (a 4 MiB window starting at +28 MiB). |
| Address translation allows a program image to be executed |
| in place at multiple physical flash addresses (for example, |
| a double-buffered flash image for over-the-air updates), |
| without the overhead of position-independent code. At reset, |
| the address translation registers are initialised to an |
| identity mapping, so that they can be ignored if address |
| translation is not required. Note that the XIP cache is |
| fully virtually addressed, so a cache flush is required |
| after changing the address translation. */ |
| } QMI_Type; /*!< Size = 84 (0x54) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ XIP_CTRL ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief QSPI flash execute-in-place block (XIP_CTRL) |
| */ |
| |
| typedef struct { /*!< XIP_CTRL Structure */ |
| __IOM uint32_t CTRL; /*!< Cache control register. Read-only from a Non-secure context. */ |
| __IM uint32_t RESERVED; |
| __IOM uint32_t STAT; /*!< STAT */ |
| __IOM uint32_t CTR_HIT; /*!< Cache Hit counter */ |
| __IOM uint32_t CTR_ACC; /*!< Cache Access counter */ |
| __IOM uint32_t STREAM_ADDR; /*!< FIFO stream address */ |
| __IOM uint32_t STREAM_CTR; /*!< FIFO stream control */ |
| __IOM uint32_t STREAM_FIFO; /*!< FIFO stream data */ |
| } XIP_CTRL_Type; /*!< Size = 32 (0x20) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ XIP_AUX ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Auxiliary DMA access to XIP FIFOs, via fast AHB bus access (XIP_AUX) |
| */ |
| |
| typedef struct { /*!< XIP_AUX Structure */ |
| __IOM uint32_t STREAM; /*!< Read the XIP stream FIFO (fast bus access to XIP_CTRL_STREAM_FIFO) */ |
| __IOM uint32_t QMI_DIRECT_TX; /*!< Write to the QMI direct-mode TX FIFO (fast bus access to QMI_DIRECT_TX) */ |
| __IOM uint32_t QMI_DIRECT_RX; /*!< Read from the QMI direct-mode RX FIFO (fast bus access to QMI_DIRECT_RX) */ |
| } XIP_AUX_Type; /*!< Size = 12 (0xc) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ SYSCFG ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Register block for various chip control signals (SYSCFG) |
| */ |
| |
| typedef struct { /*!< SYSCFG Structure */ |
| __IOM uint32_t PROC_CONFIG; /*!< Configuration for processors */ |
| __IOM uint32_t PROC_IN_SYNC_BYPASS; /*!< For each bit, if 1, bypass the input synchronizer between that |
| GPIO and the GPIO input register in the SIO. The input |
| synchronizers should generally be unbypassed, to avoid |
| injecting metastabilities into processors. If you're feeling |
| brave, you can bypass to save two cycles of input latency. |
| This register applies to GPIO 0...31. */ |
| __IOM uint32_t PROC_IN_SYNC_BYPASS_HI; /*!< For each bit, if 1, bypass the input synchronizer between that |
| GPIO and the GPIO input register in the SIO. The input |
| synchronizers should generally be unbypassed, to avoid |
| injecting metastabilities into processors. If you're feeling |
| brave, you can bypass to save two cycles of input latency. |
| This register applies to GPIO 32...47. USB GPIO 56..57 |
| QSPI GPIO 58..63 */ |
| __IOM uint32_t DBGFORCE; /*!< Directly control the chip SWD debug port */ |
| __IOM uint32_t MEMPOWERDOWN; /*!< Control PD pins to memories. Set high to put memories to a low |
| power state. In this state the memories will retain contents |
| but not be accessible Use with caution */ |
| __IOM uint32_t AUXCTRL; /*!< Auxiliary system control register */ |
| } SYSCFG_Type; /*!< Size = 24 (0x18) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ XOSC ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Controls the crystal oscillator (XOSC) |
| */ |
| |
| typedef struct { /*!< XOSC Structure */ |
| __IOM uint32_t CTRL; /*!< Crystal Oscillator Control */ |
| __IOM uint32_t STATUS; /*!< Crystal Oscillator Status */ |
| __IOM uint32_t DORMANT; /*!< Crystal Oscillator pause control */ |
| __IOM uint32_t STARTUP; /*!< Controls the startup delay */ |
| __IOM uint32_t COUNT; /*!< A down counter running at the xosc frequency which counts to |
| zero and stops. Can be used for short software pauses when |
| setting up time sensitive hardware. To start the counter, |
| write a non-zero value. Reads will return 1 while the count |
| is running and 0 when it has finished. Minimum count value |
| is 4. Count values <4 will be treated as count value =4. |
| Note that synchronisation to the register clock domain |
| costs 2 register clock cycles and the counter cannot compensate |
| for that. */ |
| } XOSC_Type; /*!< Size = 20 (0x14) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ PLL_SYS ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief PLL_SYS (PLL_SYS) |
| */ |
| |
| typedef struct { /*!< PLL_SYS Structure */ |
| __IOM uint32_t CS; /*!< Control and Status GENERAL CONSTRAINTS: Reference clock frequency |
| min=5MHz, max=800MHz Feedback divider min=16, max=320 VCO |
| frequency min=750MHz, max=1600MHz */ |
| __IOM uint32_t PWR; /*!< Controls the PLL power modes. */ |
| __IOM uint32_t FBDIV_INT; /*!< Feedback divisor (note: this PLL does not support fractional |
| division) */ |
| __IOM uint32_t PRIM; /*!< Controls the PLL post dividers for the primary output (note: |
| this PLL does not have a secondary output) the primary |
| output is driven from VCO divided by postdiv1*postdiv2 */ |
| __IOM uint32_t INTR; /*!< Raw Interrupts */ |
| __IOM uint32_t INTE; /*!< Interrupt Enable */ |
| __IOM uint32_t INTF; /*!< Interrupt Force */ |
| __IOM uint32_t INTS; /*!< Interrupt status after masking & forcing */ |
| } PLL_SYS_Type; /*!< Size = 32 (0x20) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ ACCESSCTRL ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Hardware access control registers (ACCESSCTRL) |
| */ |
| |
| typedef struct { /*!< ACCESSCTRL Structure */ |
| __IOM uint32_t LOCK; /*!< Once a LOCK bit is written to 1, ACCESSCTRL silently ignores |
| writes from that master. LOCK is writable only by a Secure, |
| Privileged processor or debugger. LOCK bits are only writable |
| when their value is zero. Once set, they can never be cleared, |
| except by a full reset of ACCESSCTRL Setting the LOCK bit |
| does not affect whether an access raises a bus error. Unprivileged |
| writes, or writes from the DMA, will continue to raise |
| bus errors. All other accesses will continue not to. */ |
| __IOM uint32_t FORCE_CORE_NS; /*!< Force core 1's bus accesses to always be Non-secure, no matter |
| the core's internal state. Useful for schemes where one |
| core is designated as the Non-secure core, since some peripherals |
| may filter individual registers internally based on security |
| state but not on master ID. */ |
| __IOM uint32_t CFGRESET; /*!< Write 1 to reset all ACCESSCTRL configuration, except for the |
| LOCK and FORCE_CORE_NS registers. This bit is used in the |
| RP2350 bootrom to quickly restore ACCESSCTRL to a known |
| state during the boot path. Note that, like all registers |
| in ACCESSCTRL, this register is not writable when the writer's |
| corresponding LOCK bit is set, therefore a master which |
| has been locked out of ACCESSCTRL can not use the CFGRESET |
| register to disturb its contents. */ |
| __IOM uint32_t GPIO_NSMASK0; /*!< Control whether GPIO0...31 are accessible to Non-secure code. |
| Writable only by a Secure, Privileged processor or debugger. |
| 0 -> Secure access only 1 -> Secure + Non-secure access */ |
| __IOM uint32_t GPIO_NSMASK1; /*!< Control whether GPIO32..47 are accessible to Non-secure code, |
| and whether QSPI and USB bitbang are accessible through |
| the Non-secure SIO. Writable only by a Secure, Privileged |
| processor or debugger. */ |
| __IOM uint32_t ROM; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| ROM, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t XIP_MAIN; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| XIP_MAIN, and at what security/privilege levels they can |
| do so. Defaults to fully open access. This register is |
| writable only from a Secure, Privileged processor or debugger, |
| with the exception of the NSU bit, which becomes Non-secure-Privileged-wr |
| table when the NSP bit is set. */ |
| __IOM uint32_t SRAM0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM0, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM1, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM2; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM2, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM3; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM3, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM4; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM4, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM5; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM5, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM6; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM6, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM7; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM7, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM8; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM8, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t SRAM9; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SRAM9, and at what security/privilege levels they can do |
| so. Defaults to fully open access. This register is writable |
| only from a Secure, Privileged processor or debugger, with |
| the exception of the NSU bit, which becomes Non-secure-Privileged-writabl |
| when the NSP bit is set. */ |
| __IOM uint32_t DMA; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| DMA, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t USBCTRL; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| USBCTRL, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t PIO0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PIO0, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t PIO1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PIO1, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t PIO2; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PIO2, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t CORESIGHT_TRACE; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| CORESIGHT_TRACE, and at what security/privilege levels |
| they can do so. Defaults to Secure, Privileged processor |
| or debug access only. This register is writable only from |
| a Secure, Privileged processor or debugger, with the exception |
| of the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t CORESIGHT_PERIPH; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| CORESIGHT_PERIPH, and at what security/privilege levels |
| they can do so. Defaults to Secure, Privileged processor |
| or debug access only. This register is writable only from |
| a Secure, Privileged processor or debugger, with the exception |
| of the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t SYSINFO; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SYSINFO, and at what security/privilege levels they can |
| do so. Defaults to fully open access. This register is |
| writable only from a Secure, Privileged processor or debugger, |
| with the exception of the NSU bit, which becomes Non-secure-Privileged-wr |
| table when the NSP bit is set. */ |
| __IOM uint32_t RESETS; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| RESETS, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t IO_BANK0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| IO_BANK0, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t IO_BANK1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| IO_BANK1, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t PADS_BANK0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PADS_BANK0, and at what security/privilege levels they |
| can do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t PADS_QSPI; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PADS_QSPI, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t BUSCTRL; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| BUSCTRL, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t ADC0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| ADC0, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t HSTX; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| HSTX, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t I2C0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| I2C0, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t I2C1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| I2C1, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t PWM; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PWM, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t SPI0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SPI0, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t SPI1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SPI1, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t TIMER0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| TIMER0, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t TIMER1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| TIMER1, and at what security/privilege levels they can |
| do so. Defaults to Secure access from any master. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t UART0; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| UART0, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t UART1; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| UART1, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t OTP; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| OTP, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t TBMAN; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| TBMAN, and at what security/privilege levels they can do |
| so. Defaults to Secure access from any master. This register |
| is writable only from a Secure, Privileged processor or |
| debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t POWMAN; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| POWMAN, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t TRNG; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| TRNG, and at what security/privilege levels they can do |
| so. Defaults to Secure, Privileged processor or debug access |
| only. This register is writable only from a Secure, Privileged |
| processor or debugger, with the exception of the NSU bit, |
| which becomes Non-secure-Privileged-writable when the NSP |
| bit is set. */ |
| __IOM uint32_t SHA256; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SHA256, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged access only. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| __IOM uint32_t SYSCFG; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| SYSCFG, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t CLOCKS; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| CLOCKS, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t XOSC; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| XOSC, and at what security/privilege levels they can do |
| so. Defaults to Secure, Privileged processor or debug access |
| only. This register is writable only from a Secure, Privileged |
| processor or debugger, with the exception of the NSU bit, |
| which becomes Non-secure-Privileged-writable when the NSP |
| bit is set. */ |
| __IOM uint32_t ROSC; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| ROSC, and at what security/privilege levels they can do |
| so. Defaults to Secure, Privileged processor or debug access |
| only. This register is writable only from a Secure, Privileged |
| processor or debugger, with the exception of the NSU bit, |
| which becomes Non-secure-Privileged-writable when the NSP |
| bit is set. */ |
| __IOM uint32_t PLL_SYS; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PLL_SYS, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t PLL_USB; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| PLL_USB, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t TICKS; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| TICKS, and at what security/privilege levels they can do |
| so. Defaults to Secure, Privileged processor or debug access |
| only. This register is writable only from a Secure, Privileged |
| processor or debugger, with the exception of the NSU bit, |
| which becomes Non-secure-Privileged-writable when the NSP |
| bit is set. */ |
| __IOM uint32_t WATCHDOG; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| WATCHDOG, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t RSM; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| RSM, and at what security/privilege levels they can do |
| so. Defaults to Secure, Privileged processor or debug access |
| only. This register is writable only from a Secure, Privileged |
| processor or debugger, with the exception of the NSU bit, |
| which becomes Non-secure-Privileged-writable when the NSP |
| bit is set. */ |
| __IOM uint32_t XIP_CTRL; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| XIP_CTRL, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t XIP_QMI; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| XIP_QMI, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged processor or debug |
| access only. This register is writable only from a Secure, |
| Privileged processor or debugger, with the exception of |
| the NSU bit, which becomes Non-secure-Privileged-writable |
| when the NSP bit is set. */ |
| __IOM uint32_t XIP_AUX; /*!< Control whether debugger, DMA, core 0 and core 1 can access |
| XIP_AUX, and at what security/privilege levels they can |
| do so. Defaults to Secure, Privileged access only. This |
| register is writable only from a Secure, Privileged processor |
| or debugger, with the exception of the NSU bit, which becomes |
| Non-secure-Privileged-writable when the NSP bit is set. */ |
| } ACCESSCTRL_Type; /*!< Size = 236 (0xec) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ UART0 ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief UART0 (UART0) |
| */ |
| |
| typedef struct { /*!< UART0 Structure */ |
| __IOM uint32_t UARTDR; /*!< Data Register, UARTDR */ |
| __IOM uint32_t UARTRSR; /*!< Receive Status Register/Error Clear Register, UARTRSR/UARTECR */ |
| __IM uint32_t RESERVED[4]; |
| __IOM uint32_t UARTFR; /*!< Flag Register, UARTFR */ |
| __IM uint32_t RESERVED1; |
| __IOM uint32_t UARTILPR; /*!< IrDA Low-Power Counter Register, UARTILPR */ |
| __IOM uint32_t UARTIBRD; /*!< Integer Baud Rate Register, UARTIBRD */ |
| __IOM uint32_t UARTFBRD; /*!< Fractional Baud Rate Register, UARTFBRD */ |
| __IOM uint32_t UARTLCR_H; /*!< Line Control Register, UARTLCR_H */ |
| __IOM uint32_t UARTCR; /*!< Control Register, UARTCR */ |
| __IOM uint32_t UARTIFLS; /*!< Interrupt FIFO Level Select Register, UARTIFLS */ |
| __IOM uint32_t UARTIMSC; /*!< Interrupt Mask Set/Clear Register, UARTIMSC */ |
| __IOM uint32_t UARTRIS; /*!< Raw Interrupt Status Register, UARTRIS */ |
| __IOM uint32_t UARTMIS; /*!< Masked Interrupt Status Register, UARTMIS */ |
| __IOM uint32_t UARTICR; /*!< Interrupt Clear Register, UARTICR */ |
| __IOM uint32_t UARTDMACR; /*!< DMA Control Register, UARTDMACR */ |
| __IM uint32_t RESERVED2[997]; |
| __IOM uint32_t UARTPERIPHID0; /*!< UARTPeriphID0 Register */ |
| __IOM uint32_t UARTPERIPHID1; /*!< UARTPeriphID1 Register */ |
| __IOM uint32_t UARTPERIPHID2; /*!< UARTPeriphID2 Register */ |
| __IOM uint32_t UARTPERIPHID3; /*!< UARTPeriphID3 Register */ |
| __IOM uint32_t UARTPCELLID0; /*!< UARTPCellID0 Register */ |
| __IOM uint32_t UARTPCELLID1; /*!< UARTPCellID1 Register */ |
| __IOM uint32_t UARTPCELLID2; /*!< UARTPCellID2 Register */ |
| __IOM uint32_t UARTPCELLID3; /*!< UARTPCellID3 Register */ |
| } UART0_Type; /*!< Size = 4096 (0x1000) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ ROSC ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief ROSC (ROSC) |
| */ |
| |
| typedef struct { /*!< ROSC Structure */ |
| __IOM uint32_t CTRL; /*!< Ring Oscillator control */ |
| __IOM uint32_t FREQA; /*!< The FREQA & FREQB registers control the frequency by controlling |
| the drive strength of each stage The drive strength has |
| 4 levels determined by the number of bits set Increasing |
| the number of bits set increases the drive strength and |
| increases the oscillation frequency 0 bits set is the default |
| drive strength 1 bit set doubles the drive strength 2 bits |
| set triples drive strength 3 bits set quadruples drive |
| strength For frequency randomisation set both DS0_RANDOM=1 |
| & DS1_RANDOM=1 */ |
| __IOM uint32_t FREQB; /*!< For a detailed description see freqa register */ |
| __IOM uint32_t RANDOM; /*!< Loads a value to the LFSR randomiser */ |
| __IOM uint32_t DORMANT; /*!< Ring Oscillator pause control */ |
| __IOM uint32_t DIV; /*!< Controls the output divider */ |
| __IOM uint32_t PHASE; /*!< Controls the phase shifted output */ |
| __IOM uint32_t STATUS; /*!< Ring Oscillator Status */ |
| __IOM uint32_t RANDOMBIT; /*!< This just reads the state of the oscillator output so randomness |
| is compromised if the ring oscillator is stopped or run |
| at a harmonic of the bus frequency */ |
| __IOM uint32_t COUNT; /*!< A down counter running at the ROSC frequency which counts to |
| zero and stops. To start the counter write a non-zero value. |
| Can be used for short software pauses when setting up time |
| sensitive hardware. */ |
| } ROSC_Type; /*!< Size = 40 (0x28) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ POWMAN ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief Controls vreg, bor, lposc, chip resets & xosc startup, powman and provides scratch register for general use and for bootcode use (POWMAN) |
| */ |
| |
| typedef struct { /*!< POWMAN Structure */ |
| __IOM uint32_t BADPASSWD; /*!< Indicates a bad password has been used */ |
| __IOM uint32_t VREG_CTRL; /*!< Voltage Regulator Control */ |
| __IOM uint32_t VREG_STS; /*!< Voltage Regulator Status */ |
| __IOM uint32_t VREG; /*!< Voltage Regulator Settings */ |
| __IOM uint32_t VREG_LP_ENTRY; /*!< Voltage Regulator Low Power Entry Settings */ |
| __IOM uint32_t VREG_LP_EXIT; /*!< Voltage Regulator Low Power Exit Settings */ |
| __IOM uint32_t BOD_CTRL; /*!< Brown-out Detection Control */ |
| __IOM uint32_t BOD; /*!< Brown-out Detection Settings */ |
| __IOM uint32_t BOD_LP_ENTRY; /*!< Brown-out Detection Low Power Entry Settings */ |
| __IOM uint32_t BOD_LP_EXIT; /*!< Brown-out Detection Low Power Exit Settings */ |
| __IOM uint32_t LPOSC; /*!< Low power oscillator control register. */ |
| __IOM uint32_t CHIP_RESET; /*!< Chip reset control and status */ |
| __IOM uint32_t WDSEL; /*!< Allows a watchdog reset to reset the internal state of powman |
| in addition to the power-on state machine (PSM). Note that |
| powman ignores watchdog resets that do not select at least |
| the CLOCKS stage or earlier stages in the PSM. If using |
| these bits, it's recommended to set PSM_WDSEL to all-ones |
| in addition to the desired bits in this register. Failing |
| to select CLOCKS or earlier will result in the POWMAN_WDSEL |
| register having no effect. */ |
| __IOM uint32_t SEQ_CFG; /*!< For configuration of the power sequencer Writes are ignored |
| while POWMAN_STATE_CHANGING=1 */ |
| __IOM uint32_t STATE; /*!< This register controls the power state of the 4 power domains. |
| The current power state is indicated in POWMAN_STATE_CURRENT |
| which is read-only. To change the state, write to POWMAN_STATE_REQ. |
| The coding of POWMAN_STATE_CURRENT & POWMAN_STATE_REQ corresponds |
| to the power states defined in the datasheet: bit 3 = SWCORE |
| bit 2 = XIP cache bit 1 = SRAM0 bit 0 = SRAM1 0 = powered |
| up 1 = powered down When POWMAN_STATE_REQ is written, the |
| POWMAN_STATE_WAITING flag is set while the Power Manager |
| determines what is required. If an invalid transition is |
| requested the Power Manager will still register the request |
| in POWMAN_STATE_REQ but will also set the POWMAN_BAD_REQ |
| flag. It will then implement the power-up requests and |
| ignore the power down requests. To do nothing would risk |
| entering an unrecoverable lock-up state. Invalid requests |
| are: any combination of power up and power down requests |
| any request that results in swcore boing powered and xip |
| unpowered If the request is to power down the switched-core |
| domain then POWMAN_STATE_WAITING stays active until the |
| processors halt. During this time the POWMAN_STATE_REQ |
| field can be re-written to change or cancel the request. |
| When the power state transition begins the POWMAN_STATE_WAITING_flag |
| is cleared, the POWMAN_STATE_CHANGING flag is set and POWMAN |
| register writes are ignored until the transition completes. */ |
| __IOM uint32_t POW_FASTDIV; /*!< POW_FASTDIV */ |
| __IOM uint32_t POW_DELAY; /*!< power state machine delays */ |
| __IOM uint32_t EXT_CTRL0; /*!< Configures a gpio as a power mode aware control output */ |
| __IOM uint32_t EXT_CTRL1; /*!< Configures a gpio as a power mode aware control output */ |
| __IOM uint32_t EXT_TIME_REF; /*!< Select a GPIO to use as a time reference, the source can be |
| used to drive the low power clock at 32kHz, or to provide |
| a 1ms tick to the timer, or provide a 1Hz tick to the timer. |
| The tick selection is controlled by the POWMAN_TIMER register. */ |
| __IOM uint32_t LPOSC_FREQ_KHZ_INT; /*!< Informs the AON Timer of the integer component of the clock |
| frequency when running off the LPOSC. */ |
| __IOM uint32_t LPOSC_FREQ_KHZ_FRAC; /*!< Informs the AON Timer of the fractional component of the clock |
| frequency when running off the LPOSC. */ |
| __IOM uint32_t XOSC_FREQ_KHZ_INT; /*!< Informs the AON Timer of the integer component of the clock |
| frequency when running off the XOSC. */ |
| __IOM uint32_t XOSC_FREQ_KHZ_FRAC; /*!< Informs the AON Timer of the fractional component of the clock |
| frequency when running off the XOSC. */ |
| __IOM uint32_t SET_TIME_63TO48; /*!< SET_TIME_63TO48 */ |
| __IOM uint32_t SET_TIME_47TO32; /*!< SET_TIME_47TO32 */ |
| __IOM uint32_t SET_TIME_31TO16; /*!< SET_TIME_31TO16 */ |
| __IOM uint32_t SET_TIME_15TO0; /*!< SET_TIME_15TO0 */ |
| __IOM uint32_t READ_TIME_UPPER; /*!< READ_TIME_UPPER */ |
| __IOM uint32_t READ_TIME_LOWER; /*!< READ_TIME_LOWER */ |
| __IOM uint32_t ALARM_TIME_63TO48; /*!< ALARM_TIME_63TO48 */ |
| __IOM uint32_t ALARM_TIME_47TO32; /*!< ALARM_TIME_47TO32 */ |
| __IOM uint32_t ALARM_TIME_31TO16; /*!< ALARM_TIME_31TO16 */ |
| __IOM uint32_t ALARM_TIME_15TO0; /*!< ALARM_TIME_15TO0 */ |
| __IOM uint32_t TIMER; /*!< TIMER */ |
| __IOM uint32_t PWRUP0; /*!< 4 GPIO powerup events can be configured to wake the chip up |
| from a low power state. The pwrups are level/edge sensitive |
| and can be set to trigger on a high/rising or low/falling |
| event The number of gpios available depends on the package |
| option. An invalid selection will be ignored source = 0 |
| selects gpio0 . . source = 47 selects gpio47 source = 48 |
| selects qspi_ss source = 49 selects qspi_sd0 source = 50 |
| selects qspi_sd1 source = 51 selects qspi_sd2 source = |
| 52 selects qspi_sd3 source = 53 selects qspi_sclk level |
| = 0 triggers the pwrup when the source is low level = 1 |
| triggers the pwrup when the source is high */ |
| __IOM uint32_t PWRUP1; /*!< 4 GPIO powerup events can be configured to wake the chip up |
| from a low power state. The pwrups are level/edge sensitive |
| and can be set to trigger on a high/rising or low/falling |
| event The number of gpios available depends on the package |
| option. An invalid selection will be ignored source = 0 |
| selects gpio0 . . source = 47 selects gpio47 source = 48 |
| selects qspi_ss source = 49 selects qspi_sd0 source = 50 |
| selects qspi_sd1 source = 51 selects qspi_sd2 source = |
| 52 selects qspi_sd3 source = 53 selects qspi_sclk level |
| = 0 triggers the pwrup when the source is low level = 1 |
| triggers the pwrup when the source is high */ |
| __IOM uint32_t PWRUP2; /*!< 4 GPIO powerup events can be configured to wake the chip up |
| from a low power state. The pwrups are level/edge sensitive |
| and can be set to trigger on a high/rising or low/falling |
| event The number of gpios available depends on the package |
| option. An invalid selection will be ignored source = 0 |
| selects gpio0 . . source = 47 selects gpio47 source = 48 |
| selects qspi_ss source = 49 selects qspi_sd0 source = 50 |
| selects qspi_sd1 source = 51 selects qspi_sd2 source = |
| 52 selects qspi_sd3 source = 53 selects qspi_sclk level |
| = 0 triggers the pwrup when the source is low level = 1 |
| triggers the pwrup when the source is high */ |
| __IOM uint32_t PWRUP3; /*!< 4 GPIO powerup events can be configured to wake the chip up |
| from a low power state. The pwrups are level/edge sensitive |
| and can be set to trigger on a high/rising or low/falling |
| event The number of gpios available depends on the package |
| option. An invalid selection will be ignored source = 0 |
| selects gpio0 . . source = 47 selects gpio47 source = 48 |
| selects qspi_ss source = 49 selects qspi_sd0 source = 50 |
| selects qspi_sd1 source = 51 selects qspi_sd2 source = |
| 52 selects qspi_sd3 source = 53 selects qspi_sclk level |
| = 0 triggers the pwrup when the source is low level = 1 |
| triggers the pwrup when the source is high */ |
| __IOM uint32_t CURRENT_PWRUP_REQ; /*!< Indicates current powerup request state pwrup events can be |
| cleared by removing the enable from the pwrup register. |
| The alarm pwrup req can be cleared by clearing timer.alarm_enab |
| 0 = chip reset, for the source of the last reset see POWMAN_CHIP_RESET |
| 1 = pwrup0 2 = pwrup1 3 = pwrup2 4 = pwrup3 5 = coresight_pwrup |
| 6 = alarm_pwrup */ |
| __IOM uint32_t LAST_SWCORE_PWRUP; /*!< Indicates which pwrup source triggered the last switched-core |
| power up 0 = chip reset, for the source of the last reset |
| see POWMAN_CHIP_RESET 1 = pwrup0 2 = pwrup1 3 = pwrup2 |
| 4 = pwrup3 5 = coresight_pwrup 6 = alarm_pwrup */ |
| __IOM uint32_t DBG_PWRCFG; /*!< DBG_PWRCFG */ |
| __IOM uint32_t BOOTDIS; /*!< Tell the bootrom to ignore the BOOT0..3 registers following |
| the next RSM reset (e.g. the next core power down/up). |
| If an early boot stage has soft-locked some OTP pages in |
| order to protect their contents from later stages, there |
| is a risk that Secure code running at a later stage can |
| unlock the pages by powering the core up and down. This |
| register can be used to ensure that the bootloader runs |
| as normal on the next power up, preventing Secure code |
| at a later stage from accessing OTP in its unlocked state. |
| Should be used in conjunction with the OTP BOOTDIS register. */ |
| __IOM uint32_t DBGCONFIG; /*!< DBGCONFIG */ |
| __IOM uint32_t SCRATCH0; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH1; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH2; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH3; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH4; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH5; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH6; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t SCRATCH7; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t BOOT0; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t BOOT1; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t BOOT2; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t BOOT3; /*!< Scratch register. Information persists in low power mode */ |
| __IOM uint32_t INTR; /*!< Raw Interrupts */ |
| __IOM uint32_t INTE; /*!< Interrupt Enable */ |
| __IOM uint32_t INTF; /*!< Interrupt Force */ |
| __IOM uint32_t INTS; /*!< Interrupt status after masking & forcing */ |
| } POWMAN_Type; /*!< Size = 240 (0xf0) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ WATCHDOG ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief WATCHDOG (WATCHDOG) |
| */ |
| |
| typedef struct { /*!< WATCHDOG Structure */ |
| __IOM uint32_t CTRL; /*!< Watchdog control The rst_wdsel register determines which subsystems |
| are reset when the watchdog is triggered. The watchdog |
| can be triggered in software. */ |
| __IOM uint32_t LOAD; /*!< Load the watchdog timer. The maximum setting is 0xffffff which |
| corresponds to approximately 16 seconds. */ |
| __IOM uint32_t REASON; /*!< Logs the reason for the last reset. Both bits are zero for the |
| case of a hardware reset. Additionally, as of RP2350, a |
| debugger warm reset of either core (SYSRESETREQ or hartreset) |
| will also clear the watchdog reason register, so that software |
| loaded under the debugger following a watchdog timeout |
| will not continue to see the timeout condition. */ |
| __IOM uint32_t SCRATCH0; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH1; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH2; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH3; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH4; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH5; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH6; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| __IOM uint32_t SCRATCH7; /*!< Scratch register. Information persists through soft reset of |
| the chip. */ |
| } WATCHDOG_Type; /*!< Size = 44 (0x2c) */ |
| |
| |
| |
| /* =========================================================================================================================== */ |
| /* ================ DMA ================ */ |
| /* =========================================================================================================================== */ |
| |
| |
| /** |
| * @brief DMA with separate read and write masters (DMA) |
| */ |
| |
| typedef struct { /*!< DMA Structure */ |
| __IOM uint32_t CH0_READ_ADDR; /*!< DMA Channel 0 Read Address pointer */ |
| __IOM uint32_t CH0_WRITE_ADDR; /*!< DMA Channel 0 Write Address pointer */ |
| __IOM uint32_t CH0_TRANS_COUNT; /*!< DMA Channel 0 Transfer Count */ |
| __IOM uint32_t CH0_CTRL_TRIG; /*!< DMA Channel 0 Control and Status */ |
| __IOM uint32_t CH0_AL1_CTRL; /*!< Alias for channel 0 CTRL register */ |
| __IOM uint32_t CH0_AL1_READ_ADDR; /*!< Alias for channel 0 READ_ADDR register */ |
| __IOM uint32_t CH0_AL1_WRITE_ADDR; /*!< Alias for channel 0 WRITE_ADDR register */ |
| __IOM uint32_t CH0_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 0 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH0_AL2_CTRL; /*!< Alias for channel 0 CTRL register */ |
| __IOM uint32_t CH0_AL2_TRANS_COUNT; /*!< Alias for channel 0 TRANS_COUNT register */ |
| __IOM uint32_t CH0_AL2_READ_ADDR; /*!< Alias for channel 0 READ_ADDR register */ |
| __IOM uint32_t CH0_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 0 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH0_AL3_CTRL; /*!< Alias for channel 0 CTRL register */ |
| __IOM uint32_t CH0_AL3_WRITE_ADDR; /*!< Alias for channel 0 WRITE_ADDR register */ |
| __IOM uint32_t CH0_AL3_TRANS_COUNT; /*!< Alias for channel 0 TRANS_COUNT register */ |
| __IOM uint32_t CH0_AL3_READ_ADDR_TRIG; /*!< Alias for channel 0 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH1_READ_ADDR; /*!< DMA Channel 1 Read Address pointer */ |
| __IOM uint32_t CH1_WRITE_ADDR; /*!< DMA Channel 1 Write Address pointer */ |
| __IOM uint32_t CH1_TRANS_COUNT; /*!< DMA Channel 1 Transfer Count */ |
| __IOM uint32_t CH1_CTRL_TRIG; /*!< DMA Channel 1 Control and Status */ |
| __IOM uint32_t CH1_AL1_CTRL; /*!< Alias for channel 1 CTRL register */ |
| __IOM uint32_t CH1_AL1_READ_ADDR; /*!< Alias for channel 1 READ_ADDR register */ |
| __IOM uint32_t CH1_AL1_WRITE_ADDR; /*!< Alias for channel 1 WRITE_ADDR register */ |
| __IOM uint32_t CH1_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 1 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH1_AL2_CTRL; /*!< Alias for channel 1 CTRL register */ |
| __IOM uint32_t CH1_AL2_TRANS_COUNT; /*!< Alias for channel 1 TRANS_COUNT register */ |
| __IOM uint32_t CH1_AL2_READ_ADDR; /*!< Alias for channel 1 READ_ADDR register */ |
| __IOM uint32_t CH1_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 1 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH1_AL3_CTRL; /*!< Alias for channel 1 CTRL register */ |
| __IOM uint32_t CH1_AL3_WRITE_ADDR; /*!< Alias for channel 1 WRITE_ADDR register */ |
| __IOM uint32_t CH1_AL3_TRANS_COUNT; /*!< Alias for channel 1 TRANS_COUNT register */ |
| __IOM uint32_t CH1_AL3_READ_ADDR_TRIG; /*!< Alias for channel 1 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH2_READ_ADDR; /*!< DMA Channel 2 Read Address pointer */ |
| __IOM uint32_t CH2_WRITE_ADDR; /*!< DMA Channel 2 Write Address pointer */ |
| __IOM uint32_t CH2_TRANS_COUNT; /*!< DMA Channel 2 Transfer Count */ |
| __IOM uint32_t CH2_CTRL_TRIG; /*!< DMA Channel 2 Control and Status */ |
| __IOM uint32_t CH2_AL1_CTRL; /*!< Alias for channel 2 CTRL register */ |
| __IOM uint32_t CH2_AL1_READ_ADDR; /*!< Alias for channel 2 READ_ADDR register */ |
| __IOM uint32_t CH2_AL1_WRITE_ADDR; /*!< Alias for channel 2 WRITE_ADDR register */ |
| __IOM uint32_t CH2_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 2 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH2_AL2_CTRL; /*!< Alias for channel 2 CTRL register */ |
| __IOM uint32_t CH2_AL2_TRANS_COUNT; /*!< Alias for channel 2 TRANS_COUNT register */ |
| __IOM uint32_t CH2_AL2_READ_ADDR; /*!< Alias for channel 2 READ_ADDR register */ |
| __IOM uint32_t CH2_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 2 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH2_AL3_CTRL; /*!< Alias for channel 2 CTRL register */ |
| __IOM uint32_t CH2_AL3_WRITE_ADDR; /*!< Alias for channel 2 WRITE_ADDR register */ |
| __IOM uint32_t CH2_AL3_TRANS_COUNT; /*!< Alias for channel 2 TRANS_COUNT register */ |
| __IOM uint32_t CH2_AL3_READ_ADDR_TRIG; /*!< Alias for channel 2 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH3_READ_ADDR; /*!< DMA Channel 3 Read Address pointer */ |
| __IOM uint32_t CH3_WRITE_ADDR; /*!< DMA Channel 3 Write Address pointer */ |
| __IOM uint32_t CH3_TRANS_COUNT; /*!< DMA Channel 3 Transfer Count */ |
| __IOM uint32_t CH3_CTRL_TRIG; /*!< DMA Channel 3 Control and Status */ |
| __IOM uint32_t CH3_AL1_CTRL; /*!< Alias for channel 3 CTRL register */ |
| __IOM uint32_t CH3_AL1_READ_ADDR; /*!< Alias for channel 3 READ_ADDR register */ |
| __IOM uint32_t CH3_AL1_WRITE_ADDR; /*!< Alias for channel 3 WRITE_ADDR register */ |
| __IOM uint32_t CH3_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 3 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH3_AL2_CTRL; /*!< Alias for channel 3 CTRL register */ |
| __IOM uint32_t CH3_AL2_TRANS_COUNT; /*!< Alias for channel 3 TRANS_COUNT register */ |
| __IOM uint32_t CH3_AL2_READ_ADDR; /*!< Alias for channel 3 READ_ADDR register */ |
| __IOM uint32_t CH3_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 3 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH3_AL3_CTRL; /*!< Alias for channel 3 CTRL register */ |
| __IOM uint32_t CH3_AL3_WRITE_ADDR; /*!< Alias for channel 3 WRITE_ADDR register */ |
| __IOM uint32_t CH3_AL3_TRANS_COUNT; /*!< Alias for channel 3 TRANS_COUNT register */ |
| __IOM uint32_t CH3_AL3_READ_ADDR_TRIG; /*!< Alias for channel 3 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH4_READ_ADDR; /*!< DMA Channel 4 Read Address pointer */ |
| __IOM uint32_t CH4_WRITE_ADDR; /*!< DMA Channel 4 Write Address pointer */ |
| __IOM uint32_t CH4_TRANS_COUNT; /*!< DMA Channel 4 Transfer Count */ |
| __IOM uint32_t CH4_CTRL_TRIG; /*!< DMA Channel 4 Control and Status */ |
| __IOM uint32_t CH4_AL1_CTRL; /*!< Alias for channel 4 CTRL register */ |
| __IOM uint32_t CH4_AL1_READ_ADDR; /*!< Alias for channel 4 READ_ADDR register */ |
| __IOM uint32_t CH4_AL1_WRITE_ADDR; /*!< Alias for channel 4 WRITE_ADDR register */ |
| __IOM uint32_t CH4_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 4 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH4_AL2_CTRL; /*!< Alias for channel 4 CTRL register */ |
| __IOM uint32_t CH4_AL2_TRANS_COUNT; /*!< Alias for channel 4 TRANS_COUNT register */ |
| __IOM uint32_t CH4_AL2_READ_ADDR; /*!< Alias for channel 4 READ_ADDR register */ |
| __IOM uint32_t CH4_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 4 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH4_AL3_CTRL; /*!< Alias for channel 4 CTRL register */ |
| __IOM uint32_t CH4_AL3_WRITE_ADDR; /*!< Alias for channel 4 WRITE_ADDR register */ |
| __IOM uint32_t CH4_AL3_TRANS_COUNT; /*!< Alias for channel 4 TRANS_COUNT register */ |
| __IOM uint32_t CH4_AL3_READ_ADDR_TRIG; /*!< Alias for channel 4 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH5_READ_ADDR; /*!< DMA Channel 5 Read Address pointer */ |
| __IOM uint32_t CH5_WRITE_ADDR; /*!< DMA Channel 5 Write Address pointer */ |
| __IOM uint32_t CH5_TRANS_COUNT; /*!< DMA Channel 5 Transfer Count */ |
| __IOM uint32_t CH5_CTRL_TRIG; /*!< DMA Channel 5 Control and Status */ |
| __IOM uint32_t CH5_AL1_CTRL; /*!< Alias for channel 5 CTRL register */ |
| __IOM uint32_t CH5_AL1_READ_ADDR; /*!< Alias for channel 5 READ_ADDR register */ |
| __IOM uint32_t CH5_AL1_WRITE_ADDR; /*!< Alias for channel 5 WRITE_ADDR register */ |
| __IOM uint32_t CH5_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 5 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH5_AL2_CTRL; /*!< Alias for channel 5 CTRL register */ |
| __IOM uint32_t CH5_AL2_TRANS_COUNT; /*!< Alias for channel 5 TRANS_COUNT register */ |
| __IOM uint32_t CH5_AL2_READ_ADDR; /*!< Alias for channel 5 READ_ADDR register */ |
| __IOM uint32_t CH5_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 5 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH5_AL3_CTRL; /*!< Alias for channel 5 CTRL register */ |
| __IOM uint32_t CH5_AL3_WRITE_ADDR; /*!< Alias for channel 5 WRITE_ADDR register */ |
| __IOM uint32_t CH5_AL3_TRANS_COUNT; /*!< Alias for channel 5 TRANS_COUNT register */ |
| __IOM uint32_t CH5_AL3_READ_ADDR_TRIG; /*!< Alias for channel 5 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH6_READ_ADDR; /*!< DMA Channel 6 Read Address pointer */ |
| __IOM uint32_t CH6_WRITE_ADDR; /*!< DMA Channel 6 Write Address pointer */ |
| __IOM uint32_t CH6_TRANS_COUNT; /*!< DMA Channel 6 Transfer Count */ |
| __IOM uint32_t CH6_CTRL_TRIG; /*!< DMA Channel 6 Control and Status */ |
| __IOM uint32_t CH6_AL1_CTRL; /*!< Alias for channel 6 CTRL register */ |
| __IOM uint32_t CH6_AL1_READ_ADDR; /*!< Alias for channel 6 READ_ADDR register */ |
| __IOM uint32_t CH6_AL1_WRITE_ADDR; /*!< Alias for channel 6 WRITE_ADDR register */ |
| __IOM uint32_t CH6_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 6 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH6_AL2_CTRL; /*!< Alias for channel 6 CTRL register */ |
| __IOM uint32_t CH6_AL2_TRANS_COUNT; /*!< Alias for channel 6 TRANS_COUNT register */ |
| __IOM uint32_t CH6_AL2_READ_ADDR; /*!< Alias for channel 6 READ_ADDR register */ |
| __IOM uint32_t CH6_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 6 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH6_AL3_CTRL; /*!< Alias for channel 6 CTRL register */ |
| __IOM uint32_t CH6_AL3_WRITE_ADDR; /*!< Alias for channel 6 WRITE_ADDR register */ |
| __IOM uint32_t CH6_AL3_TRANS_COUNT; /*!< Alias for channel 6 TRANS_COUNT register */ |
| __IOM uint32_t CH6_AL3_READ_ADDR_TRIG; /*!< Alias for channel 6 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH7_READ_ADDR; /*!< DMA Channel 7 Read Address pointer */ |
| __IOM uint32_t CH7_WRITE_ADDR; /*!< DMA Channel 7 Write Address pointer */ |
| __IOM uint32_t CH7_TRANS_COUNT; /*!< DMA Channel 7 Transfer Count */ |
| __IOM uint32_t CH7_CTRL_TRIG; /*!< DMA Channel 7 Control and Status */ |
| __IOM uint32_t CH7_AL1_CTRL; /*!< Alias for channel 7 CTRL register */ |
| __IOM uint32_t CH7_AL1_READ_ADDR; /*!< Alias for channel 7 READ_ADDR register */ |
| __IOM uint32_t CH7_AL1_WRITE_ADDR; /*!< Alias for channel 7 WRITE_ADDR register */ |
| __IOM uint32_t CH7_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 7 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH7_AL2_CTRL; /*!< Alias for channel 7 CTRL register */ |
| __IOM uint32_t CH7_AL2_TRANS_COUNT; /*!< Alias for channel 7 TRANS_COUNT register */ |
| __IOM uint32_t CH7_AL2_READ_ADDR; /*!< Alias for channel 7 READ_ADDR register */ |
| __IOM uint32_t CH7_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 7 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH7_AL3_CTRL; /*!< Alias for channel 7 CTRL register */ |
| __IOM uint32_t CH7_AL3_WRITE_ADDR; /*!< Alias for channel 7 WRITE_ADDR register */ |
| __IOM uint32_t CH7_AL3_TRANS_COUNT; /*!< Alias for channel 7 TRANS_COUNT register */ |
| __IOM uint32_t CH7_AL3_READ_ADDR_TRIG; /*!< Alias for channel 7 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH8_READ_ADDR; /*!< DMA Channel 8 Read Address pointer */ |
| __IOM uint32_t CH8_WRITE_ADDR; /*!< DMA Channel 8 Write Address pointer */ |
| __IOM uint32_t CH8_TRANS_COUNT; /*!< DMA Channel 8 Transfer Count */ |
| __IOM uint32_t CH8_CTRL_TRIG; /*!< DMA Channel 8 Control and Status */ |
| __IOM uint32_t CH8_AL1_CTRL; /*!< Alias for channel 8 CTRL register */ |
| __IOM uint32_t CH8_AL1_READ_ADDR; /*!< Alias for channel 8 READ_ADDR register */ |
| __IOM uint32_t CH8_AL1_WRITE_ADDR; /*!< Alias for channel 8 WRITE_ADDR register */ |
| __IOM uint32_t CH8_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 8 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH8_AL2_CTRL; /*!< Alias for channel 8 CTRL register */ |
| __IOM uint32_t CH8_AL2_TRANS_COUNT; /*!< Alias for channel 8 TRANS_COUNT register */ |
| __IOM uint32_t CH8_AL2_READ_ADDR; /*!< Alias for channel 8 READ_ADDR register */ |
| __IOM uint32_t CH8_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 8 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH8_AL3_CTRL; /*!< Alias for channel 8 CTRL register */ |
| __IOM uint32_t CH8_AL3_WRITE_ADDR; /*!< Alias for channel 8 WRITE_ADDR register */ |
| __IOM uint32_t CH8_AL3_TRANS_COUNT; /*!< Alias for channel 8 TRANS_COUNT register */ |
| __IOM uint32_t CH8_AL3_READ_ADDR_TRIG; /*!< Alias for channel 8 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH9_READ_ADDR; /*!< DMA Channel 9 Read Address pointer */ |
| __IOM uint32_t CH9_WRITE_ADDR; /*!< DMA Channel 9 Write Address pointer */ |
| __IOM uint32_t CH9_TRANS_COUNT; /*!< DMA Channel 9 Transfer Count */ |
| __IOM uint32_t CH9_CTRL_TRIG; /*!< DMA Channel 9 Control and Status */ |
| __IOM uint32_t CH9_AL1_CTRL; /*!< Alias for channel 9 CTRL register */ |
| __IOM uint32_t CH9_AL1_READ_ADDR; /*!< Alias for channel 9 READ_ADDR register */ |
| __IOM uint32_t CH9_AL1_WRITE_ADDR; /*!< Alias for channel 9 WRITE_ADDR register */ |
| __IOM uint32_t CH9_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 9 TRANS_COUNT register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH9_AL2_CTRL; /*!< Alias for channel 9 CTRL register */ |
| __IOM uint32_t CH9_AL2_TRANS_COUNT; /*!< Alias for channel 9 TRANS_COUNT register */ |
| __IOM uint32_t CH9_AL2_READ_ADDR; /*!< Alias for channel 9 READ_ADDR register */ |
| __IOM uint32_t CH9_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 9 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH9_AL3_CTRL; /*!< Alias for channel 9 CTRL register */ |
| __IOM uint32_t CH9_AL3_WRITE_ADDR; /*!< Alias for channel 9 WRITE_ADDR register */ |
| __IOM uint32_t CH9_AL3_TRANS_COUNT; /*!< Alias for channel 9 TRANS_COUNT register */ |
| __IOM uint32_t CH9_AL3_READ_ADDR_TRIG; /*!< Alias for channel 9 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH10_READ_ADDR; /*!< DMA Channel 10 Read Address pointer */ |
| __IOM uint32_t CH10_WRITE_ADDR; /*!< DMA Channel 10 Write Address pointer */ |
| __IOM uint32_t CH10_TRANS_COUNT; /*!< DMA Channel 10 Transfer Count */ |
| __IOM uint32_t CH10_CTRL_TRIG; /*!< DMA Channel 10 Control and Status */ |
| __IOM uint32_t CH10_AL1_CTRL; /*!< Alias for channel 10 CTRL register */ |
| __IOM uint32_t CH10_AL1_READ_ADDR; /*!< Alias for channel 10 READ_ADDR register */ |
| __IOM uint32_t CH10_AL1_WRITE_ADDR; /*!< Alias for channel 10 WRITE_ADDR register */ |
| __IOM uint32_t CH10_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 10 TRANS_COUNT register This is a trigger |
| register (0xc). Writing a nonzero value will reload the |
| channel counter and start the channel. */ |
| __IOM uint32_t CH10_AL2_CTRL; /*!< Alias for channel 10 CTRL register */ |
| __IOM uint32_t CH10_AL2_TRANS_COUNT; /*!< Alias for channel 10 TRANS_COUNT register */ |
| __IOM uint32_t CH10_AL2_READ_ADDR; /*!< Alias for channel 10 READ_ADDR register */ |
| __IOM uint32_t CH10_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 10 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH10_AL3_CTRL; /*!< Alias for channel 10 CTRL register */ |
| __IOM uint32_t CH10_AL3_WRITE_ADDR; /*!< Alias for channel 10 WRITE_ADDR register */ |
| __IOM uint32_t CH10_AL3_TRANS_COUNT; /*!< Alias for channel 10 TRANS_COUNT register */ |
| __IOM uint32_t CH10_AL3_READ_ADDR_TRIG; /*!< Alias for channel 10 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH11_READ_ADDR; /*!< DMA Channel 11 Read Address pointer */ |
| __IOM uint32_t CH11_WRITE_ADDR; /*!< DMA Channel 11 Write Address pointer */ |
| __IOM uint32_t CH11_TRANS_COUNT; /*!< DMA Channel 11 Transfer Count */ |
| __IOM uint32_t CH11_CTRL_TRIG; /*!< DMA Channel 11 Control and Status */ |
| __IOM uint32_t CH11_AL1_CTRL; /*!< Alias for channel 11 CTRL register */ |
| __IOM uint32_t CH11_AL1_READ_ADDR; /*!< Alias for channel 11 READ_ADDR register */ |
| __IOM uint32_t CH11_AL1_WRITE_ADDR; /*!< Alias for channel 11 WRITE_ADDR register */ |
| __IOM uint32_t CH11_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 11 TRANS_COUNT register This is a trigger |
| register (0xc). Writing a nonzero value will reload the |
| channel counter and start the channel. */ |
| __IOM uint32_t CH11_AL2_CTRL; /*!< Alias for channel 11 CTRL register */ |
| __IOM uint32_t CH11_AL2_TRANS_COUNT; /*!< Alias for channel 11 TRANS_COUNT register */ |
| __IOM uint32_t CH11_AL2_READ_ADDR; /*!< Alias for channel 11 READ_ADDR register */ |
| __IOM uint32_t CH11_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 11 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH11_AL3_CTRL; /*!< Alias for channel 11 CTRL register */ |
| __IOM uint32_t CH11_AL3_WRITE_ADDR; /*!< Alias for channel 11 WRITE_ADDR register */ |
| __IOM uint32_t CH11_AL3_TRANS_COUNT; /*!< Alias for channel 11 TRANS_COUNT register */ |
| __IOM uint32_t CH11_AL3_READ_ADDR_TRIG; /*!< Alias for channel 11 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH12_READ_ADDR; /*!< DMA Channel 12 Read Address pointer */ |
| __IOM uint32_t CH12_WRITE_ADDR; /*!< DMA Channel 12 Write Address pointer */ |
| __IOM uint32_t CH12_TRANS_COUNT; /*!< DMA Channel 12 Transfer Count */ |
| __IOM uint32_t CH12_CTRL_TRIG; /*!< DMA Channel 12 Control and Status */ |
| __IOM uint32_t CH12_AL1_CTRL; /*!< Alias for channel 12 CTRL register */ |
| __IOM uint32_t CH12_AL1_READ_ADDR; /*!< Alias for channel 12 READ_ADDR register */ |
| __IOM uint32_t CH12_AL1_WRITE_ADDR; /*!< Alias for channel 12 WRITE_ADDR register */ |
| __IOM uint32_t CH12_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 12 TRANS_COUNT register This is a trigger |
| register (0xc). Writing a nonzero value will reload the |
| channel counter and start the channel. */ |
| __IOM uint32_t CH12_AL2_CTRL; /*!< Alias for channel 12 CTRL register */ |
| __IOM uint32_t CH12_AL2_TRANS_COUNT; /*!< Alias for channel 12 TRANS_COUNT register */ |
| __IOM uint32_t CH12_AL2_READ_ADDR; /*!< Alias for channel 12 READ_ADDR register */ |
| __IOM uint32_t CH12_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 12 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH12_AL3_CTRL; /*!< Alias for channel 12 CTRL register */ |
| __IOM uint32_t CH12_AL3_WRITE_ADDR; /*!< Alias for channel 12 WRITE_ADDR register */ |
| __IOM uint32_t CH12_AL3_TRANS_COUNT; /*!< Alias for channel 12 TRANS_COUNT register */ |
| __IOM uint32_t CH12_AL3_READ_ADDR_TRIG; /*!< Alias for channel 12 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH13_READ_ADDR; /*!< DMA Channel 13 Read Address pointer */ |
| __IOM uint32_t CH13_WRITE_ADDR; /*!< DMA Channel 13 Write Address pointer */ |
| __IOM uint32_t CH13_TRANS_COUNT; /*!< DMA Channel 13 Transfer Count */ |
| __IOM uint32_t CH13_CTRL_TRIG; /*!< DMA Channel 13 Control and Status */ |
| __IOM uint32_t CH13_AL1_CTRL; /*!< Alias for channel 13 CTRL register */ |
| __IOM uint32_t CH13_AL1_READ_ADDR; /*!< Alias for channel 13 READ_ADDR register */ |
| __IOM uint32_t CH13_AL1_WRITE_ADDR; /*!< Alias for channel 13 WRITE_ADDR register */ |
| __IOM uint32_t CH13_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 13 TRANS_COUNT register This is a trigger |
| register (0xc). Writing a nonzero value will reload the |
| channel counter and start the channel. */ |
| __IOM uint32_t CH13_AL2_CTRL; /*!< Alias for channel 13 CTRL register */ |
| __IOM uint32_t CH13_AL2_TRANS_COUNT; /*!< Alias for channel 13 TRANS_COUNT register */ |
| __IOM uint32_t CH13_AL2_READ_ADDR; /*!< Alias for channel 13 READ_ADDR register */ |
| __IOM uint32_t CH13_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 13 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH13_AL3_CTRL; /*!< Alias for channel 13 CTRL register */ |
| __IOM uint32_t CH13_AL3_WRITE_ADDR; /*!< Alias for channel 13 WRITE_ADDR register */ |
| __IOM uint32_t CH13_AL3_TRANS_COUNT; /*!< Alias for channel 13 TRANS_COUNT register */ |
| __IOM uint32_t CH13_AL3_READ_ADDR_TRIG; /*!< Alias for channel 13 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH14_READ_ADDR; /*!< DMA Channel 14 Read Address pointer */ |
| __IOM uint32_t CH14_WRITE_ADDR; /*!< DMA Channel 14 Write Address pointer */ |
| __IOM uint32_t CH14_TRANS_COUNT; /*!< DMA Channel 14 Transfer Count */ |
| __IOM uint32_t CH14_CTRL_TRIG; /*!< DMA Channel 14 Control and Status */ |
| __IOM uint32_t CH14_AL1_CTRL; /*!< Alias for channel 14 CTRL register */ |
| __IOM uint32_t CH14_AL1_READ_ADDR; /*!< Alias for channel 14 READ_ADDR register */ |
| __IOM uint32_t CH14_AL1_WRITE_ADDR; /*!< Alias for channel 14 WRITE_ADDR register */ |
| __IOM uint32_t CH14_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 14 TRANS_COUNT register This is a trigger |
| register (0xc). Writing a nonzero value will reload the |
| channel counter and start the channel. */ |
| __IOM uint32_t CH14_AL2_CTRL; /*!< Alias for channel 14 CTRL register */ |
| __IOM uint32_t CH14_AL2_TRANS_COUNT; /*!< Alias for channel 14 TRANS_COUNT register */ |
| __IOM uint32_t CH14_AL2_READ_ADDR; /*!< Alias for channel 14 READ_ADDR register */ |
| __IOM uint32_t CH14_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 14 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH14_AL3_CTRL; /*!< Alias for channel 14 CTRL register */ |
| __IOM uint32_t CH14_AL3_WRITE_ADDR; /*!< Alias for channel 14 WRITE_ADDR register */ |
| __IOM uint32_t CH14_AL3_TRANS_COUNT; /*!< Alias for channel 14 TRANS_COUNT register */ |
| __IOM uint32_t CH14_AL3_READ_ADDR_TRIG; /*!< Alias for channel 14 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH15_READ_ADDR; /*!< DMA Channel 15 Read Address pointer */ |
| __IOM uint32_t CH15_WRITE_ADDR; /*!< DMA Channel 15 Write Address pointer */ |
| __IOM uint32_t CH15_TRANS_COUNT; /*!< DMA Channel 15 Transfer Count */ |
| __IOM uint32_t CH15_CTRL_TRIG; /*!< DMA Channel 15 Control and Status */ |
| __IOM uint32_t CH15_AL1_CTRL; /*!< Alias for channel 15 CTRL register */ |
| __IOM uint32_t CH15_AL1_READ_ADDR; /*!< Alias for channel 15 READ_ADDR register */ |
| __IOM uint32_t CH15_AL1_WRITE_ADDR; /*!< Alias for channel 15 WRITE_ADDR register */ |
| __IOM uint32_t CH15_AL1_TRANS_COUNT_TRIG; /*!< Alias for channel 15 TRANS_COUNT register This is a trigger |
| register (0xc). Writing a nonzero value will reload the |
| channel counter and start the channel. */ |
| __IOM uint32_t CH15_AL2_CTRL; /*!< Alias for channel 15 CTRL register */ |
| __IOM uint32_t CH15_AL2_TRANS_COUNT; /*!< Alias for channel 15 TRANS_COUNT register */ |
| __IOM uint32_t CH15_AL2_READ_ADDR; /*!< Alias for channel 15 READ_ADDR register */ |
| __IOM uint32_t CH15_AL2_WRITE_ADDR_TRIG; /*!< Alias for channel 15 WRITE_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t CH15_AL3_CTRL; /*!< Alias for channel 15 CTRL register */ |
| __IOM uint32_t CH15_AL3_WRITE_ADDR; /*!< Alias for channel 15 WRITE_ADDR register */ |
| __IOM uint32_t CH15_AL3_TRANS_COUNT; /*!< Alias for channel 15 TRANS_COUNT register */ |
| __IOM uint32_t CH15_AL3_READ_ADDR_TRIG; /*!< Alias for channel 15 READ_ADDR register This is a trigger register |
| (0xc). Writing a nonzero value will reload the channel |
| counter and start the channel. */ |
| __IOM uint32_t INTR; /*!< Interrupt Status (raw) */ |
| __IOM uint32_t INTE0; /*!< Interrupt Enables for IRQ 0 */ |
| __IOM uint32_t INTF0; /*!< Force Interrupts */ |
| __IOM uint32_t INTS0; /*!< Interrupt Status for IRQ 0 */ |
| __IOM uint32_t INTR1; /*!< Interrupt Status (raw) */ |
| __IOM uint32_t INTE1; /*!< Interrupt Enables for IRQ 1 */ |
| __IOM uint32_t INTF1; /*!< Force Interrupts */ |
| __IOM uint32_t INTS1; /*!< Interrupt Status for IRQ 1 */ |
| __IOM uint32_t INTR2; /*!< Interrupt Status (raw) */ |
| __IOM uint32_t INTE2; /*!< Interrupt Enables for IRQ 2 */ |
| __IOM uint32_t INTF2; /*!< Force Interrupts */ |
| __IOM uint32_t INTS2; /*!< Interrupt Status for IRQ 2 */ |
| __IOM uint32_t INTR3; /*!< Interrupt Status (raw) */ |
| __IOM uint32_t INTE3; /*!< Interrupt Enables for IRQ 3 */ |
| __IOM uint32_t INTF3; /*!< Force Interrupts */ |
| __IOM uint32_t INTS3; /*!< Interrupt Status for IRQ 3 */ |
| __IOM uint32_t TIMER0; /*!< Pacing (X/Y) fractional timer The pacing timer produces TREQ |
| assertions at a rate set by ((X/Y) * sys_clk). This equation |
| is evaluated every sys_clk cycles and therefore can only |
| generate TREQs at a rate of 1 per sys_clk (i.e. permanent |
| TREQ) or less. */ |
| __IOM uint32_t TIMER1; /*!< Pacing (X/Y) fractional timer The pacing timer produces TREQ |
| assertions at a rate set by ((X/Y) * sys_clk). This equation |
| is evaluated every sys_clk cycles and therefore can only |
| generate TREQs at a rate of 1 per sys_clk (i.e. permanent |
| TREQ) or less. */ |
| __IOM uint32_t TIMER2; /*!< Pacing (X/Y) fractional timer The pacing timer produces TREQ |
| assertions at a rate set by ((X/Y) * sys_clk). This equation |
| is evaluated every sys_clk cycles and therefore can only |
| generate TREQs at a rate of 1 per sys_clk (i.e. permanent |
| TREQ) or less. */ |
| __IOM uint32_t TIMER3; /*!< Pacing (X/Y) fractional timer The pacing timer produces TREQ |
| assertions at a rate set by ((X/Y) * sys_clk). This equation |
| is evaluated every sys_clk cycles and therefore can only |
| generate TREQs at a rate of 1 per sys_clk (i.e. permanent |
| TREQ) or less. */ |
| __IOM uint32_t MULTI_CHAN_TRIGGER; /*!< Trigger one or more channels simultaneously */ |
| __IOM uint32_t SNIFF_CTRL; /*!< Sniffer Control */ |
| __IOM uint32_t SNIFF_DATA; /*!< Data accumulator for sniff hardware */ |
| __IM uint32_t RESERVED; |
| __IOM uint32_t FIFO_LEVELS; /*!< Debug RAF, WAF, TDF levels */ |
| __IOM uint32_t CHAN_ABORT; /*!< Abort an in-progress transfer sequence on one or more channels */ |
| __IOM uint32_t N_CHANNELS; /*!< The number of channels this DMA instance is equipped with. This |
| DMA supports up to 16 hardware channels, but can be configured |
| with as few as one, to minimise silicon area. */ |
| __IM uint32_t RESERVED1[5]; |
| __IOM uint32_t SECCFG_CH0; /*!< Security configuration for channel 0. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH1; /*!< Security configuration for channel 1. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH2; /*!< Security configuration for channel 2. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH3; /*!< Security configuration for channel 3. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH4; /*!< Security configuration for channel 4. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH5; /*!< Security configuration for channel 5. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH6; /*!< Security configuration for channel 6. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH7; /*!< Security configuration for channel 7. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH8; /*!< Security configuration for channel 8. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH9; /*!< Security configuration for channel 9. Control whether this channel |
| performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH10; /*!< Security configuration for channel 10. Control whether this |
| channel performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH11; /*!< Security configuration for channel 11. Control whether this |
| channel performs Secure/Non-secure and Privileged/Unprivileged |
| bus accesses. If this channel generates bus accesses of |
| some security level, an access of at least that level (in |
| the order S+P > S+U > NS+P > NS+U) is required to program, |
| trigger, abort, check the status of, interrupt on or acknowledge |
| the interrupt of this channel. This register automatically |
| locks down (becomes read-only) once software starts to |
| configure the channel. This register is world-readable, |
| but is writable only from a Secure, Privileged context. */ |
| __IOM uint32_t SECCFG_CH12; /*!< Security configuration for channel 12. Control whether this |
|