8 Raspberry Pi RP2040 Copyright (c) 2020 Raspberry Pi (Trading) Ltd. \n \n SPDX-License-Identifier: BSD-3-Clause 0.1 32 CM0PLUS r0p1 little true false 2 1 false 26 0 0x0020 registers 0x14000000 QSPI flash execute-in-place block XIP_IRQ 6 XIP_CTRL 0x0000 Cache control read-write [3:3] When 1, the cache memories are powered down. They retain state,\n but can not be accessed. This reduces static power dissipation.\n Writing 1 to this bit forces CTRL_EN to 0, i.e. the cache cannot\n be enabled when powered down.\n Cache-as-SRAM accesses will produce a bus error response when\n the cache is powered down. POWER_DOWN read-write [1:1] When 1, writes to any alias other than 0x0 (caching, allocating)\n will produce a bus fault. When 0, these writes are silently ignored.\n In either case, writes to the 0x0 alias will deallocate on tag match,\n as usual. ERR_BADWRITE read-write [0:0] When 1, enable the cache. When the cache is disabled, all XIP accesses\n will go straight to the flash, without querying the cache. When enabled,\n cacheable XIP accesses will query the cache, and the flash will\n not be accessed if the tag matches and the valid bit is set.\n\n If the cache is enabled, cache-as-SRAM accesses have no effect on the\n cache data RAM, and will produce a bus error response. EN CTRL 0x00000003 0x0004 Cache Flush control read-write [0:0] Write 1 to flush the cache. This clears the tag memory, but\n the data memory retains its contents. (This means cache-as-SRAM\n contents is not affected by flush or reset.)\n Reading will hold the bus (stall the processor) until the flush\n completes. Alternatively STAT can be polled until completion. clear FLUSH FLUSH 0x00000000 0x0008 Cache Status read-only [2:2] When 1, indicates the XIP streaming FIFO is completely full.\n The streaming FIFO is 2 entries deep, so the full and empty\n flag allow its level to be ascertained. FIFO_FULL read-only [1:1] When 1, indicates the XIP streaming FIFO is completely empty. FIFO_EMPTY read-only [0:0] Reads as 0 while a cache flush is in progress, and 1 otherwise.\n The cache is flushed whenever the XIP block is reset, and also\n when requested via the FLUSH register. FLUSH_READY STAT 0x00000002 read-write 0x000c Cache Hit counter\n A 32 bit saturating counter that increments upon each cache hit,\n i.e. when an XIP access is serviced directly from cached data.\n Write any value to clear. oneToClear CTR_HIT 0x00000000 read-write 0x0010 Cache Access counter\n A 32 bit saturating counter that increments upon each XIP access,\n whether the cache is hit or not. This includes noncacheable accesses.\n Write any value to clear. oneToClear CTR_ACC 0x00000000 0x0014 FIFO stream address read-write [31:2] The address of the next word to be streamed from flash to the streaming FIFO.\n Increments automatically after each flash access.\n Write the initial access address here before starting a streaming read. STREAM_ADDR STREAM_ADDR 0x00000000 0x0018 FIFO stream control read-write [21:0] Write a nonzero value to start a streaming read. This will then\n progress in the background, using flash idle cycles to transfer\n a linear data block from flash to the streaming FIFO.\n Decrements automatically (1 at a time) as the stream\n progresses, and halts on reaching 0.\n Write 0 to halt an in-progress stream, and discard any in-flight\n read, so that a new stream can immediately be started (after\n draining the FIFO and reinitialising STREAM_ADDR) STREAM_CTR STREAM_CTR 0x00000000 read-only 0x001c FIFO stream data\n Streamed data is buffered here, for retrieval by the system DMA.\n This FIFO can also be accessed via the XIP_AUX slave, to avoid exposing\n the DMA to bus stalls caused by other XIP traffic. STREAM_FIFO 0x00000000 32 1 0 0x0100 registers 0x18000000 DW_apb_ssi has the following features:\n * APB interface – Allows for easy integration into a DesignWare Synthesizable Components for AMBA 2 implementation.\n * APB3 and APB4 protocol support.\n * Scalable APB data bus width – Supports APB data bus widths of 8, 16, and 32 bits.\n * Serial-master or serial-slave operation – Enables serial communication with serial-master or serial-slave peripheral devices.\n * Programmable Dual/Quad/Octal SPI support in Master Mode.\n * Dual Data Rate (DDR) and Read Data Strobe (RDS) Support - Enables the DW_apb_ssi master to perform operations with the device in DDR and RDS modes when working in Dual/Quad/Octal mode of operation.\n * Data Mask Support - Enables the DW_apb_ssi to selectively update the bytes in the device. This feature is applicable only in enhanced SPI modes.\n * eXecute-In-Place (XIP) support - Enables the DW_apb_ssi master to behave as a memory mapped I/O and fetches the data from the device based on the APB read request. This feature is applicable only in enhanced SPI modes.\n * DMA Controller Interface – Enables the DW_apb_ssi to interface to a DMA controller over the bus using a handshaking interface for transfer requests.\n * Independent masking of interrupts – Master collision, transmit FIFO overflow, transmit FIFO empty, receive FIFO full, receive FIFO underflow, and receive FIFO overflow interrupts can all be masked independently.\n * Multi-master contention detection – Informs the processor of multiple serial-master accesses on the serial bus.\n * Bypass of meta-stability flip-flops for synchronous clocks – When the APB clock (pclk) and the DW_apb_ssi serial clock (ssi_clk) are synchronous, meta-stable flip-flops are not used when transferring control signals across these clock domains.\n * Programmable delay on the sample time of the received serial data bit (rxd); enables programmable control of routing delays resulting in higher serial data-bit rates.\n * Programmable features:\n - Serial interface operation – Choice of Motorola SPI, Texas Instruments Synchronous Serial Protocol or National Semiconductor Microwire.\n - Clock bit-rate – Dynamic control of the serial bit rate of the data transfer; used in only serial-master mode of operation.\n - Data Item size (4 to 32 bits) – Item size of each data transfer under the control of the programmer.\n * Configured features:\n - FIFO depth – 16 words deep. The FIFO width is fixed at 32 bits.\n - 1 slave select output.\n - Hardware slave-select – Dedicated hardware slave-select line.\n - Combined interrupt line - one combined interrupt line from the DW_apb_ssi to the interrupt controller.\n - Interrupt polarity – active high interrupt lines.\n - Serial clock polarity – low serial-clock polarity directly after reset.\n - Serial clock phase – capture on first edge of serial-clock directly after reset. XIP_SSI 0x0000 Control register 0 read-write [24:24] Slave select toggle enable SSTE read-write [22:21] SPI frame format Standard 1-bit SPI frame format; 1 bit per SCK, full-duplex STD 0 Dual-SPI frame format; two bits per SCK, half-duplex DUAL 1 Quad-SPI frame format; four bits per SCK, half-duplex QUAD 2 SPI_FRF read-write [20:16] Data frame size in 32b transfer mode\n Value of n -> n+1 clocks per frame. DFS_32 read-write [15:12] Control frame size\n Value of n -> n+1 clocks per frame. CFS read-write [11:11] Shift register loop (test mode) SRL read-write [10:10] Slave output enable SLV_OE read-write [9:8] Transfer mode Both transmit and receive TX_AND_RX 0 Transmit only (not for FRF == 0, standard SPI mode) TX_ONLY 1 Receive only (not for FRF == 0, standard SPI mode) RX_ONLY 2 EEPROM read mode (TX then RX; RX starts after control data TX'd) EEPROM_READ 3 TMOD read-write [7:7] Serial clock polarity SCPOL read-write [6:6] Serial clock phase SCPH read-write [5:4] Frame format FRF read-write [3:0] Data frame size DFS CTRLR0 0x00000000 0x0004 Master Control register 1 read-write [15:0] Number of data frames NDF CTRLR1 0x00000000 0x0008 SSI Enable read-write [0:0] SSI enable SSI_EN SSIENR 0x00000000 0x000c Microwire Control read-write [2:2] Microwire handshaking MHS read-write [1:1] Microwire control MDD read-write [0:0] Microwire transfer mode MWMOD MWCR 0x00000000 0x0010 Slave enable read-write [0:0] For each bit:\n 0 -> slave not selected\n 1 -> slave selected SER SER 0x00000000 0x0014 Baud rate read-write [15:0] SSI clock divider SCKDV BAUDR 0x00000000 0x0018 TX FIFO threshold level read-write [7:0] Transmit FIFO threshold TFT TXFTLR 0x00000000 0x001c RX FIFO threshold level read-write [7:0] Receive FIFO threshold RFT RXFTLR 0x00000000 0x0020 TX FIFO level read-only [7:0] Transmit FIFO level TFTFL TXFLR 0x00000000 0x0024 RX FIFO level read-only [7:0] Receive FIFO level RXTFL RXFLR 0x00000000 0x0028 Status register read-only [6:6] Data collision error DCOL read-only [5:5] Transmission error TXE read-only [4:4] Receive FIFO full RFF read-only [3:3] Receive FIFO not empty RFNE read-only [2:2] Transmit FIFO empty TFE read-only [1:1] Transmit FIFO not full TFNF read-only [0:0] SSI busy flag BUSY SR 0x00000000 0x002c Interrupt mask read-write [5:5] Multi-master contention interrupt mask MSTIM read-write [4:4] Receive FIFO full interrupt mask RXFIM read-write [3:3] Receive FIFO overflow interrupt mask RXOIM read-write [2:2] Receive FIFO underflow interrupt mask RXUIM read-write [1:1] Transmit FIFO overflow interrupt mask TXOIM read-write [0:0] Transmit FIFO empty interrupt mask TXEIM IMR 0x00000000 0x0030 Interrupt status read-only [5:5] Multi-master contention interrupt status MSTIS read-only [4:4] Receive FIFO full interrupt status RXFIS read-only [3:3] Receive FIFO overflow interrupt status RXOIS read-only [2:2] Receive FIFO underflow interrupt status RXUIS read-only [1:1] Transmit FIFO overflow interrupt status TXOIS read-only [0:0] Transmit FIFO empty interrupt status TXEIS ISR 0x00000000 0x0034 Raw interrupt status read-only [5:5] Multi-master contention raw interrupt status MSTIR read-only [4:4] Receive FIFO full raw interrupt status RXFIR read-only [3:3] Receive FIFO overflow raw interrupt status RXOIR read-only [2:2] Receive FIFO underflow raw interrupt status RXUIR read-only [1:1] Transmit FIFO overflow raw interrupt status TXOIR read-only [0:0] Transmit FIFO empty raw interrupt status TXEIR RISR 0x00000000 0x0038 TX FIFO overflow interrupt clear read-only [0:0] Clear-on-read transmit FIFO overflow interrupt TXOICR TXOICR 0x00000000 0x003c RX FIFO overflow interrupt clear read-only [0:0] Clear-on-read receive FIFO overflow interrupt RXOICR RXOICR 0x00000000 0x0040 RX FIFO underflow interrupt clear read-only [0:0] Clear-on-read receive FIFO underflow interrupt RXUICR RXUICR 0x00000000 0x0044 Multi-master interrupt clear read-only [0:0] Clear-on-read multi-master contention interrupt MSTICR MSTICR 0x00000000 0x0048 Interrupt clear read-only [0:0] Clear-on-read all active interrupts ICR ICR 0x00000000 0x004c DMA control read-write [1:1] Transmit DMA enable TDMAE read-write [0:0] Receive DMA enable RDMAE DMACR 0x00000000 0x0050 DMA TX data level read-write [7:0] Transmit data watermark level DMATDL DMATDLR 0x00000000 0x0054 DMA RX data level read-write [7:0] Receive data watermark level (DMARDLR+1) DMARDL DMARDLR 0x00000000 0x0058 Identification register read-only [31:0] Peripheral dentification code IDCODE IDR 0x51535049 0x005c Version ID read-only [31:0] SNPS component version (format X.YY) SSI_COMP_VERSION SSI_VERSION_ID 0x3430312a 0x0060 Data Register 0 (of 36) read-write [31:0] First data register of 36 DR DR0 0x00000000 0x00f0 RX sample delay read-write [7:0] RXD sample delay (in SCLK cycles) RSD RX_SAMPLE_DLY 0x00000000 0x00f4 SPI control read-write [31:24] SPI Command to send in XIP mode (INST_L = 8-bit) or to append to Address (INST_L = 0-bit) XIP_CMD read-write [18:18] Read data strobe enable SPI_RXDS_EN read-write [17:17] Instruction DDR transfer enable INST_DDR_EN read-write [16:16] SPI DDR transfer enable SPI_DDR_EN read-write [15:11] Wait cycles between control frame transmit and data reception (in SCLK cycles) WAIT_CYCLES read-write [9:8] Instruction length (0/4/8/16b) No instruction NONE 0 4-bit instruction 4B 1 8-bit instruction 8B 2 16-bit instruction 16B 3 INST_L read-write [5:2] Address length (0b-60b in 4b increments) ADDR_L read-write [1:0] Address and instruction transfer format Command and address both in standard SPI frame format 1C1A 0 Command in standard SPI format, address in format specified by FRF 1C2A 1 Command and address both in format specified by FRF (e.g. Dual-SPI) 2C2A 2 TRANS_TYPE SPI_CTRLR0 0x03000000 0x00f8 TX drive edge read-write [7:0] TXD drive edge TDE TXD_DRIVE_EDGE 0x00000000 32 1 0 0x1000 registers 0x40000000 SYSINFO 0x0000 JEDEC JEP-106 compliant chip identifier. read-only [31:28] REVISION read-only [27:12] PART read-only [11:0] MANUFACTURER CHIP_ID 0x00000000 0x0004 Platform register. Allows software to know what environment it is running in. read-only [1:1] ASIC read-only [0:0] FPGA PLATFORM 0x00000000 read-only 0x0040 Git hash of the chip source. Used to identify chip version. GITREF_RP2040 0x00000000 32 1 0 0x1000 registers 0x40004000 Register block for various chip control signals SYSCFG read-write 0x0000 Processor core 0 NMI source mask\n Set a bit high to enable NMI from that IRQ PROC0_NMI_MASK 0x00000000 read-write 0x0004 Processor core 1 NMI source mask\n Set a bit high to enable NMI from that IRQ PROC1_NMI_MASK 0x00000000 0x0008 Configuration for processors read-write [31:28] Configure proc1 DAP instance ID.\n Recommend that this is NOT changed until you require debug access in multi-chip environment\n WARNING: do not set to 15 as this is reserved for RescueDP PROC1_DAP_INSTID read-write [27:24] Configure proc0 DAP instance ID.\n Recommend that this is NOT changed until you require debug access in multi-chip environment\n WARNING: do not set to 15 as this is reserved for RescueDP PROC0_DAP_INSTID read-only [1:1] Indication that proc1 has halted PROC1_HALTED read-only [0:0] Indication that proc0 has halted PROC0_HALTED PROC_CONFIG 0x10000000 0x000c For each bit, if 1, bypass the input synchronizer between that GPIO\n and the GPIO input register in the SIO. The input synchronizers should\n generally be unbypassed, to avoid injecting metastabilities into processors.\n If you're feeling brave, you can bypass to save two cycles of input\n latency. This register applies to GPIO 0...29. read-write [29:0] PROC_IN_SYNC_BYPASS PROC_IN_SYNC_BYPASS 0x00000000 0x0010 For each bit, if 1, bypass the input synchronizer between that GPIO\n and the GPIO input register in the SIO. The input synchronizers should\n generally be unbypassed, to avoid injecting metastabilities into processors.\n If you're feeling brave, you can bypass to save two cycles of input\n latency. This register applies to GPIO 30...35 (the QSPI IOs). read-write [5:0] PROC_IN_SYNC_BYPASS_HI PROC_IN_SYNC_BYPASS_HI 0x00000000 0x0014 Directly control the SWD debug port of either processor read-write [7:7] Attach processor 1 debug port to syscfg controls, and disconnect it from external SWD pads. PROC1_ATTACH read-write [6:6] Directly drive processor 1 SWCLK, if PROC1_ATTACH is set PROC1_SWCLK read-write [5:5] Directly drive processor 1 SWDIO input, if PROC1_ATTACH is set PROC1_SWDI read-only [4:4] Observe the value of processor 1 SWDIO output. PROC1_SWDO read-write [3:3] Attach processor 0 debug port to syscfg controls, and disconnect it from external SWD pads. PROC0_ATTACH read-write [2:2] Directly drive processor 0 SWCLK, if PROC0_ATTACH is set PROC0_SWCLK read-write [1:1] Directly drive processor 0 SWDIO input, if PROC0_ATTACH is set PROC0_SWDI read-only [0:0] Observe the value of processor 0 SWDIO output. PROC0_SWDO DBGFORCE 0x00000066 0x0018 Control power downs to memories. Set high to power down memories.\n Use with extreme caution read-write [7:7] ROM read-write [6:6] USB read-write [5:5] SRAM5 read-write [4:4] SRAM4 read-write [3:3] SRAM3 read-write [2:2] SRAM2 read-write [1:1] SRAM1 read-write [0:0] SRAM0 MEMPOWERDOWN 0x00000000 32 1 0 0x1000 registers 0x40008000 CLOCKS_IRQ 17 CLOCKS 0x0000 Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [12:12] Enables duty cycle correction for odd divisors DC50 read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [8:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_sys 0 clksrc_gpin0 1 clksrc_gpin1 2 clksrc_pll_usb 3 rosc_clksrc 4 xosc_clksrc 5 clk_sys 6 clk_usb 7 clk_adc 8 clk_rtc 9 clk_ref 10 AUXSRC CLK_GPOUT0_CTRL 0x00000000 0x0004 Clock divisor, can be changed on-the-fly read-write [31:8] Integer component of the divisor, 0 -> divide by 2^16 INT read-write [7:0] Fractional component of the divisor FRAC CLK_GPOUT0_DIV 0x00000100 read-only 0x0008 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_GPOUT0_SELECTED 0x00000001 0x000c Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [12:12] Enables duty cycle correction for odd divisors DC50 read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [8:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_sys 0 clksrc_gpin0 1 clksrc_gpin1 2 clksrc_pll_usb 3 rosc_clksrc 4 xosc_clksrc 5 clk_sys 6 clk_usb 7 clk_adc 8 clk_rtc 9 clk_ref 10 AUXSRC CLK_GPOUT1_CTRL 0x00000000 0x0010 Clock divisor, can be changed on-the-fly read-write [31:8] Integer component of the divisor, 0 -> divide by 2^16 INT read-write [7:0] Fractional component of the divisor FRAC CLK_GPOUT1_DIV 0x00000100 read-only 0x0014 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_GPOUT1_SELECTED 0x00000001 0x0018 Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [12:12] Enables duty cycle correction for odd divisors DC50 read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [8:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_sys 0 clksrc_gpin0 1 clksrc_gpin1 2 clksrc_pll_usb 3 rosc_clksrc_ph 4 xosc_clksrc 5 clk_sys 6 clk_usb 7 clk_adc 8 clk_rtc 9 clk_ref 10 AUXSRC CLK_GPOUT2_CTRL 0x00000000 0x001c Clock divisor, can be changed on-the-fly read-write [31:8] Integer component of the divisor, 0 -> divide by 2^16 INT read-write [7:0] Fractional component of the divisor FRAC CLK_GPOUT2_DIV 0x00000100 read-only 0x0020 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_GPOUT2_SELECTED 0x00000001 0x0024 Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [12:12] Enables duty cycle correction for odd divisors DC50 read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [8:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_sys 0 clksrc_gpin0 1 clksrc_gpin1 2 clksrc_pll_usb 3 rosc_clksrc_ph 4 xosc_clksrc 5 clk_sys 6 clk_usb 7 clk_adc 8 clk_rtc 9 clk_ref 10 AUXSRC CLK_GPOUT3_CTRL 0x00000000 0x0028 Clock divisor, can be changed on-the-fly read-write [31:8] Integer component of the divisor, 0 -> divide by 2^16 INT read-write [7:0] Fractional component of the divisor FRAC CLK_GPOUT3_DIV 0x00000100 read-only 0x002c Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_GPOUT3_SELECTED 0x00000001 0x0030 Clock control, can be changed on-the-fly (except for auxsrc) read-write [6:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_usb 0 clksrc_gpin0 1 clksrc_gpin1 2 AUXSRC read-write [1:0] Selects the clock source glitchlessly, can be changed on-the-fly rosc_clksrc_ph 0 clksrc_clk_ref_aux 1 xosc_clksrc 2 SRC CLK_REF_CTRL 0x00000000 0x0034 Clock divisor, can be changed on-the-fly read-write [9:8] Integer component of the divisor, 0 -> divide by 2^16 INT CLK_REF_DIV 0x00000100 read-only 0x0038 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n The glitchless multiplexer does not switch instantaneously (to avoid glitches), so software should poll this register to wait for the switch to complete. This register contains one decoded bit for each of the clock sources enumerated in the CTRL SRC field. At most one of these bits will be set at any time, indicating that clock is currently present at the output of the glitchless mux. Whilst switching is in progress, this register may briefly show all-0s. CLK_REF_SELECTED 0x00000001 0x003c Clock control, can be changed on-the-fly (except for auxsrc) read-write [7:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_sys 0 clksrc_pll_usb 1 rosc_clksrc 2 xosc_clksrc 3 clksrc_gpin0 4 clksrc_gpin1 5 AUXSRC read-write [0:0] Selects the clock source glitchlessly, can be changed on-the-fly clk_ref 0 clksrc_clk_sys_aux 1 SRC CLK_SYS_CTRL 0x00000000 0x0040 Clock divisor, can be changed on-the-fly read-write [31:8] Integer component of the divisor, 0 -> divide by 2^16 INT read-write [7:0] Fractional component of the divisor FRAC CLK_SYS_DIV 0x00000100 read-only 0x0044 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n The glitchless multiplexer does not switch instantaneously (to avoid glitches), so software should poll this register to wait for the switch to complete. This register contains one decoded bit for each of the clock sources enumerated in the CTRL SRC field. At most one of these bits will be set at any time, indicating that clock is currently present at the output of the glitchless mux. Whilst switching is in progress, this register may briefly show all-0s. CLK_SYS_SELECTED 0x00000001 0x0048 Clock control, can be changed on-the-fly (except for auxsrc) read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [7:5] Selects the auxiliary clock source, will glitch when switching clk_sys 0 clksrc_pll_sys 1 clksrc_pll_usb 2 rosc_clksrc_ph 3 xosc_clksrc 4 clksrc_gpin0 5 clksrc_gpin1 6 AUXSRC CLK_PERI_CTRL 0x00000000 read-only 0x0050 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_PERI_SELECTED 0x00000001 0x0054 Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [7:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_usb 0 clksrc_pll_sys 1 rosc_clksrc_ph 2 xosc_clksrc 3 clksrc_gpin0 4 clksrc_gpin1 5 AUXSRC CLK_USB_CTRL 0x00000000 0x0058 Clock divisor, can be changed on-the-fly read-write [9:8] Integer component of the divisor, 0 -> divide by 2^16 INT CLK_USB_DIV 0x00000100 read-only 0x005c Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_USB_SELECTED 0x00000001 0x0060 Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [7:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_usb 0 clksrc_pll_sys 1 rosc_clksrc_ph 2 xosc_clksrc 3 clksrc_gpin0 4 clksrc_gpin1 5 AUXSRC CLK_ADC_CTRL 0x00000000 0x0064 Clock divisor, can be changed on-the-fly read-write [9:8] Integer component of the divisor, 0 -> divide by 2^16 INT CLK_ADC_DIV 0x00000100 read-only 0x0068 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_ADC_SELECTED 0x00000001 0x006c Clock control, can be changed on-the-fly (except for auxsrc) read-write [20:20] An edge on this signal shifts the phase of the output by 1 cycle of the input clock\n This can be done at any time NUDGE read-write [17:16] This delays the enable signal by up to 3 cycles of the input clock\n This must be set before the clock is enabled to have any effect PHASE read-write [11:11] Starts and stops the clock generator cleanly ENABLE read-write [10:10] Asynchronously kills the clock generator KILL read-write [7:5] Selects the auxiliary clock source, will glitch when switching clksrc_pll_usb 0 clksrc_pll_sys 1 rosc_clksrc_ph 2 xosc_clksrc 3 clksrc_gpin0 4 clksrc_gpin1 5 AUXSRC CLK_RTC_CTRL 0x00000000 0x0070 Clock divisor, can be changed on-the-fly read-write [31:8] Integer component of the divisor, 0 -> divide by 2^16 INT read-write [7:0] Fractional component of the divisor FRAC CLK_RTC_DIV 0x00000100 read-only 0x0074 Indicates which SRC is currently selected by the glitchless mux (one-hot).\n This slice does not have a glitchless mux (only the AUX_SRC field is present, not SRC) so this register is hardwired to 0x1. CLK_RTC_SELECTED 0x00000001 0x0078 read-write [16:16] For clearing the resus after the fault that triggered it has been corrected CLEAR read-write [12:12] Force a resus, for test purposes only FRCE read-write [8:8] Enable resus ENABLE read-write [7:0] This is expressed as a number of clk_ref cycles\n and must be >= 2x clk_ref_freq/min_clk_tst_freq TIMEOUT CLK_SYS_RESUS_CTRL 0x000000ff 0x007c read-only [0:0] Clock has been resuscitated, correct the error then send ctrl_clear=1 RESUSSED CLK_SYS_RESUS_STATUS 0x00000000 0x0080 Reference clock frequency in kHz read-write [19:0] FC0_REF_KHZ FC0_REF_KHZ 0x00000000 0x0084 Minimum pass frequency in kHz. This is optional. Set to 0 if you are not using the pass/fail flags read-write [24:0] FC0_MIN_KHZ FC0_MIN_KHZ 0x00000000 0x0088 Maximum pass frequency in kHz. This is optional. Set to 0x1ffffff if you are not using the pass/fail flags read-write [24:0] FC0_MAX_KHZ FC0_MAX_KHZ 0x01ffffff 0x008c Delays the start of frequency counting to allow the mux to settle\n Delay is measured in multiples of the reference clock period read-write [2:0] FC0_DELAY FC0_DELAY 0x00000001 0x0090 The test interval is 0.98us * 2**interval, but let's call it 1us * 2**interval\n The default gives a test interval of 250us read-write [3:0] FC0_INTERVAL FC0_INTERVAL 0x00000008 0x0094 Clock sent to frequency counter, set to 0 when not required\n Writing to this register initiates the frequency count read-write [7:0] NULL 0 pll_sys_clksrc_primary 1 pll_usb_clksrc_primary 2 rosc_clksrc 3 rosc_clksrc_ph 4 xosc_clksrc 5 clksrc_gpin0 6 clksrc_gpin1 7 clk_ref 8 clk_sys 9 clk_peri 10 clk_usb 11 clk_adc 12 clk_rtc 13 FC0_SRC FC0_SRC 0x00000000 0x0098 Frequency counter status read-only [28:28] Test clock stopped during test DIED read-only [24:24] Test clock faster than expected, only valid when status_done=1 FAST read-only [20:20] Test clock slower than expected, only valid when status_done=1 SLOW read-only [16:16] Test failed FAIL read-only [12:12] Waiting for test clock to start WAITING read-only [8:8] Test running RUNNING read-only [4:4] Test complete DONE read-only [0:0] Test passed PASS FC0_STATUS 0x00000000 0x009c Result of frequency measurement, only valid when status_done=1 read-only [29:5] KHZ read-only [4:0] FRAC FC0_RESULT 0x00000000 0x00a0 enable clock in wake mode read-write [31:31] clk_sys_sram3 read-write [30:30] clk_sys_sram2 read-write [29:29] clk_sys_sram1 read-write [28:28] clk_sys_sram0 read-write [27:27] clk_sys_spi1 read-write [26:26] clk_peri_spi1 read-write [25:25] clk_sys_spi0 read-write [24:24] clk_peri_spi0 read-write [23:23] clk_sys_sio read-write [22:22] clk_sys_rtc read-write [21:21] clk_rtc_rtc read-write [20:20] clk_sys_rosc read-write [19:19] clk_sys_rom read-write [18:18] clk_sys_resets read-write [17:17] clk_sys_pwm read-write [16:16] clk_sys_psm read-write [15:15] clk_sys_pll_usb read-write [14:14] clk_sys_pll_sys read-write [13:13] clk_sys_pio1 read-write [12:12] clk_sys_pio0 read-write [11:11] clk_sys_pads read-write [10:10] clk_sys_vreg_and_chip_reset read-write [9:9] clk_sys_jtag read-write [8:8] clk_sys_io read-write [7:7] clk_sys_i2c1 read-write [6:6] clk_sys_i2c0 read-write [5:5] clk_sys_dma read-write [4:4] clk_sys_busfabric read-write [3:3] clk_sys_busctrl read-write [2:2] clk_sys_adc read-write [1:1] clk_adc_adc read-write [0:0] clk_sys_clocks WAKE_EN0 0xffffffff 0x00a4 enable clock in wake mode read-write [14:14] clk_sys_xosc read-write [13:13] clk_sys_xip read-write [12:12] clk_sys_watchdog read-write [11:11] clk_usb_usbctrl read-write [10:10] clk_sys_usbctrl read-write [9:9] clk_sys_uart1 read-write [8:8] clk_peri_uart1 read-write [7:7] clk_sys_uart0 read-write [6:6] clk_peri_uart0 read-write [5:5] clk_sys_timer read-write [4:4] clk_sys_tbman read-write [3:3] clk_sys_sysinfo read-write [2:2] clk_sys_syscfg read-write [1:1] clk_sys_sram5 read-write [0:0] clk_sys_sram4 WAKE_EN1 0x00007fff 0x00a8 enable clock in sleep mode read-write [31:31] clk_sys_sram3 read-write [30:30] clk_sys_sram2 read-write [29:29] clk_sys_sram1 read-write [28:28] clk_sys_sram0 read-write [27:27] clk_sys_spi1 read-write [26:26] clk_peri_spi1 read-write [25:25] clk_sys_spi0 read-write [24:24] clk_peri_spi0 read-write [23:23] clk_sys_sio read-write [22:22] clk_sys_rtc read-write [21:21] clk_rtc_rtc read-write [20:20] clk_sys_rosc read-write [19:19] clk_sys_rom read-write [18:18] clk_sys_resets read-write [17:17] clk_sys_pwm read-write [16:16] clk_sys_psm read-write [15:15] clk_sys_pll_usb read-write [14:14] clk_sys_pll_sys read-write [13:13] clk_sys_pio1 read-write [12:12] clk_sys_pio0 read-write [11:11] clk_sys_pads read-write [10:10] clk_sys_vreg_and_chip_reset read-write [9:9] clk_sys_jtag read-write [8:8] clk_sys_io read-write [7:7] clk_sys_i2c1 read-write [6:6] clk_sys_i2c0 read-write [5:5] clk_sys_dma read-write [4:4] clk_sys_busfabric read-write [3:3] clk_sys_busctrl read-write [2:2] clk_sys_adc read-write [1:1] clk_adc_adc read-write [0:0] clk_sys_clocks SLEEP_EN0 0xffffffff 0x00ac enable clock in sleep mode read-write [14:14] clk_sys_xosc read-write [13:13] clk_sys_xip read-write [12:12] clk_sys_watchdog read-write [11:11] clk_usb_usbctrl read-write [10:10] clk_sys_usbctrl read-write [9:9] clk_sys_uart1 read-write [8:8] clk_peri_uart1 read-write [7:7] clk_sys_uart0 read-write [6:6] clk_peri_uart0 read-write [5:5] clk_sys_timer read-write [4:4] clk_sys_tbman read-write [3:3] clk_sys_sysinfo read-write [2:2] clk_sys_syscfg read-write [1:1] clk_sys_sram5 read-write [0:0] clk_sys_sram4 SLEEP_EN1 0x00007fff 0x00b0 indicates the state of the clock enable read-only [31:31] clk_sys_sram3 read-only [30:30] clk_sys_sram2 read-only [29:29] clk_sys_sram1 read-only [28:28] clk_sys_sram0 read-only [27:27] clk_sys_spi1 read-only [26:26] clk_peri_spi1 read-only [25:25] clk_sys_spi0 read-only [24:24] clk_peri_spi0 read-only [23:23] clk_sys_sio read-only [22:22] clk_sys_rtc read-only [21:21] clk_rtc_rtc read-only [20:20] clk_sys_rosc read-only [19:19] clk_sys_rom read-only [18:18] clk_sys_resets read-only [17:17] clk_sys_pwm read-only [16:16] clk_sys_psm read-only [15:15] clk_sys_pll_usb read-only [14:14] clk_sys_pll_sys read-only [13:13] clk_sys_pio1 read-only [12:12] clk_sys_pio0 read-only [11:11] clk_sys_pads read-only [10:10] clk_sys_vreg_and_chip_reset read-only [9:9] clk_sys_jtag read-only [8:8] clk_sys_io read-only [7:7] clk_sys_i2c1 read-only [6:6] clk_sys_i2c0 read-only [5:5] clk_sys_dma read-only [4:4] clk_sys_busfabric read-only [3:3] clk_sys_busctrl read-only [2:2] clk_sys_adc read-only [1:1] clk_adc_adc read-only [0:0] clk_sys_clocks ENABLED0 0x00000000 0x00b4 indicates the state of the clock enable read-only [14:14] clk_sys_xosc read-only [13:13] clk_sys_xip read-only [12:12] clk_sys_watchdog read-only [11:11] clk_usb_usbctrl read-only [10:10] clk_sys_usbctrl read-only [9:9] clk_sys_uart1 read-only [8:8] clk_peri_uart1 read-only [7:7] clk_sys_uart0 read-only [6:6] clk_peri_uart0 read-only [5:5] clk_sys_timer read-only [4:4] clk_sys_tbman read-only [3:3] clk_sys_sysinfo read-only [2:2] clk_sys_syscfg read-only [1:1] clk_sys_sram5 read-only [0:0] clk_sys_sram4 ENABLED1 0x00000000 0x00b8 Raw Interrupts read-only [0:0] CLK_SYS_RESUS INTR 0x00000000 0x00bc Interrupt Enable read-write [0:0] CLK_SYS_RESUS INTE 0x00000000 0x00c0 Interrupt Force read-write [0:0] CLK_SYS_RESUS INTF 0x00000000 0x00c4 Interrupt status after masking & forcing read-only [0:0] CLK_SYS_RESUS INTS 0x00000000 32 1 0 0x1000 registers 0x4000c000 RESETS 0x0000 Reset control. If a bit is set it means the peripheral is in reset. 0 means the peripheral's reset is deasserted. read-write [24:24] usbctrl read-write [23:23] uart1 read-write [22:22] uart0 read-write [21:21] timer read-write [20:20] tbman read-write [19:19] sysinfo read-write [18:18] syscfg read-write [17:17] spi1 read-write [16:16] spi0 read-write [15:15] rtc read-write [14:14] pwm read-write [13:13] pll_usb read-write [12:12] pll_sys read-write [11:11] pio1 read-write [10:10] pio0 read-write [9:9] pads_qspi read-write [8:8] pads_bank0 read-write [7:7] jtag read-write [6:6] io_qspi read-write [5:5] io_bank0 read-write [4:4] i2c1 read-write [3:3] i2c0 read-write [2:2] dma read-write [1:1] busctrl read-write [0:0] adc RESET 0x01ffffff 0x0004 Watchdog select. If a bit is set then the watchdog will reset this peripheral when the watchdog fires. read-write [24:24] usbctrl read-write [23:23] uart1 read-write [22:22] uart0 read-write [21:21] timer read-write [20:20] tbman read-write [19:19] sysinfo read-write [18:18] syscfg read-write [17:17] spi1 read-write [16:16] spi0 read-write [15:15] rtc read-write [14:14] pwm read-write [13:13] pll_usb read-write [12:12] pll_sys read-write [11:11] pio1 read-write [10:10] pio0 read-write [9:9] pads_qspi read-write [8:8] pads_bank0 read-write [7:7] jtag read-write [6:6] io_qspi read-write [5:5] io_bank0 read-write [4:4] i2c1 read-write [3:3] i2c0 read-write [2:2] dma read-write [1:1] busctrl read-write [0:0] adc WDSEL 0x00000000 0x0008 Reset done. If a bit is set then a reset done signal has been returned by the peripheral. This indicates that the peripheral's registers are ready to be accessed. read-only [24:24] usbctrl read-only [23:23] uart1 read-only [22:22] uart0 read-only [21:21] timer read-only [20:20] tbman read-only [19:19] sysinfo read-only [18:18] syscfg read-only [17:17] spi1 read-only [16:16] spi0 read-only [15:15] rtc read-only [14:14] pwm read-only [13:13] pll_usb read-only [12:12] pll_sys read-only [11:11] pio1 read-only [10:10] pio0 read-only [9:9] pads_qspi read-only [8:8] pads_bank0 read-only [7:7] jtag read-only [6:6] io_qspi read-only [5:5] io_bank0 read-only [4:4] i2c1 read-only [3:3] i2c0 read-only [2:2] dma read-only [1:1] busctrl read-only [0:0] adc RESET_DONE 0x00000000 32 1 0 0x1000 registers 0x40010000 PSM 0x0000 Force block out of reset (i.e. power it on) read-write [16:16] proc1 read-write [15:15] proc0 read-write [14:14] sio read-write [13:13] vreg_and_chip_reset read-write [12:12] xip read-write [11:11] sram5 read-write [10:10] sram4 read-write [9:9] sram3 read-write [8:8] sram2 read-write [7:7] sram1 read-write [6:6] sram0 read-write [5:5] rom read-write [4:4] busfabric read-write [3:3] resets read-write [2:2] clocks read-write [1:1] xosc read-write [0:0] rosc FRCE_ON 0x00000000 0x0004 Force into reset (i.e. power it off) read-write [16:16] proc1 read-write [15:15] proc0 read-write [14:14] sio read-write [13:13] vreg_and_chip_reset read-write [12:12] xip read-write [11:11] sram5 read-write [10:10] sram4 read-write [9:9] sram3 read-write [8:8] sram2 read-write [7:7] sram1 read-write [6:6] sram0 read-write [5:5] rom read-write [4:4] busfabric read-write [3:3] resets read-write [2:2] clocks read-write [1:1] xosc read-write [0:0] rosc FRCE_OFF 0x00000000 0x0008 Set to 1 if this peripheral should be reset when the watchdog fires. read-write [16:16] proc1 read-write [15:15] proc0 read-write [14:14] sio read-write [13:13] vreg_and_chip_reset read-write [12:12] xip read-write [11:11] sram5 read-write [10:10] sram4 read-write [9:9] sram3 read-write [8:8] sram2 read-write [7:7] sram1 read-write [6:6] sram0 read-write [5:5] rom read-write [4:4] busfabric read-write [3:3] resets read-write [2:2] clocks read-write [1:1] xosc read-write [0:0] rosc WDSEL 0x00000000 0x000c Indicates the peripheral's registers are ready to access. read-only [16:16] proc1 read-only [15:15] proc0 read-only [14:14] sio read-only [13:13] vreg_and_chip_reset read-only [12:12] xip read-only [11:11] sram5 read-only [10:10] sram4 read-only [9:9] sram3 read-only [8:8] sram2 read-only [7:7] sram1 read-only [6:6] sram0 read-only [5:5] rom read-only [4:4] busfabric read-only [3:3] resets read-only [2:2] clocks read-only [1:1] xosc read-only [0:0] rosc DONE 0x00000000 32 1 0 0x1000 registers 0x40014000 IO_IRQ_BANK0 13 IO_BANK0 0x0000 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO0_STATUS 0x00000000 0x0004 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL jtag_tck 0 spi0_rx 1 uart0_tx 2 i2c0_sda 3 pwm_a_0 4 sio_0 5 pio0_0 6 pio1_0 7 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO0_CTRL 0x0000001f 0x0008 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO1_STATUS 0x00000000 0x000c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL jtag_tms 0 spi0_ss_n 1 uart0_rx 2 i2c0_scl 3 pwm_b_0 4 sio_1 5 pio0_1 6 pio1_1 7 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO1_CTRL 0x0000001f 0x0010 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO2_STATUS 0x00000000 0x0014 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL jtag_tdi 0 spi0_sclk 1 uart0_cts 2 i2c1_sda 3 pwm_a_1 4 sio_2 5 pio0_2 6 pio1_2 7 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO2_CTRL 0x0000001f 0x0018 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO3_STATUS 0x00000000 0x001c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL jtag_tdo 0 spi0_tx 1 uart0_rts 2 i2c1_scl 3 pwm_b_1 4 sio_3 5 pio0_3 6 pio1_3 7 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO3_CTRL 0x0000001f 0x0020 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO4_STATUS 0x00000000 0x0024 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_rx 1 uart1_tx 2 i2c0_sda 3 pwm_a_2 4 sio_4 5 pio0_4 6 pio1_4 7 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO4_CTRL 0x0000001f 0x0028 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO5_STATUS 0x00000000 0x002c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_ss_n 1 uart1_rx 2 i2c0_scl 3 pwm_b_2 4 sio_5 5 pio0_5 6 pio1_5 7 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO5_CTRL 0x0000001f 0x0030 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO6_STATUS 0x00000000 0x0034 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_sclk 1 uart1_cts 2 i2c1_sda 3 pwm_a_3 4 sio_6 5 pio0_6 6 pio1_6 7 usb_muxing_extphy_softcon 8 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO6_CTRL 0x0000001f 0x0038 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO7_STATUS 0x00000000 0x003c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_tx 1 uart1_rts 2 i2c1_scl 3 pwm_b_3 4 sio_7 5 pio0_7 6 pio1_7 7 usb_muxing_extphy_oe_n 8 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO7_CTRL 0x0000001f 0x0040 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO8_STATUS 0x00000000 0x0044 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_rx 1 uart1_tx 2 i2c0_sda 3 pwm_a_4 4 sio_8 5 pio0_8 6 pio1_8 7 usb_muxing_extphy_rcv 8 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO8_CTRL 0x0000001f 0x0048 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO9_STATUS 0x00000000 0x004c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_ss_n 1 uart1_rx 2 i2c0_scl 3 pwm_b_4 4 sio_9 5 pio0_9 6 pio1_9 7 usb_muxing_extphy_vp 8 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO9_CTRL 0x0000001f 0x0050 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO10_STATUS 0x00000000 0x0054 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_sclk 1 uart1_cts 2 i2c1_sda 3 pwm_a_5 4 sio_10 5 pio0_10 6 pio1_10 7 usb_muxing_extphy_vm 8 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO10_CTRL 0x0000001f 0x0058 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO11_STATUS 0x00000000 0x005c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_tx 1 uart1_rts 2 i2c1_scl 3 pwm_b_5 4 sio_11 5 pio0_11 6 pio1_11 7 usb_muxing_extphy_suspnd 8 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO11_CTRL 0x0000001f 0x0060 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO12_STATUS 0x00000000 0x0064 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_rx 1 uart0_tx 2 i2c0_sda 3 pwm_a_6 4 sio_12 5 pio0_12 6 pio1_12 7 usb_muxing_extphy_speed 8 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO12_CTRL 0x0000001f 0x0068 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO13_STATUS 0x00000000 0x006c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_ss_n 1 uart0_rx 2 i2c0_scl 3 pwm_b_6 4 sio_13 5 pio0_13 6 pio1_13 7 usb_muxing_extphy_vpo 8 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO13_CTRL 0x0000001f 0x0070 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO14_STATUS 0x00000000 0x0074 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_sclk 1 uart0_cts 2 i2c1_sda 3 pwm_a_7 4 sio_14 5 pio0_14 6 pio1_14 7 usb_muxing_extphy_vmo 8 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO14_CTRL 0x0000001f 0x0078 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO15_STATUS 0x00000000 0x007c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_tx 1 uart0_rts 2 i2c1_scl 3 pwm_b_7 4 sio_15 5 pio0_15 6 pio1_15 7 usb_muxing_digital_dp 8 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO15_CTRL 0x0000001f 0x0080 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO16_STATUS 0x00000000 0x0084 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_rx 1 uart0_tx 2 i2c0_sda 3 pwm_a_0 4 sio_16 5 pio0_16 6 pio1_16 7 usb_muxing_digital_dm 8 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO16_CTRL 0x0000001f 0x0088 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO17_STATUS 0x00000000 0x008c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_ss_n 1 uart0_rx 2 i2c0_scl 3 pwm_b_0 4 sio_17 5 pio0_17 6 pio1_17 7 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO17_CTRL 0x0000001f 0x0090 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO18_STATUS 0x00000000 0x0094 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_sclk 1 uart0_cts 2 i2c1_sda 3 pwm_a_1 4 sio_18 5 pio0_18 6 pio1_18 7 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO18_CTRL 0x0000001f 0x0098 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO19_STATUS 0x00000000 0x009c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_tx 1 uart0_rts 2 i2c1_scl 3 pwm_b_1 4 sio_19 5 pio0_19 6 pio1_19 7 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO19_CTRL 0x0000001f 0x00a0 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO20_STATUS 0x00000000 0x00a4 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_rx 1 uart1_tx 2 i2c0_sda 3 pwm_a_2 4 sio_20 5 pio0_20 6 pio1_20 7 clocks_gpin_0 8 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO20_CTRL 0x0000001f 0x00a8 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO21_STATUS 0x00000000 0x00ac GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_ss_n 1 uart1_rx 2 i2c0_scl 3 pwm_b_2 4 sio_21 5 pio0_21 6 pio1_21 7 clocks_gpout_0 8 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO21_CTRL 0x0000001f 0x00b0 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO22_STATUS 0x00000000 0x00b4 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_sclk 1 uart1_cts 2 i2c1_sda 3 pwm_a_3 4 sio_22 5 pio0_22 6 pio1_22 7 clocks_gpin_1 8 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO22_CTRL 0x0000001f 0x00b8 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO23_STATUS 0x00000000 0x00bc GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi0_tx 1 uart1_rts 2 i2c1_scl 3 pwm_b_3 4 sio_23 5 pio0_23 6 pio1_23 7 clocks_gpout_1 8 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO23_CTRL 0x0000001f 0x00c0 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO24_STATUS 0x00000000 0x00c4 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_rx 1 uart1_tx 2 i2c0_sda 3 pwm_a_4 4 sio_24 5 pio0_24 6 pio1_24 7 clocks_gpout_2 8 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO24_CTRL 0x0000001f 0x00c8 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO25_STATUS 0x00000000 0x00cc GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_ss_n 1 uart1_rx 2 i2c0_scl 3 pwm_b_4 4 sio_25 5 pio0_25 6 pio1_25 7 clocks_gpout_3 8 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO25_CTRL 0x0000001f 0x00d0 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO26_STATUS 0x00000000 0x00d4 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_sclk 1 uart1_cts 2 i2c1_sda 3 pwm_a_5 4 sio_26 5 pio0_26 6 pio1_26 7 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO26_CTRL 0x0000001f 0x00d8 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO27_STATUS 0x00000000 0x00dc GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_tx 1 uart1_rts 2 i2c1_scl 3 pwm_b_5 4 sio_27 5 pio0_27 6 pio1_27 7 usb_muxing_overcurr_detect 9 null 31 FUNCSEL GPIO27_CTRL 0x0000001f 0x00e0 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO28_STATUS 0x00000000 0x00e4 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_rx 1 uart0_tx 2 i2c0_sda 3 pwm_a_6 4 sio_28 5 pio0_28 6 pio1_28 7 usb_muxing_vbus_detect 9 null 31 FUNCSEL GPIO28_CTRL 0x0000001f 0x00e8 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO29_STATUS 0x00000000 0x00ec GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL spi1_ss_n 1 uart0_rx 2 i2c0_scl 3 pwm_b_6 4 sio_29 5 pio0_29 6 pio1_29 7 usb_muxing_vbus_en 9 null 31 FUNCSEL GPIO29_CTRL 0x0000001f 0x00f0 Raw Interrupts read-write [31:31] oneToClear GPIO7_EDGE_HIGH read-write [30:30] oneToClear GPIO7_EDGE_LOW read-only [29:29] GPIO7_LEVEL_HIGH read-only [28:28] GPIO7_LEVEL_LOW read-write [27:27] oneToClear GPIO6_EDGE_HIGH read-write [26:26] oneToClear GPIO6_EDGE_LOW read-only [25:25] GPIO6_LEVEL_HIGH read-only [24:24] GPIO6_LEVEL_LOW read-write [23:23] oneToClear GPIO5_EDGE_HIGH read-write [22:22] oneToClear GPIO5_EDGE_LOW read-only [21:21] GPIO5_LEVEL_HIGH read-only [20:20] GPIO5_LEVEL_LOW read-write [19:19] oneToClear GPIO4_EDGE_HIGH read-write [18:18] oneToClear GPIO4_EDGE_LOW read-only [17:17] GPIO4_LEVEL_HIGH read-only [16:16] GPIO4_LEVEL_LOW read-write [15:15] oneToClear GPIO3_EDGE_HIGH read-write [14:14] oneToClear GPIO3_EDGE_LOW read-only [13:13] GPIO3_LEVEL_HIGH read-only [12:12] GPIO3_LEVEL_LOW read-write [11:11] oneToClear GPIO2_EDGE_HIGH read-write [10:10] oneToClear GPIO2_EDGE_LOW read-only [9:9] GPIO2_LEVEL_HIGH read-only [8:8] GPIO2_LEVEL_LOW read-write [7:7] oneToClear GPIO1_EDGE_HIGH read-write [6:6] oneToClear GPIO1_EDGE_LOW read-only [5:5] GPIO1_LEVEL_HIGH read-only [4:4] GPIO1_LEVEL_LOW read-write [3:3] oneToClear GPIO0_EDGE_HIGH read-write [2:2] oneToClear GPIO0_EDGE_LOW read-only [1:1] GPIO0_LEVEL_HIGH read-only [0:0] GPIO0_LEVEL_LOW INTR0 0x00000000 0x00f4 Raw Interrupts read-write [31:31] oneToClear GPIO15_EDGE_HIGH read-write [30:30] oneToClear GPIO15_EDGE_LOW read-only [29:29] GPIO15_LEVEL_HIGH read-only [28:28] GPIO15_LEVEL_LOW read-write [27:27] oneToClear GPIO14_EDGE_HIGH read-write [26:26] oneToClear GPIO14_EDGE_LOW read-only [25:25] GPIO14_LEVEL_HIGH read-only [24:24] GPIO14_LEVEL_LOW read-write [23:23] oneToClear GPIO13_EDGE_HIGH read-write [22:22] oneToClear GPIO13_EDGE_LOW read-only [21:21] GPIO13_LEVEL_HIGH read-only [20:20] GPIO13_LEVEL_LOW read-write [19:19] oneToClear GPIO12_EDGE_HIGH read-write [18:18] oneToClear GPIO12_EDGE_LOW read-only [17:17] GPIO12_LEVEL_HIGH read-only [16:16] GPIO12_LEVEL_LOW read-write [15:15] oneToClear GPIO11_EDGE_HIGH read-write [14:14] oneToClear GPIO11_EDGE_LOW read-only [13:13] GPIO11_LEVEL_HIGH read-only [12:12] GPIO11_LEVEL_LOW read-write [11:11] oneToClear GPIO10_EDGE_HIGH read-write [10:10] oneToClear GPIO10_EDGE_LOW read-only [9:9] GPIO10_LEVEL_HIGH read-only [8:8] GPIO10_LEVEL_LOW read-write [7:7] oneToClear GPIO9_EDGE_HIGH read-write [6:6] oneToClear GPIO9_EDGE_LOW read-only [5:5] GPIO9_LEVEL_HIGH read-only [4:4] GPIO9_LEVEL_LOW read-write [3:3] oneToClear GPIO8_EDGE_HIGH read-write [2:2] oneToClear GPIO8_EDGE_LOW read-only [1:1] GPIO8_LEVEL_HIGH read-only [0:0] GPIO8_LEVEL_LOW INTR1 0x00000000 0x00f8 Raw Interrupts read-write [31:31] oneToClear GPIO23_EDGE_HIGH read-write [30:30] oneToClear GPIO23_EDGE_LOW read-only [29:29] GPIO23_LEVEL_HIGH read-only [28:28] GPIO23_LEVEL_LOW read-write [27:27] oneToClear GPIO22_EDGE_HIGH read-write [26:26] oneToClear GPIO22_EDGE_LOW read-only [25:25] GPIO22_LEVEL_HIGH read-only [24:24] GPIO22_LEVEL_LOW read-write [23:23] oneToClear GPIO21_EDGE_HIGH read-write [22:22] oneToClear GPIO21_EDGE_LOW read-only [21:21] GPIO21_LEVEL_HIGH read-only [20:20] GPIO21_LEVEL_LOW read-write [19:19] oneToClear GPIO20_EDGE_HIGH read-write [18:18] oneToClear GPIO20_EDGE_LOW read-only [17:17] GPIO20_LEVEL_HIGH read-only [16:16] GPIO20_LEVEL_LOW read-write [15:15] oneToClear GPIO19_EDGE_HIGH read-write [14:14] oneToClear GPIO19_EDGE_LOW read-only [13:13] GPIO19_LEVEL_HIGH read-only [12:12] GPIO19_LEVEL_LOW read-write [11:11] oneToClear GPIO18_EDGE_HIGH read-write [10:10] oneToClear GPIO18_EDGE_LOW read-only [9:9] GPIO18_LEVEL_HIGH read-only [8:8] GPIO18_LEVEL_LOW read-write [7:7] oneToClear GPIO17_EDGE_HIGH read-write [6:6] oneToClear GPIO17_EDGE_LOW read-only [5:5] GPIO17_LEVEL_HIGH read-only [4:4] GPIO17_LEVEL_LOW read-write [3:3] oneToClear GPIO16_EDGE_HIGH read-write [2:2] oneToClear GPIO16_EDGE_LOW read-only [1:1] GPIO16_LEVEL_HIGH read-only [0:0] GPIO16_LEVEL_LOW INTR2 0x00000000 0x00fc Raw Interrupts read-write [23:23] oneToClear GPIO29_EDGE_HIGH read-write [22:22] oneToClear GPIO29_EDGE_LOW read-only [21:21] GPIO29_LEVEL_HIGH read-only [20:20] GPIO29_LEVEL_LOW read-write [19:19] oneToClear GPIO28_EDGE_HIGH read-write [18:18] oneToClear GPIO28_EDGE_LOW read-only [17:17] GPIO28_LEVEL_HIGH read-only [16:16] GPIO28_LEVEL_LOW read-write [15:15] oneToClear GPIO27_EDGE_HIGH read-write [14:14] oneToClear GPIO27_EDGE_LOW read-only [13:13] GPIO27_LEVEL_HIGH read-only [12:12] GPIO27_LEVEL_LOW read-write [11:11] oneToClear GPIO26_EDGE_HIGH read-write [10:10] oneToClear GPIO26_EDGE_LOW read-only [9:9] GPIO26_LEVEL_HIGH read-only [8:8] GPIO26_LEVEL_LOW read-write [7:7] oneToClear GPIO25_EDGE_HIGH read-write [6:6] oneToClear GPIO25_EDGE_LOW read-only [5:5] GPIO25_LEVEL_HIGH read-only [4:4] GPIO25_LEVEL_LOW read-write [3:3] oneToClear GPIO24_EDGE_HIGH read-write [2:2] oneToClear GPIO24_EDGE_LOW read-only [1:1] GPIO24_LEVEL_HIGH read-only [0:0] GPIO24_LEVEL_LOW INTR3 0x00000000 0x0100 Interrupt Enable for proc0 read-write [31:31] GPIO7_EDGE_HIGH read-write [30:30] GPIO7_EDGE_LOW read-write [29:29] GPIO7_LEVEL_HIGH read-write [28:28] GPIO7_LEVEL_LOW read-write [27:27] GPIO6_EDGE_HIGH read-write [26:26] GPIO6_EDGE_LOW read-write [25:25] GPIO6_LEVEL_HIGH read-write [24:24] GPIO6_LEVEL_LOW read-write [23:23] GPIO5_EDGE_HIGH read-write [22:22] GPIO5_EDGE_LOW read-write [21:21] GPIO5_LEVEL_HIGH read-write [20:20] GPIO5_LEVEL_LOW read-write [19:19] GPIO4_EDGE_HIGH read-write [18:18] GPIO4_EDGE_LOW read-write [17:17] GPIO4_LEVEL_HIGH read-write [16:16] GPIO4_LEVEL_LOW read-write [15:15] GPIO3_EDGE_HIGH read-write [14:14] GPIO3_EDGE_LOW read-write [13:13] GPIO3_LEVEL_HIGH read-write [12:12] GPIO3_LEVEL_LOW read-write [11:11] GPIO2_EDGE_HIGH read-write [10:10] GPIO2_EDGE_LOW read-write [9:9] GPIO2_LEVEL_HIGH read-write [8:8] GPIO2_LEVEL_LOW read-write [7:7] GPIO1_EDGE_HIGH read-write [6:6] GPIO1_EDGE_LOW read-write [5:5] GPIO1_LEVEL_HIGH read-write [4:4] GPIO1_LEVEL_LOW read-write [3:3] GPIO0_EDGE_HIGH read-write [2:2] GPIO0_EDGE_LOW read-write [1:1] GPIO0_LEVEL_HIGH read-write [0:0] GPIO0_LEVEL_LOW PROC0_INTE0 0x00000000 0x0104 Interrupt Enable for proc0 read-write [31:31] GPIO15_EDGE_HIGH read-write [30:30] GPIO15_EDGE_LOW read-write [29:29] GPIO15_LEVEL_HIGH read-write [28:28] GPIO15_LEVEL_LOW read-write [27:27] GPIO14_EDGE_HIGH read-write [26:26] GPIO14_EDGE_LOW read-write [25:25] GPIO14_LEVEL_HIGH read-write [24:24] GPIO14_LEVEL_LOW read-write [23:23] GPIO13_EDGE_HIGH read-write [22:22] GPIO13_EDGE_LOW read-write [21:21] GPIO13_LEVEL_HIGH read-write [20:20] GPIO13_LEVEL_LOW read-write [19:19] GPIO12_EDGE_HIGH read-write [18:18] GPIO12_EDGE_LOW read-write [17:17] GPIO12_LEVEL_HIGH read-write [16:16] GPIO12_LEVEL_LOW read-write [15:15] GPIO11_EDGE_HIGH read-write [14:14] GPIO11_EDGE_LOW read-write [13:13] GPIO11_LEVEL_HIGH read-write [12:12] GPIO11_LEVEL_LOW read-write [11:11] GPIO10_EDGE_HIGH read-write [10:10] GPIO10_EDGE_LOW read-write [9:9] GPIO10_LEVEL_HIGH read-write [8:8] GPIO10_LEVEL_LOW read-write [7:7] GPIO9_EDGE_HIGH read-write [6:6] GPIO9_EDGE_LOW read-write [5:5] GPIO9_LEVEL_HIGH read-write [4:4] GPIO9_LEVEL_LOW read-write [3:3] GPIO8_EDGE_HIGH read-write [2:2] GPIO8_EDGE_LOW read-write [1:1] GPIO8_LEVEL_HIGH read-write [0:0] GPIO8_LEVEL_LOW PROC0_INTE1 0x00000000 0x0108 Interrupt Enable for proc0 read-write [31:31] GPIO23_EDGE_HIGH read-write [30:30] GPIO23_EDGE_LOW read-write [29:29] GPIO23_LEVEL_HIGH read-write [28:28] GPIO23_LEVEL_LOW read-write [27:27] GPIO22_EDGE_HIGH read-write [26:26] GPIO22_EDGE_LOW read-write [25:25] GPIO22_LEVEL_HIGH read-write [24:24] GPIO22_LEVEL_LOW read-write [23:23] GPIO21_EDGE_HIGH read-write [22:22] GPIO21_EDGE_LOW read-write [21:21] GPIO21_LEVEL_HIGH read-write [20:20] GPIO21_LEVEL_LOW read-write [19:19] GPIO20_EDGE_HIGH read-write [18:18] GPIO20_EDGE_LOW read-write [17:17] GPIO20_LEVEL_HIGH read-write [16:16] GPIO20_LEVEL_LOW read-write [15:15] GPIO19_EDGE_HIGH read-write [14:14] GPIO19_EDGE_LOW read-write [13:13] GPIO19_LEVEL_HIGH read-write [12:12] GPIO19_LEVEL_LOW read-write [11:11] GPIO18_EDGE_HIGH read-write [10:10] GPIO18_EDGE_LOW read-write [9:9] GPIO18_LEVEL_HIGH read-write [8:8] GPIO18_LEVEL_LOW read-write [7:7] GPIO17_EDGE_HIGH read-write [6:6] GPIO17_EDGE_LOW read-write [5:5] GPIO17_LEVEL_HIGH read-write [4:4] GPIO17_LEVEL_LOW read-write [3:3] GPIO16_EDGE_HIGH read-write [2:2] GPIO16_EDGE_LOW read-write [1:1] GPIO16_LEVEL_HIGH read-write [0:0] GPIO16_LEVEL_LOW PROC0_INTE2 0x00000000 0x010c Interrupt Enable for proc0 read-write [23:23] GPIO29_EDGE_HIGH read-write [22:22] GPIO29_EDGE_LOW read-write [21:21] GPIO29_LEVEL_HIGH read-write [20:20] GPIO29_LEVEL_LOW read-write [19:19] GPIO28_EDGE_HIGH read-write [18:18] GPIO28_EDGE_LOW read-write [17:17] GPIO28_LEVEL_HIGH read-write [16:16] GPIO28_LEVEL_LOW read-write [15:15] GPIO27_EDGE_HIGH read-write [14:14] GPIO27_EDGE_LOW read-write [13:13] GPIO27_LEVEL_HIGH read-write [12:12] GPIO27_LEVEL_LOW read-write [11:11] GPIO26_EDGE_HIGH read-write [10:10] GPIO26_EDGE_LOW read-write [9:9] GPIO26_LEVEL_HIGH read-write [8:8] GPIO26_LEVEL_LOW read-write [7:7] GPIO25_EDGE_HIGH read-write [6:6] GPIO25_EDGE_LOW read-write [5:5] GPIO25_LEVEL_HIGH read-write [4:4] GPIO25_LEVEL_LOW read-write [3:3] GPIO24_EDGE_HIGH read-write [2:2] GPIO24_EDGE_LOW read-write [1:1] GPIO24_LEVEL_HIGH read-write [0:0] GPIO24_LEVEL_LOW PROC0_INTE3 0x00000000 0x0110 Interrupt Force for proc0 read-write [31:31] GPIO7_EDGE_HIGH read-write [30:30] GPIO7_EDGE_LOW read-write [29:29] GPIO7_LEVEL_HIGH read-write [28:28] GPIO7_LEVEL_LOW read-write [27:27] GPIO6_EDGE_HIGH read-write [26:26] GPIO6_EDGE_LOW read-write [25:25] GPIO6_LEVEL_HIGH read-write [24:24] GPIO6_LEVEL_LOW read-write [23:23] GPIO5_EDGE_HIGH read-write [22:22] GPIO5_EDGE_LOW read-write [21:21] GPIO5_LEVEL_HIGH read-write [20:20] GPIO5_LEVEL_LOW read-write [19:19] GPIO4_EDGE_HIGH read-write [18:18] GPIO4_EDGE_LOW read-write [17:17] GPIO4_LEVEL_HIGH read-write [16:16] GPIO4_LEVEL_LOW read-write [15:15] GPIO3_EDGE_HIGH read-write [14:14] GPIO3_EDGE_LOW read-write [13:13] GPIO3_LEVEL_HIGH read-write [12:12] GPIO3_LEVEL_LOW read-write [11:11] GPIO2_EDGE_HIGH read-write [10:10] GPIO2_EDGE_LOW read-write [9:9] GPIO2_LEVEL_HIGH read-write [8:8] GPIO2_LEVEL_LOW read-write [7:7] GPIO1_EDGE_HIGH read-write [6:6] GPIO1_EDGE_LOW read-write [5:5] GPIO1_LEVEL_HIGH read-write [4:4] GPIO1_LEVEL_LOW read-write [3:3] GPIO0_EDGE_HIGH read-write [2:2] GPIO0_EDGE_LOW read-write [1:1] GPIO0_LEVEL_HIGH read-write [0:0] GPIO0_LEVEL_LOW PROC0_INTF0 0x00000000 0x0114 Interrupt Force for proc0 read-write [31:31] GPIO15_EDGE_HIGH read-write [30:30] GPIO15_EDGE_LOW read-write [29:29] GPIO15_LEVEL_HIGH read-write [28:28] GPIO15_LEVEL_LOW read-write [27:27] GPIO14_EDGE_HIGH read-write [26:26] GPIO14_EDGE_LOW read-write [25:25] GPIO14_LEVEL_HIGH read-write [24:24] GPIO14_LEVEL_LOW read-write [23:23] GPIO13_EDGE_HIGH read-write [22:22] GPIO13_EDGE_LOW read-write [21:21] GPIO13_LEVEL_HIGH read-write [20:20] GPIO13_LEVEL_LOW read-write [19:19] GPIO12_EDGE_HIGH read-write [18:18] GPIO12_EDGE_LOW read-write [17:17] GPIO12_LEVEL_HIGH read-write [16:16] GPIO12_LEVEL_LOW read-write [15:15] GPIO11_EDGE_HIGH read-write [14:14] GPIO11_EDGE_LOW read-write [13:13] GPIO11_LEVEL_HIGH read-write [12:12] GPIO11_LEVEL_LOW read-write [11:11] GPIO10_EDGE_HIGH read-write [10:10] GPIO10_EDGE_LOW read-write [9:9] GPIO10_LEVEL_HIGH read-write [8:8] GPIO10_LEVEL_LOW read-write [7:7] GPIO9_EDGE_HIGH read-write [6:6] GPIO9_EDGE_LOW read-write [5:5] GPIO9_LEVEL_HIGH read-write [4:4] GPIO9_LEVEL_LOW read-write [3:3] GPIO8_EDGE_HIGH read-write [2:2] GPIO8_EDGE_LOW read-write [1:1] GPIO8_LEVEL_HIGH read-write [0:0] GPIO8_LEVEL_LOW PROC0_INTF1 0x00000000 0x0118 Interrupt Force for proc0 read-write [31:31] GPIO23_EDGE_HIGH read-write [30:30] GPIO23_EDGE_LOW read-write [29:29] GPIO23_LEVEL_HIGH read-write [28:28] GPIO23_LEVEL_LOW read-write [27:27] GPIO22_EDGE_HIGH read-write [26:26] GPIO22_EDGE_LOW read-write [25:25] GPIO22_LEVEL_HIGH read-write [24:24] GPIO22_LEVEL_LOW read-write [23:23] GPIO21_EDGE_HIGH read-write [22:22] GPIO21_EDGE_LOW read-write [21:21] GPIO21_LEVEL_HIGH read-write [20:20] GPIO21_LEVEL_LOW read-write [19:19] GPIO20_EDGE_HIGH read-write [18:18] GPIO20_EDGE_LOW read-write [17:17] GPIO20_LEVEL_HIGH read-write [16:16] GPIO20_LEVEL_LOW read-write [15:15] GPIO19_EDGE_HIGH read-write [14:14] GPIO19_EDGE_LOW read-write [13:13] GPIO19_LEVEL_HIGH read-write [12:12] GPIO19_LEVEL_LOW read-write [11:11] GPIO18_EDGE_HIGH read-write [10:10] GPIO18_EDGE_LOW read-write [9:9] GPIO18_LEVEL_HIGH read-write [8:8] GPIO18_LEVEL_LOW read-write [7:7] GPIO17_EDGE_HIGH read-write [6:6] GPIO17_EDGE_LOW read-write [5:5] GPIO17_LEVEL_HIGH read-write [4:4] GPIO17_LEVEL_LOW read-write [3:3] GPIO16_EDGE_HIGH read-write [2:2] GPIO16_EDGE_LOW read-write [1:1] GPIO16_LEVEL_HIGH read-write [0:0] GPIO16_LEVEL_LOW PROC0_INTF2 0x00000000 0x011c Interrupt Force for proc0 read-write [23:23] GPIO29_EDGE_HIGH read-write [22:22] GPIO29_EDGE_LOW read-write [21:21] GPIO29_LEVEL_HIGH read-write [20:20] GPIO29_LEVEL_LOW read-write [19:19] GPIO28_EDGE_HIGH read-write [18:18] GPIO28_EDGE_LOW read-write [17:17] GPIO28_LEVEL_HIGH read-write [16:16] GPIO28_LEVEL_LOW read-write [15:15] GPIO27_EDGE_HIGH read-write [14:14] GPIO27_EDGE_LOW read-write [13:13] GPIO27_LEVEL_HIGH read-write [12:12] GPIO27_LEVEL_LOW read-write [11:11] GPIO26_EDGE_HIGH read-write [10:10] GPIO26_EDGE_LOW read-write [9:9] GPIO26_LEVEL_HIGH read-write [8:8] GPIO26_LEVEL_LOW read-write [7:7] GPIO25_EDGE_HIGH read-write [6:6] GPIO25_EDGE_LOW read-write [5:5] GPIO25_LEVEL_HIGH read-write [4:4] GPIO25_LEVEL_LOW read-write [3:3] GPIO24_EDGE_HIGH read-write [2:2] GPIO24_EDGE_LOW read-write [1:1] GPIO24_LEVEL_HIGH read-write [0:0] GPIO24_LEVEL_LOW PROC0_INTF3 0x00000000 0x0120 Interrupt status after masking & forcing for proc0 read-only [31:31] GPIO7_EDGE_HIGH read-only [30:30] GPIO7_EDGE_LOW read-only [29:29] GPIO7_LEVEL_HIGH read-only [28:28] GPIO7_LEVEL_LOW read-only [27:27] GPIO6_EDGE_HIGH read-only [26:26] GPIO6_EDGE_LOW read-only [25:25] GPIO6_LEVEL_HIGH read-only [24:24] GPIO6_LEVEL_LOW read-only [23:23] GPIO5_EDGE_HIGH read-only [22:22] GPIO5_EDGE_LOW read-only [21:21] GPIO5_LEVEL_HIGH read-only [20:20] GPIO5_LEVEL_LOW read-only [19:19] GPIO4_EDGE_HIGH read-only [18:18] GPIO4_EDGE_LOW read-only [17:17] GPIO4_LEVEL_HIGH read-only [16:16] GPIO4_LEVEL_LOW read-only [15:15] GPIO3_EDGE_HIGH read-only [14:14] GPIO3_EDGE_LOW read-only [13:13] GPIO3_LEVEL_HIGH read-only [12:12] GPIO3_LEVEL_LOW read-only [11:11] GPIO2_EDGE_HIGH read-only [10:10] GPIO2_EDGE_LOW read-only [9:9] GPIO2_LEVEL_HIGH read-only [8:8] GPIO2_LEVEL_LOW read-only [7:7] GPIO1_EDGE_HIGH read-only [6:6] GPIO1_EDGE_LOW read-only [5:5] GPIO1_LEVEL_HIGH read-only [4:4] GPIO1_LEVEL_LOW read-only [3:3] GPIO0_EDGE_HIGH read-only [2:2] GPIO0_EDGE_LOW read-only [1:1] GPIO0_LEVEL_HIGH read-only [0:0] GPIO0_LEVEL_LOW PROC0_INTS0 0x00000000 0x0124 Interrupt status after masking & forcing for proc0 read-only [31:31] GPIO15_EDGE_HIGH read-only [30:30] GPIO15_EDGE_LOW read-only [29:29] GPIO15_LEVEL_HIGH read-only [28:28] GPIO15_LEVEL_LOW read-only [27:27] GPIO14_EDGE_HIGH read-only [26:26] GPIO14_EDGE_LOW read-only [25:25] GPIO14_LEVEL_HIGH read-only [24:24] GPIO14_LEVEL_LOW read-only [23:23] GPIO13_EDGE_HIGH read-only [22:22] GPIO13_EDGE_LOW read-only [21:21] GPIO13_LEVEL_HIGH read-only [20:20] GPIO13_LEVEL_LOW read-only [19:19] GPIO12_EDGE_HIGH read-only [18:18] GPIO12_EDGE_LOW read-only [17:17] GPIO12_LEVEL_HIGH read-only [16:16] GPIO12_LEVEL_LOW read-only [15:15] GPIO11_EDGE_HIGH read-only [14:14] GPIO11_EDGE_LOW read-only [13:13] GPIO11_LEVEL_HIGH read-only [12:12] GPIO11_LEVEL_LOW read-only [11:11] GPIO10_EDGE_HIGH read-only [10:10] GPIO10_EDGE_LOW read-only [9:9] GPIO10_LEVEL_HIGH read-only [8:8] GPIO10_LEVEL_LOW read-only [7:7] GPIO9_EDGE_HIGH read-only [6:6] GPIO9_EDGE_LOW read-only [5:5] GPIO9_LEVEL_HIGH read-only [4:4] GPIO9_LEVEL_LOW read-only [3:3] GPIO8_EDGE_HIGH read-only [2:2] GPIO8_EDGE_LOW read-only [1:1] GPIO8_LEVEL_HIGH read-only [0:0] GPIO8_LEVEL_LOW PROC0_INTS1 0x00000000 0x0128 Interrupt status after masking & forcing for proc0 read-only [31:31] GPIO23_EDGE_HIGH read-only [30:30] GPIO23_EDGE_LOW read-only [29:29] GPIO23_LEVEL_HIGH read-only [28:28] GPIO23_LEVEL_LOW read-only [27:27] GPIO22_EDGE_HIGH read-only [26:26] GPIO22_EDGE_LOW read-only [25:25] GPIO22_LEVEL_HIGH read-only [24:24] GPIO22_LEVEL_LOW read-only [23:23] GPIO21_EDGE_HIGH read-only [22:22] GPIO21_EDGE_LOW read-only [21:21] GPIO21_LEVEL_HIGH read-only [20:20] GPIO21_LEVEL_LOW read-only [19:19] GPIO20_EDGE_HIGH read-only [18:18] GPIO20_EDGE_LOW read-only [17:17] GPIO20_LEVEL_HIGH read-only [16:16] GPIO20_LEVEL_LOW read-only [15:15] GPIO19_EDGE_HIGH read-only [14:14] GPIO19_EDGE_LOW read-only [13:13] GPIO19_LEVEL_HIGH read-only [12:12] GPIO19_LEVEL_LOW read-only [11:11] GPIO18_EDGE_HIGH read-only [10:10] GPIO18_EDGE_LOW read-only [9:9] GPIO18_LEVEL_HIGH read-only [8:8] GPIO18_LEVEL_LOW read-only [7:7] GPIO17_EDGE_HIGH read-only [6:6] GPIO17_EDGE_LOW read-only [5:5] GPIO17_LEVEL_HIGH read-only [4:4] GPIO17_LEVEL_LOW read-only [3:3] GPIO16_EDGE_HIGH read-only [2:2] GPIO16_EDGE_LOW read-only [1:1] GPIO16_LEVEL_HIGH read-only [0:0] GPIO16_LEVEL_LOW PROC0_INTS2 0x00000000 0x012c Interrupt status after masking & forcing for proc0 read-only [23:23] GPIO29_EDGE_HIGH read-only [22:22] GPIO29_EDGE_LOW read-only [21:21] GPIO29_LEVEL_HIGH read-only [20:20] GPIO29_LEVEL_LOW read-only [19:19] GPIO28_EDGE_HIGH read-only [18:18] GPIO28_EDGE_LOW read-only [17:17] GPIO28_LEVEL_HIGH read-only [16:16] GPIO28_LEVEL_LOW read-only [15:15] GPIO27_EDGE_HIGH read-only [14:14] GPIO27_EDGE_LOW read-only [13:13] GPIO27_LEVEL_HIGH read-only [12:12] GPIO27_LEVEL_LOW read-only [11:11] GPIO26_EDGE_HIGH read-only [10:10] GPIO26_EDGE_LOW read-only [9:9] GPIO26_LEVEL_HIGH read-only [8:8] GPIO26_LEVEL_LOW read-only [7:7] GPIO25_EDGE_HIGH read-only [6:6] GPIO25_EDGE_LOW read-only [5:5] GPIO25_LEVEL_HIGH read-only [4:4] GPIO25_LEVEL_LOW read-only [3:3] GPIO24_EDGE_HIGH read-only [2:2] GPIO24_EDGE_LOW read-only [1:1] GPIO24_LEVEL_HIGH read-only [0:0] GPIO24_LEVEL_LOW PROC0_INTS3 0x00000000 0x0130 Interrupt Enable for proc1 read-write [31:31] GPIO7_EDGE_HIGH read-write [30:30] GPIO7_EDGE_LOW read-write [29:29] GPIO7_LEVEL_HIGH read-write [28:28] GPIO7_LEVEL_LOW read-write [27:27] GPIO6_EDGE_HIGH read-write [26:26] GPIO6_EDGE_LOW read-write [25:25] GPIO6_LEVEL_HIGH read-write [24:24] GPIO6_LEVEL_LOW read-write [23:23] GPIO5_EDGE_HIGH read-write [22:22] GPIO5_EDGE_LOW read-write [21:21] GPIO5_LEVEL_HIGH read-write [20:20] GPIO5_LEVEL_LOW read-write [19:19] GPIO4_EDGE_HIGH read-write [18:18] GPIO4_EDGE_LOW read-write [17:17] GPIO4_LEVEL_HIGH read-write [16:16] GPIO4_LEVEL_LOW read-write [15:15] GPIO3_EDGE_HIGH read-write [14:14] GPIO3_EDGE_LOW read-write [13:13] GPIO3_LEVEL_HIGH read-write [12:12] GPIO3_LEVEL_LOW read-write [11:11] GPIO2_EDGE_HIGH read-write [10:10] GPIO2_EDGE_LOW read-write [9:9] GPIO2_LEVEL_HIGH read-write [8:8] GPIO2_LEVEL_LOW read-write [7:7] GPIO1_EDGE_HIGH read-write [6:6] GPIO1_EDGE_LOW read-write [5:5] GPIO1_LEVEL_HIGH read-write [4:4] GPIO1_LEVEL_LOW read-write [3:3] GPIO0_EDGE_HIGH read-write [2:2] GPIO0_EDGE_LOW read-write [1:1] GPIO0_LEVEL_HIGH read-write [0:0] GPIO0_LEVEL_LOW PROC1_INTE0 0x00000000 0x0134 Interrupt Enable for proc1 read-write [31:31] GPIO15_EDGE_HIGH read-write [30:30] GPIO15_EDGE_LOW read-write [29:29] GPIO15_LEVEL_HIGH read-write [28:28] GPIO15_LEVEL_LOW read-write [27:27] GPIO14_EDGE_HIGH read-write [26:26] GPIO14_EDGE_LOW read-write [25:25] GPIO14_LEVEL_HIGH read-write [24:24] GPIO14_LEVEL_LOW read-write [23:23] GPIO13_EDGE_HIGH read-write [22:22] GPIO13_EDGE_LOW read-write [21:21] GPIO13_LEVEL_HIGH read-write [20:20] GPIO13_LEVEL_LOW read-write [19:19] GPIO12_EDGE_HIGH read-write [18:18] GPIO12_EDGE_LOW read-write [17:17] GPIO12_LEVEL_HIGH read-write [16:16] GPIO12_LEVEL_LOW read-write [15:15] GPIO11_EDGE_HIGH read-write [14:14] GPIO11_EDGE_LOW read-write [13:13] GPIO11_LEVEL_HIGH read-write [12:12] GPIO11_LEVEL_LOW read-write [11:11] GPIO10_EDGE_HIGH read-write [10:10] GPIO10_EDGE_LOW read-write [9:9] GPIO10_LEVEL_HIGH read-write [8:8] GPIO10_LEVEL_LOW read-write [7:7] GPIO9_EDGE_HIGH read-write [6:6] GPIO9_EDGE_LOW read-write [5:5] GPIO9_LEVEL_HIGH read-write [4:4] GPIO9_LEVEL_LOW read-write [3:3] GPIO8_EDGE_HIGH read-write [2:2] GPIO8_EDGE_LOW read-write [1:1] GPIO8_LEVEL_HIGH read-write [0:0] GPIO8_LEVEL_LOW PROC1_INTE1 0x00000000 0x0138 Interrupt Enable for proc1 read-write [31:31] GPIO23_EDGE_HIGH read-write [30:30] GPIO23_EDGE_LOW read-write [29:29] GPIO23_LEVEL_HIGH read-write [28:28] GPIO23_LEVEL_LOW read-write [27:27] GPIO22_EDGE_HIGH read-write [26:26] GPIO22_EDGE_LOW read-write [25:25] GPIO22_LEVEL_HIGH read-write [24:24] GPIO22_LEVEL_LOW read-write [23:23] GPIO21_EDGE_HIGH read-write [22:22] GPIO21_EDGE_LOW read-write [21:21] GPIO21_LEVEL_HIGH read-write [20:20] GPIO21_LEVEL_LOW read-write [19:19] GPIO20_EDGE_HIGH read-write [18:18] GPIO20_EDGE_LOW read-write [17:17] GPIO20_LEVEL_HIGH read-write [16:16] GPIO20_LEVEL_LOW read-write [15:15] GPIO19_EDGE_HIGH read-write [14:14] GPIO19_EDGE_LOW read-write [13:13] GPIO19_LEVEL_HIGH read-write [12:12] GPIO19_LEVEL_LOW read-write [11:11] GPIO18_EDGE_HIGH read-write [10:10] GPIO18_EDGE_LOW read-write [9:9] GPIO18_LEVEL_HIGH read-write [8:8] GPIO18_LEVEL_LOW read-write [7:7] GPIO17_EDGE_HIGH read-write [6:6] GPIO17_EDGE_LOW read-write [5:5] GPIO17_LEVEL_HIGH read-write [4:4] GPIO17_LEVEL_LOW read-write [3:3] GPIO16_EDGE_HIGH read-write [2:2] GPIO16_EDGE_LOW read-write [1:1] GPIO16_LEVEL_HIGH read-write [0:0] GPIO16_LEVEL_LOW PROC1_INTE2 0x00000000 0x013c Interrupt Enable for proc1 read-write [23:23] GPIO29_EDGE_HIGH read-write [22:22] GPIO29_EDGE_LOW read-write [21:21] GPIO29_LEVEL_HIGH read-write [20:20] GPIO29_LEVEL_LOW read-write [19:19] GPIO28_EDGE_HIGH read-write [18:18] GPIO28_EDGE_LOW read-write [17:17] GPIO28_LEVEL_HIGH read-write [16:16] GPIO28_LEVEL_LOW read-write [15:15] GPIO27_EDGE_HIGH read-write [14:14] GPIO27_EDGE_LOW read-write [13:13] GPIO27_LEVEL_HIGH read-write [12:12] GPIO27_LEVEL_LOW read-write [11:11] GPIO26_EDGE_HIGH read-write [10:10] GPIO26_EDGE_LOW read-write [9:9] GPIO26_LEVEL_HIGH read-write [8:8] GPIO26_LEVEL_LOW read-write [7:7] GPIO25_EDGE_HIGH read-write [6:6] GPIO25_EDGE_LOW read-write [5:5] GPIO25_LEVEL_HIGH read-write [4:4] GPIO25_LEVEL_LOW read-write [3:3] GPIO24_EDGE_HIGH read-write [2:2] GPIO24_EDGE_LOW read-write [1:1] GPIO24_LEVEL_HIGH read-write [0:0] GPIO24_LEVEL_LOW PROC1_INTE3 0x00000000 0x0140 Interrupt Force for proc1 read-write [31:31] GPIO7_EDGE_HIGH read-write [30:30] GPIO7_EDGE_LOW read-write [29:29] GPIO7_LEVEL_HIGH read-write [28:28] GPIO7_LEVEL_LOW read-write [27:27] GPIO6_EDGE_HIGH read-write [26:26] GPIO6_EDGE_LOW read-write [25:25] GPIO6_LEVEL_HIGH read-write [24:24] GPIO6_LEVEL_LOW read-write [23:23] GPIO5_EDGE_HIGH read-write [22:22] GPIO5_EDGE_LOW read-write [21:21] GPIO5_LEVEL_HIGH read-write [20:20] GPIO5_LEVEL_LOW read-write [19:19] GPIO4_EDGE_HIGH read-write [18:18] GPIO4_EDGE_LOW read-write [17:17] GPIO4_LEVEL_HIGH read-write [16:16] GPIO4_LEVEL_LOW read-write [15:15] GPIO3_EDGE_HIGH read-write [14:14] GPIO3_EDGE_LOW read-write [13:13] GPIO3_LEVEL_HIGH read-write [12:12] GPIO3_LEVEL_LOW read-write [11:11] GPIO2_EDGE_HIGH read-write [10:10] GPIO2_EDGE_LOW read-write [9:9] GPIO2_LEVEL_HIGH read-write [8:8] GPIO2_LEVEL_LOW read-write [7:7] GPIO1_EDGE_HIGH read-write [6:6] GPIO1_EDGE_LOW read-write [5:5] GPIO1_LEVEL_HIGH read-write [4:4] GPIO1_LEVEL_LOW read-write [3:3] GPIO0_EDGE_HIGH read-write [2:2] GPIO0_EDGE_LOW read-write [1:1] GPIO0_LEVEL_HIGH read-write [0:0] GPIO0_LEVEL_LOW PROC1_INTF0 0x00000000 0x0144 Interrupt Force for proc1 read-write [31:31] GPIO15_EDGE_HIGH read-write [30:30] GPIO15_EDGE_LOW read-write [29:29] GPIO15_LEVEL_HIGH read-write [28:28] GPIO15_LEVEL_LOW read-write [27:27] GPIO14_EDGE_HIGH read-write [26:26] GPIO14_EDGE_LOW read-write [25:25] GPIO14_LEVEL_HIGH read-write [24:24] GPIO14_LEVEL_LOW read-write [23:23] GPIO13_EDGE_HIGH read-write [22:22] GPIO13_EDGE_LOW read-write [21:21] GPIO13_LEVEL_HIGH read-write [20:20] GPIO13_LEVEL_LOW read-write [19:19] GPIO12_EDGE_HIGH read-write [18:18] GPIO12_EDGE_LOW read-write [17:17] GPIO12_LEVEL_HIGH read-write [16:16] GPIO12_LEVEL_LOW read-write [15:15] GPIO11_EDGE_HIGH read-write [14:14] GPIO11_EDGE_LOW read-write [13:13] GPIO11_LEVEL_HIGH read-write [12:12] GPIO11_LEVEL_LOW read-write [11:11] GPIO10_EDGE_HIGH read-write [10:10] GPIO10_EDGE_LOW read-write [9:9] GPIO10_LEVEL_HIGH read-write [8:8] GPIO10_LEVEL_LOW read-write [7:7] GPIO9_EDGE_HIGH read-write [6:6] GPIO9_EDGE_LOW read-write [5:5] GPIO9_LEVEL_HIGH read-write [4:4] GPIO9_LEVEL_LOW read-write [3:3] GPIO8_EDGE_HIGH read-write [2:2] GPIO8_EDGE_LOW read-write [1:1] GPIO8_LEVEL_HIGH read-write [0:0] GPIO8_LEVEL_LOW PROC1_INTF1 0x00000000 0x0148 Interrupt Force for proc1 read-write [31:31] GPIO23_EDGE_HIGH read-write [30:30] GPIO23_EDGE_LOW read-write [29:29] GPIO23_LEVEL_HIGH read-write [28:28] GPIO23_LEVEL_LOW read-write [27:27] GPIO22_EDGE_HIGH read-write [26:26] GPIO22_EDGE_LOW read-write [25:25] GPIO22_LEVEL_HIGH read-write [24:24] GPIO22_LEVEL_LOW read-write [23:23] GPIO21_EDGE_HIGH read-write [22:22] GPIO21_EDGE_LOW read-write [21:21] GPIO21_LEVEL_HIGH read-write [20:20] GPIO21_LEVEL_LOW read-write [19:19] GPIO20_EDGE_HIGH read-write [18:18] GPIO20_EDGE_LOW read-write [17:17] GPIO20_LEVEL_HIGH read-write [16:16] GPIO20_LEVEL_LOW read-write [15:15] GPIO19_EDGE_HIGH read-write [14:14] GPIO19_EDGE_LOW read-write [13:13] GPIO19_LEVEL_HIGH read-write [12:12] GPIO19_LEVEL_LOW read-write [11:11] GPIO18_EDGE_HIGH read-write [10:10] GPIO18_EDGE_LOW read-write [9:9] GPIO18_LEVEL_HIGH read-write [8:8] GPIO18_LEVEL_LOW read-write [7:7] GPIO17_EDGE_HIGH read-write [6:6] GPIO17_EDGE_LOW read-write [5:5] GPIO17_LEVEL_HIGH read-write [4:4] GPIO17_LEVEL_LOW read-write [3:3] GPIO16_EDGE_HIGH read-write [2:2] GPIO16_EDGE_LOW read-write [1:1] GPIO16_LEVEL_HIGH read-write [0:0] GPIO16_LEVEL_LOW PROC1_INTF2 0x00000000 0x014c Interrupt Force for proc1 read-write [23:23] GPIO29_EDGE_HIGH read-write [22:22] GPIO29_EDGE_LOW read-write [21:21] GPIO29_LEVEL_HIGH read-write [20:20] GPIO29_LEVEL_LOW read-write [19:19] GPIO28_EDGE_HIGH read-write [18:18] GPIO28_EDGE_LOW read-write [17:17] GPIO28_LEVEL_HIGH read-write [16:16] GPIO28_LEVEL_LOW read-write [15:15] GPIO27_EDGE_HIGH read-write [14:14] GPIO27_EDGE_LOW read-write [13:13] GPIO27_LEVEL_HIGH read-write [12:12] GPIO27_LEVEL_LOW read-write [11:11] GPIO26_EDGE_HIGH read-write [10:10] GPIO26_EDGE_LOW read-write [9:9] GPIO26_LEVEL_HIGH read-write [8:8] GPIO26_LEVEL_LOW read-write [7:7] GPIO25_EDGE_HIGH read-write [6:6] GPIO25_EDGE_LOW read-write [5:5] GPIO25_LEVEL_HIGH read-write [4:4] GPIO25_LEVEL_LOW read-write [3:3] GPIO24_EDGE_HIGH read-write [2:2] GPIO24_EDGE_LOW read-write [1:1] GPIO24_LEVEL_HIGH read-write [0:0] GPIO24_LEVEL_LOW PROC1_INTF3 0x00000000 0x0150 Interrupt status after masking & forcing for proc1 read-only [31:31] GPIO7_EDGE_HIGH read-only [30:30] GPIO7_EDGE_LOW read-only [29:29] GPIO7_LEVEL_HIGH read-only [28:28] GPIO7_LEVEL_LOW read-only [27:27] GPIO6_EDGE_HIGH read-only [26:26] GPIO6_EDGE_LOW read-only [25:25] GPIO6_LEVEL_HIGH read-only [24:24] GPIO6_LEVEL_LOW read-only [23:23] GPIO5_EDGE_HIGH read-only [22:22] GPIO5_EDGE_LOW read-only [21:21] GPIO5_LEVEL_HIGH read-only [20:20] GPIO5_LEVEL_LOW read-only [19:19] GPIO4_EDGE_HIGH read-only [18:18] GPIO4_EDGE_LOW read-only [17:17] GPIO4_LEVEL_HIGH read-only [16:16] GPIO4_LEVEL_LOW read-only [15:15] GPIO3_EDGE_HIGH read-only [14:14] GPIO3_EDGE_LOW read-only [13:13] GPIO3_LEVEL_HIGH read-only [12:12] GPIO3_LEVEL_LOW read-only [11:11] GPIO2_EDGE_HIGH read-only [10:10] GPIO2_EDGE_LOW read-only [9:9] GPIO2_LEVEL_HIGH read-only [8:8] GPIO2_LEVEL_LOW read-only [7:7] GPIO1_EDGE_HIGH read-only [6:6] GPIO1_EDGE_LOW read-only [5:5] GPIO1_LEVEL_HIGH read-only [4:4] GPIO1_LEVEL_LOW read-only [3:3] GPIO0_EDGE_HIGH read-only [2:2] GPIO0_EDGE_LOW read-only [1:1] GPIO0_LEVEL_HIGH read-only [0:0] GPIO0_LEVEL_LOW PROC1_INTS0 0x00000000 0x0154 Interrupt status after masking & forcing for proc1 read-only [31:31] GPIO15_EDGE_HIGH read-only [30:30] GPIO15_EDGE_LOW read-only [29:29] GPIO15_LEVEL_HIGH read-only [28:28] GPIO15_LEVEL_LOW read-only [27:27] GPIO14_EDGE_HIGH read-only [26:26] GPIO14_EDGE_LOW read-only [25:25] GPIO14_LEVEL_HIGH read-only [24:24] GPIO14_LEVEL_LOW read-only [23:23] GPIO13_EDGE_HIGH read-only [22:22] GPIO13_EDGE_LOW read-only [21:21] GPIO13_LEVEL_HIGH read-only [20:20] GPIO13_LEVEL_LOW read-only [19:19] GPIO12_EDGE_HIGH read-only [18:18] GPIO12_EDGE_LOW read-only [17:17] GPIO12_LEVEL_HIGH read-only [16:16] GPIO12_LEVEL_LOW read-only [15:15] GPIO11_EDGE_HIGH read-only [14:14] GPIO11_EDGE_LOW read-only [13:13] GPIO11_LEVEL_HIGH read-only [12:12] GPIO11_LEVEL_LOW read-only [11:11] GPIO10_EDGE_HIGH read-only [10:10] GPIO10_EDGE_LOW read-only [9:9] GPIO10_LEVEL_HIGH read-only [8:8] GPIO10_LEVEL_LOW read-only [7:7] GPIO9_EDGE_HIGH read-only [6:6] GPIO9_EDGE_LOW read-only [5:5] GPIO9_LEVEL_HIGH read-only [4:4] GPIO9_LEVEL_LOW read-only [3:3] GPIO8_EDGE_HIGH read-only [2:2] GPIO8_EDGE_LOW read-only [1:1] GPIO8_LEVEL_HIGH read-only [0:0] GPIO8_LEVEL_LOW PROC1_INTS1 0x00000000 0x0158 Interrupt status after masking & forcing for proc1 read-only [31:31] GPIO23_EDGE_HIGH read-only [30:30] GPIO23_EDGE_LOW read-only [29:29] GPIO23_LEVEL_HIGH read-only [28:28] GPIO23_LEVEL_LOW read-only [27:27] GPIO22_EDGE_HIGH read-only [26:26] GPIO22_EDGE_LOW read-only [25:25] GPIO22_LEVEL_HIGH read-only [24:24] GPIO22_LEVEL_LOW read-only [23:23] GPIO21_EDGE_HIGH read-only [22:22] GPIO21_EDGE_LOW read-only [21:21] GPIO21_LEVEL_HIGH read-only [20:20] GPIO21_LEVEL_LOW read-only [19:19] GPIO20_EDGE_HIGH read-only [18:18] GPIO20_EDGE_LOW read-only [17:17] GPIO20_LEVEL_HIGH read-only [16:16] GPIO20_LEVEL_LOW read-only [15:15] GPIO19_EDGE_HIGH read-only [14:14] GPIO19_EDGE_LOW read-only [13:13] GPIO19_LEVEL_HIGH read-only [12:12] GPIO19_LEVEL_LOW read-only [11:11] GPIO18_EDGE_HIGH read-only [10:10] GPIO18_EDGE_LOW read-only [9:9] GPIO18_LEVEL_HIGH read-only [8:8] GPIO18_LEVEL_LOW read-only [7:7] GPIO17_EDGE_HIGH read-only [6:6] GPIO17_EDGE_LOW read-only [5:5] GPIO17_LEVEL_HIGH read-only [4:4] GPIO17_LEVEL_LOW read-only [3:3] GPIO16_EDGE_HIGH read-only [2:2] GPIO16_EDGE_LOW read-only [1:1] GPIO16_LEVEL_HIGH read-only [0:0] GPIO16_LEVEL_LOW PROC1_INTS2 0x00000000 0x015c Interrupt status after masking & forcing for proc1 read-only [23:23] GPIO29_EDGE_HIGH read-only [22:22] GPIO29_EDGE_LOW read-only [21:21] GPIO29_LEVEL_HIGH read-only [20:20] GPIO29_LEVEL_LOW read-only [19:19] GPIO28_EDGE_HIGH read-only [18:18] GPIO28_EDGE_LOW read-only [17:17] GPIO28_LEVEL_HIGH read-only [16:16] GPIO28_LEVEL_LOW read-only [15:15] GPIO27_EDGE_HIGH read-only [14:14] GPIO27_EDGE_LOW read-only [13:13] GPIO27_LEVEL_HIGH read-only [12:12] GPIO27_LEVEL_LOW read-only [11:11] GPIO26_EDGE_HIGH read-only [10:10] GPIO26_EDGE_LOW read-only [9:9] GPIO26_LEVEL_HIGH read-only [8:8] GPIO26_LEVEL_LOW read-only [7:7] GPIO25_EDGE_HIGH read-only [6:6] GPIO25_EDGE_LOW read-only [5:5] GPIO25_LEVEL_HIGH read-only [4:4] GPIO25_LEVEL_LOW read-only [3:3] GPIO24_EDGE_HIGH read-only [2:2] GPIO24_EDGE_LOW read-only [1:1] GPIO24_LEVEL_HIGH read-only [0:0] GPIO24_LEVEL_LOW PROC1_INTS3 0x00000000 0x0160 Interrupt Enable for dormant_wake read-write [31:31] GPIO7_EDGE_HIGH read-write [30:30] GPIO7_EDGE_LOW read-write [29:29] GPIO7_LEVEL_HIGH read-write [28:28] GPIO7_LEVEL_LOW read-write [27:27] GPIO6_EDGE_HIGH read-write [26:26] GPIO6_EDGE_LOW read-write [25:25] GPIO6_LEVEL_HIGH read-write [24:24] GPIO6_LEVEL_LOW read-write [23:23] GPIO5_EDGE_HIGH read-write [22:22] GPIO5_EDGE_LOW read-write [21:21] GPIO5_LEVEL_HIGH read-write [20:20] GPIO5_LEVEL_LOW read-write [19:19] GPIO4_EDGE_HIGH read-write [18:18] GPIO4_EDGE_LOW read-write [17:17] GPIO4_LEVEL_HIGH read-write [16:16] GPIO4_LEVEL_LOW read-write [15:15] GPIO3_EDGE_HIGH read-write [14:14] GPIO3_EDGE_LOW read-write [13:13] GPIO3_LEVEL_HIGH read-write [12:12] GPIO3_LEVEL_LOW read-write [11:11] GPIO2_EDGE_HIGH read-write [10:10] GPIO2_EDGE_LOW read-write [9:9] GPIO2_LEVEL_HIGH read-write [8:8] GPIO2_LEVEL_LOW read-write [7:7] GPIO1_EDGE_HIGH read-write [6:6] GPIO1_EDGE_LOW read-write [5:5] GPIO1_LEVEL_HIGH read-write [4:4] GPIO1_LEVEL_LOW read-write [3:3] GPIO0_EDGE_HIGH read-write [2:2] GPIO0_EDGE_LOW read-write [1:1] GPIO0_LEVEL_HIGH read-write [0:0] GPIO0_LEVEL_LOW DORMANT_WAKE_INTE0 0x00000000 0x0164 Interrupt Enable for dormant_wake read-write [31:31] GPIO15_EDGE_HIGH read-write [30:30] GPIO15_EDGE_LOW read-write [29:29] GPIO15_LEVEL_HIGH read-write [28:28] GPIO15_LEVEL_LOW read-write [27:27] GPIO14_EDGE_HIGH read-write [26:26] GPIO14_EDGE_LOW read-write [25:25] GPIO14_LEVEL_HIGH read-write [24:24] GPIO14_LEVEL_LOW read-write [23:23] GPIO13_EDGE_HIGH read-write [22:22] GPIO13_EDGE_LOW read-write [21:21] GPIO13_LEVEL_HIGH read-write [20:20] GPIO13_LEVEL_LOW read-write [19:19] GPIO12_EDGE_HIGH read-write [18:18] GPIO12_EDGE_LOW read-write [17:17] GPIO12_LEVEL_HIGH read-write [16:16] GPIO12_LEVEL_LOW read-write [15:15] GPIO11_EDGE_HIGH read-write [14:14] GPIO11_EDGE_LOW read-write [13:13] GPIO11_LEVEL_HIGH read-write [12:12] GPIO11_LEVEL_LOW read-write [11:11] GPIO10_EDGE_HIGH read-write [10:10] GPIO10_EDGE_LOW read-write [9:9] GPIO10_LEVEL_HIGH read-write [8:8] GPIO10_LEVEL_LOW read-write [7:7] GPIO9_EDGE_HIGH read-write [6:6] GPIO9_EDGE_LOW read-write [5:5] GPIO9_LEVEL_HIGH read-write [4:4] GPIO9_LEVEL_LOW read-write [3:3] GPIO8_EDGE_HIGH read-write [2:2] GPIO8_EDGE_LOW read-write [1:1] GPIO8_LEVEL_HIGH read-write [0:0] GPIO8_LEVEL_LOW DORMANT_WAKE_INTE1 0x00000000 0x0168 Interrupt Enable for dormant_wake read-write [31:31] GPIO23_EDGE_HIGH read-write [30:30] GPIO23_EDGE_LOW read-write [29:29] GPIO23_LEVEL_HIGH read-write [28:28] GPIO23_LEVEL_LOW read-write [27:27] GPIO22_EDGE_HIGH read-write [26:26] GPIO22_EDGE_LOW read-write [25:25] GPIO22_LEVEL_HIGH read-write [24:24] GPIO22_LEVEL_LOW read-write [23:23] GPIO21_EDGE_HIGH read-write [22:22] GPIO21_EDGE_LOW read-write [21:21] GPIO21_LEVEL_HIGH read-write [20:20] GPIO21_LEVEL_LOW read-write [19:19] GPIO20_EDGE_HIGH read-write [18:18] GPIO20_EDGE_LOW read-write [17:17] GPIO20_LEVEL_HIGH read-write [16:16] GPIO20_LEVEL_LOW read-write [15:15] GPIO19_EDGE_HIGH read-write [14:14] GPIO19_EDGE_LOW read-write [13:13] GPIO19_LEVEL_HIGH read-write [12:12] GPIO19_LEVEL_LOW read-write [11:11] GPIO18_EDGE_HIGH read-write [10:10] GPIO18_EDGE_LOW read-write [9:9] GPIO18_LEVEL_HIGH read-write [8:8] GPIO18_LEVEL_LOW read-write [7:7] GPIO17_EDGE_HIGH read-write [6:6] GPIO17_EDGE_LOW read-write [5:5] GPIO17_LEVEL_HIGH read-write [4:4] GPIO17_LEVEL_LOW read-write [3:3] GPIO16_EDGE_HIGH read-write [2:2] GPIO16_EDGE_LOW read-write [1:1] GPIO16_LEVEL_HIGH read-write [0:0] GPIO16_LEVEL_LOW DORMANT_WAKE_INTE2 0x00000000 0x016c Interrupt Enable for dormant_wake read-write [23:23] GPIO29_EDGE_HIGH read-write [22:22] GPIO29_EDGE_LOW read-write [21:21] GPIO29_LEVEL_HIGH read-write [20:20] GPIO29_LEVEL_LOW read-write [19:19] GPIO28_EDGE_HIGH read-write [18:18] GPIO28_EDGE_LOW read-write [17:17] GPIO28_LEVEL_HIGH read-write [16:16] GPIO28_LEVEL_LOW read-write [15:15] GPIO27_EDGE_HIGH read-write [14:14] GPIO27_EDGE_LOW read-write [13:13] GPIO27_LEVEL_HIGH read-write [12:12] GPIO27_LEVEL_LOW read-write [11:11] GPIO26_EDGE_HIGH read-write [10:10] GPIO26_EDGE_LOW read-write [9:9] GPIO26_LEVEL_HIGH read-write [8:8] GPIO26_LEVEL_LOW read-write [7:7] GPIO25_EDGE_HIGH read-write [6:6] GPIO25_EDGE_LOW read-write [5:5] GPIO25_LEVEL_HIGH read-write [4:4] GPIO25_LEVEL_LOW read-write [3:3] GPIO24_EDGE_HIGH read-write [2:2] GPIO24_EDGE_LOW read-write [1:1] GPIO24_LEVEL_HIGH read-write [0:0] GPIO24_LEVEL_LOW DORMANT_WAKE_INTE3 0x00000000 0x0170 Interrupt Force for dormant_wake read-write [31:31] GPIO7_EDGE_HIGH read-write [30:30] GPIO7_EDGE_LOW read-write [29:29] GPIO7_LEVEL_HIGH read-write [28:28] GPIO7_LEVEL_LOW read-write [27:27] GPIO6_EDGE_HIGH read-write [26:26] GPIO6_EDGE_LOW read-write [25:25] GPIO6_LEVEL_HIGH read-write [24:24] GPIO6_LEVEL_LOW read-write [23:23] GPIO5_EDGE_HIGH read-write [22:22] GPIO5_EDGE_LOW read-write [21:21] GPIO5_LEVEL_HIGH read-write [20:20] GPIO5_LEVEL_LOW read-write [19:19] GPIO4_EDGE_HIGH read-write [18:18] GPIO4_EDGE_LOW read-write [17:17] GPIO4_LEVEL_HIGH read-write [16:16] GPIO4_LEVEL_LOW read-write [15:15] GPIO3_EDGE_HIGH read-write [14:14] GPIO3_EDGE_LOW read-write [13:13] GPIO3_LEVEL_HIGH read-write [12:12] GPIO3_LEVEL_LOW read-write [11:11] GPIO2_EDGE_HIGH read-write [10:10] GPIO2_EDGE_LOW read-write [9:9] GPIO2_LEVEL_HIGH read-write [8:8] GPIO2_LEVEL_LOW read-write [7:7] GPIO1_EDGE_HIGH read-write [6:6] GPIO1_EDGE_LOW read-write [5:5] GPIO1_LEVEL_HIGH read-write [4:4] GPIO1_LEVEL_LOW read-write [3:3] GPIO0_EDGE_HIGH read-write [2:2] GPIO0_EDGE_LOW read-write [1:1] GPIO0_LEVEL_HIGH read-write [0:0] GPIO0_LEVEL_LOW DORMANT_WAKE_INTF0 0x00000000 0x0174 Interrupt Force for dormant_wake read-write [31:31] GPIO15_EDGE_HIGH read-write [30:30] GPIO15_EDGE_LOW read-write [29:29] GPIO15_LEVEL_HIGH read-write [28:28] GPIO15_LEVEL_LOW read-write [27:27] GPIO14_EDGE_HIGH read-write [26:26] GPIO14_EDGE_LOW read-write [25:25] GPIO14_LEVEL_HIGH read-write [24:24] GPIO14_LEVEL_LOW read-write [23:23] GPIO13_EDGE_HIGH read-write [22:22] GPIO13_EDGE_LOW read-write [21:21] GPIO13_LEVEL_HIGH read-write [20:20] GPIO13_LEVEL_LOW read-write [19:19] GPIO12_EDGE_HIGH read-write [18:18] GPIO12_EDGE_LOW read-write [17:17] GPIO12_LEVEL_HIGH read-write [16:16] GPIO12_LEVEL_LOW read-write [15:15] GPIO11_EDGE_HIGH read-write [14:14] GPIO11_EDGE_LOW read-write [13:13] GPIO11_LEVEL_HIGH read-write [12:12] GPIO11_LEVEL_LOW read-write [11:11] GPIO10_EDGE_HIGH read-write [10:10] GPIO10_EDGE_LOW read-write [9:9] GPIO10_LEVEL_HIGH read-write [8:8] GPIO10_LEVEL_LOW read-write [7:7] GPIO9_EDGE_HIGH read-write [6:6] GPIO9_EDGE_LOW read-write [5:5] GPIO9_LEVEL_HIGH read-write [4:4] GPIO9_LEVEL_LOW read-write [3:3] GPIO8_EDGE_HIGH read-write [2:2] GPIO8_EDGE_LOW read-write [1:1] GPIO8_LEVEL_HIGH read-write [0:0] GPIO8_LEVEL_LOW DORMANT_WAKE_INTF1 0x00000000 0x0178 Interrupt Force for dormant_wake read-write [31:31] GPIO23_EDGE_HIGH read-write [30:30] GPIO23_EDGE_LOW read-write [29:29] GPIO23_LEVEL_HIGH read-write [28:28] GPIO23_LEVEL_LOW read-write [27:27] GPIO22_EDGE_HIGH read-write [26:26] GPIO22_EDGE_LOW read-write [25:25] GPIO22_LEVEL_HIGH read-write [24:24] GPIO22_LEVEL_LOW read-write [23:23] GPIO21_EDGE_HIGH read-write [22:22] GPIO21_EDGE_LOW read-write [21:21] GPIO21_LEVEL_HIGH read-write [20:20] GPIO21_LEVEL_LOW read-write [19:19] GPIO20_EDGE_HIGH read-write [18:18] GPIO20_EDGE_LOW read-write [17:17] GPIO20_LEVEL_HIGH read-write [16:16] GPIO20_LEVEL_LOW read-write [15:15] GPIO19_EDGE_HIGH read-write [14:14] GPIO19_EDGE_LOW read-write [13:13] GPIO19_LEVEL_HIGH read-write [12:12] GPIO19_LEVEL_LOW read-write [11:11] GPIO18_EDGE_HIGH read-write [10:10] GPIO18_EDGE_LOW read-write [9:9] GPIO18_LEVEL_HIGH read-write [8:8] GPIO18_LEVEL_LOW read-write [7:7] GPIO17_EDGE_HIGH read-write [6:6] GPIO17_EDGE_LOW read-write [5:5] GPIO17_LEVEL_HIGH read-write [4:4] GPIO17_LEVEL_LOW read-write [3:3] GPIO16_EDGE_HIGH read-write [2:2] GPIO16_EDGE_LOW read-write [1:1] GPIO16_LEVEL_HIGH read-write [0:0] GPIO16_LEVEL_LOW DORMANT_WAKE_INTF2 0x00000000 0x017c Interrupt Force for dormant_wake read-write [23:23] GPIO29_EDGE_HIGH read-write [22:22] GPIO29_EDGE_LOW read-write [21:21] GPIO29_LEVEL_HIGH read-write [20:20] GPIO29_LEVEL_LOW read-write [19:19] GPIO28_EDGE_HIGH read-write [18:18] GPIO28_EDGE_LOW read-write [17:17] GPIO28_LEVEL_HIGH read-write [16:16] GPIO28_LEVEL_LOW read-write [15:15] GPIO27_EDGE_HIGH read-write [14:14] GPIO27_EDGE_LOW read-write [13:13] GPIO27_LEVEL_HIGH read-write [12:12] GPIO27_LEVEL_LOW read-write [11:11] GPIO26_EDGE_HIGH read-write [10:10] GPIO26_EDGE_LOW read-write [9:9] GPIO26_LEVEL_HIGH read-write [8:8] GPIO26_LEVEL_LOW read-write [7:7] GPIO25_EDGE_HIGH read-write [6:6] GPIO25_EDGE_LOW read-write [5:5] GPIO25_LEVEL_HIGH read-write [4:4] GPIO25_LEVEL_LOW read-write [3:3] GPIO24_EDGE_HIGH read-write [2:2] GPIO24_EDGE_LOW read-write [1:1] GPIO24_LEVEL_HIGH read-write [0:0] GPIO24_LEVEL_LOW DORMANT_WAKE_INTF3 0x00000000 0x0180 Interrupt status after masking & forcing for dormant_wake read-only [31:31] GPIO7_EDGE_HIGH read-only [30:30] GPIO7_EDGE_LOW read-only [29:29] GPIO7_LEVEL_HIGH read-only [28:28] GPIO7_LEVEL_LOW read-only [27:27] GPIO6_EDGE_HIGH read-only [26:26] GPIO6_EDGE_LOW read-only [25:25] GPIO6_LEVEL_HIGH read-only [24:24] GPIO6_LEVEL_LOW read-only [23:23] GPIO5_EDGE_HIGH read-only [22:22] GPIO5_EDGE_LOW read-only [21:21] GPIO5_LEVEL_HIGH read-only [20:20] GPIO5_LEVEL_LOW read-only [19:19] GPIO4_EDGE_HIGH read-only [18:18] GPIO4_EDGE_LOW read-only [17:17] GPIO4_LEVEL_HIGH read-only [16:16] GPIO4_LEVEL_LOW read-only [15:15] GPIO3_EDGE_HIGH read-only [14:14] GPIO3_EDGE_LOW read-only [13:13] GPIO3_LEVEL_HIGH read-only [12:12] GPIO3_LEVEL_LOW read-only [11:11] GPIO2_EDGE_HIGH read-only [10:10] GPIO2_EDGE_LOW read-only [9:9] GPIO2_LEVEL_HIGH read-only [8:8] GPIO2_LEVEL_LOW read-only [7:7] GPIO1_EDGE_HIGH read-only [6:6] GPIO1_EDGE_LOW read-only [5:5] GPIO1_LEVEL_HIGH read-only [4:4] GPIO1_LEVEL_LOW read-only [3:3] GPIO0_EDGE_HIGH read-only [2:2] GPIO0_EDGE_LOW read-only [1:1] GPIO0_LEVEL_HIGH read-only [0:0] GPIO0_LEVEL_LOW DORMANT_WAKE_INTS0 0x00000000 0x0184 Interrupt status after masking & forcing for dormant_wake read-only [31:31] GPIO15_EDGE_HIGH read-only [30:30] GPIO15_EDGE_LOW read-only [29:29] GPIO15_LEVEL_HIGH read-only [28:28] GPIO15_LEVEL_LOW read-only [27:27] GPIO14_EDGE_HIGH read-only [26:26] GPIO14_EDGE_LOW read-only [25:25] GPIO14_LEVEL_HIGH read-only [24:24] GPIO14_LEVEL_LOW read-only [23:23] GPIO13_EDGE_HIGH read-only [22:22] GPIO13_EDGE_LOW read-only [21:21] GPIO13_LEVEL_HIGH read-only [20:20] GPIO13_LEVEL_LOW read-only [19:19] GPIO12_EDGE_HIGH read-only [18:18] GPIO12_EDGE_LOW read-only [17:17] GPIO12_LEVEL_HIGH read-only [16:16] GPIO12_LEVEL_LOW read-only [15:15] GPIO11_EDGE_HIGH read-only [14:14] GPIO11_EDGE_LOW read-only [13:13] GPIO11_LEVEL_HIGH read-only [12:12] GPIO11_LEVEL_LOW read-only [11:11] GPIO10_EDGE_HIGH read-only [10:10] GPIO10_EDGE_LOW read-only [9:9] GPIO10_LEVEL_HIGH read-only [8:8] GPIO10_LEVEL_LOW read-only [7:7] GPIO9_EDGE_HIGH read-only [6:6] GPIO9_EDGE_LOW read-only [5:5] GPIO9_LEVEL_HIGH read-only [4:4] GPIO9_LEVEL_LOW read-only [3:3] GPIO8_EDGE_HIGH read-only [2:2] GPIO8_EDGE_LOW read-only [1:1] GPIO8_LEVEL_HIGH read-only [0:0] GPIO8_LEVEL_LOW DORMANT_WAKE_INTS1 0x00000000 0x0188 Interrupt status after masking & forcing for dormant_wake read-only [31:31] GPIO23_EDGE_HIGH read-only [30:30] GPIO23_EDGE_LOW read-only [29:29] GPIO23_LEVEL_HIGH read-only [28:28] GPIO23_LEVEL_LOW read-only [27:27] GPIO22_EDGE_HIGH read-only [26:26] GPIO22_EDGE_LOW read-only [25:25] GPIO22_LEVEL_HIGH read-only [24:24] GPIO22_LEVEL_LOW read-only [23:23] GPIO21_EDGE_HIGH read-only [22:22] GPIO21_EDGE_LOW read-only [21:21] GPIO21_LEVEL_HIGH read-only [20:20] GPIO21_LEVEL_LOW read-only [19:19] GPIO20_EDGE_HIGH read-only [18:18] GPIO20_EDGE_LOW read-only [17:17] GPIO20_LEVEL_HIGH read-only [16:16] GPIO20_LEVEL_LOW read-only [15:15] GPIO19_EDGE_HIGH read-only [14:14] GPIO19_EDGE_LOW read-only [13:13] GPIO19_LEVEL_HIGH read-only [12:12] GPIO19_LEVEL_LOW read-only [11:11] GPIO18_EDGE_HIGH read-only [10:10] GPIO18_EDGE_LOW read-only [9:9] GPIO18_LEVEL_HIGH read-only [8:8] GPIO18_LEVEL_LOW read-only [7:7] GPIO17_EDGE_HIGH read-only [6:6] GPIO17_EDGE_LOW read-only [5:5] GPIO17_LEVEL_HIGH read-only [4:4] GPIO17_LEVEL_LOW read-only [3:3] GPIO16_EDGE_HIGH read-only [2:2] GPIO16_EDGE_LOW read-only [1:1] GPIO16_LEVEL_HIGH read-only [0:0] GPIO16_LEVEL_LOW DORMANT_WAKE_INTS2 0x00000000 0x018c Interrupt status after masking & forcing for dormant_wake read-only [23:23] GPIO29_EDGE_HIGH read-only [22:22] GPIO29_EDGE_LOW read-only [21:21] GPIO29_LEVEL_HIGH read-only [20:20] GPIO29_LEVEL_LOW read-only [19:19] GPIO28_EDGE_HIGH read-only [18:18] GPIO28_EDGE_LOW read-only [17:17] GPIO28_LEVEL_HIGH read-only [16:16] GPIO28_LEVEL_LOW read-only [15:15] GPIO27_EDGE_HIGH read-only [14:14] GPIO27_EDGE_LOW read-only [13:13] GPIO27_LEVEL_HIGH read-only [12:12] GPIO27_LEVEL_LOW read-only [11:11] GPIO26_EDGE_HIGH read-only [10:10] GPIO26_EDGE_LOW read-only [9:9] GPIO26_LEVEL_HIGH read-only [8:8] GPIO26_LEVEL_LOW read-only [7:7] GPIO25_EDGE_HIGH read-only [6:6] GPIO25_EDGE_LOW read-only [5:5] GPIO25_LEVEL_HIGH read-only [4:4] GPIO25_LEVEL_LOW read-only [3:3] GPIO24_EDGE_HIGH read-only [2:2] GPIO24_EDGE_LOW read-only [1:1] GPIO24_LEVEL_HIGH read-only [0:0] GPIO24_LEVEL_LOW DORMANT_WAKE_INTS3 0x00000000 32 1 0 0x1000 registers 0x40018000 IO_IRQ_QSPI 14 IO_QSPI 0x0000 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO_QSPI_SCLK_STATUS 0x00000000 0x0004 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL xip_sclk 0 sio_30 5 null 31 FUNCSEL GPIO_QSPI_SCLK_CTRL 0x0000001f 0x0008 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO_QSPI_SS_STATUS 0x00000000 0x000c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL xip_ss_n 0 sio_31 5 null 31 FUNCSEL GPIO_QSPI_SS_CTRL 0x0000001f 0x0010 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO_QSPI_SD0_STATUS 0x00000000 0x0014 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL xip_sd0 0 sio_32 5 null 31 FUNCSEL GPIO_QSPI_SD0_CTRL 0x0000001f 0x0018 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO_QSPI_SD1_STATUS 0x00000000 0x001c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL xip_sd1 0 sio_33 5 null 31 FUNCSEL GPIO_QSPI_SD1_CTRL 0x0000001f 0x0020 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO_QSPI_SD2_STATUS 0x00000000 0x0024 GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL xip_sd2 0 sio_34 5 null 31 FUNCSEL GPIO_QSPI_SD2_CTRL 0x0000001f 0x0028 GPIO status read-only [26:26] interrupt to processors, after override is applied IRQTOPROC read-only [24:24] interrupt from pad before override is applied IRQFROMPAD read-only [19:19] input signal to peripheral, after override is applied INTOPERI read-only [17:17] input signal from pad, before override is applied INFROMPAD read-only [13:13] output enable to pad after register override is applied OETOPAD read-only [12:12] output enable from selected peripheral, before register override is applied OEFROMPERI read-only [9:9] output signal to pad after register override is applied OUTTOPAD read-only [8:8] output signal from selected peripheral, before register override is applied OUTFROMPERI GPIO_QSPI_SD3_STATUS 0x00000000 0x002c GPIO control including function select and overrides. read-write [29:28] don't invert the interrupt NORMAL 0 invert the interrupt INVERT 1 drive interrupt low LOW 2 drive interrupt high HIGH 3 IRQOVER read-write [17:16] don't invert the peri input NORMAL 0 invert the peri input INVERT 1 drive peri input low LOW 2 drive peri input high HIGH 3 INOVER read-write [13:12] drive output enable from peripheral signal selected by funcsel NORMAL 0 drive output enable from inverse of peripheral signal selected by funcsel INVERT 1 disable output DISABLE 2 enable output ENABLE 3 OEOVER read-write [9:8] drive output from peripheral signal selected by funcsel NORMAL 0 drive output from inverse of peripheral signal selected by funcsel INVERT 1 drive output low LOW 2 drive output high HIGH 3 OUTOVER read-write [4:0] 0-31 -> selects pin function according to the gpio table\n 31 == NULL xip_sd3 0 sio_35 5 null 31 FUNCSEL GPIO_QSPI_SD3_CTRL 0x0000001f 0x0030 Raw Interrupts read-write [23:23] oneToClear GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] oneToClear GPIO_QSPI_SD3_EDGE_LOW read-only [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-only [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] oneToClear GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] oneToClear GPIO_QSPI_SD2_EDGE_LOW read-only [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-only [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] oneToClear GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] oneToClear GPIO_QSPI_SD1_EDGE_LOW read-only [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-only [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] oneToClear GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] oneToClear GPIO_QSPI_SD0_EDGE_LOW read-only [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-only [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] oneToClear GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] oneToClear GPIO_QSPI_SS_EDGE_LOW read-only [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-only [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] oneToClear GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] oneToClear GPIO_QSPI_SCLK_EDGE_LOW read-only [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-only [0:0] GPIO_QSPI_SCLK_LEVEL_LOW INTR 0x00000000 0x0034 Interrupt Enable for proc0 read-write [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] GPIO_QSPI_SD3_EDGE_LOW read-write [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-write [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] GPIO_QSPI_SD2_EDGE_LOW read-write [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-write [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] GPIO_QSPI_SD1_EDGE_LOW read-write [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-write [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] GPIO_QSPI_SD0_EDGE_LOW read-write [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-write [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] GPIO_QSPI_SS_EDGE_LOW read-write [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-write [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-write [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-write [0:0] GPIO_QSPI_SCLK_LEVEL_LOW PROC0_INTE 0x00000000 0x0038 Interrupt Force for proc0 read-write [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] GPIO_QSPI_SD3_EDGE_LOW read-write [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-write [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] GPIO_QSPI_SD2_EDGE_LOW read-write [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-write [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] GPIO_QSPI_SD1_EDGE_LOW read-write [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-write [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] GPIO_QSPI_SD0_EDGE_LOW read-write [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-write [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] GPIO_QSPI_SS_EDGE_LOW read-write [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-write [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-write [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-write [0:0] GPIO_QSPI_SCLK_LEVEL_LOW PROC0_INTF 0x00000000 0x003c Interrupt status after masking & forcing for proc0 read-only [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-only [22:22] GPIO_QSPI_SD3_EDGE_LOW read-only [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-only [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-only [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-only [18:18] GPIO_QSPI_SD2_EDGE_LOW read-only [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-only [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-only [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-only [14:14] GPIO_QSPI_SD1_EDGE_LOW read-only [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-only [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-only [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-only [10:10] GPIO_QSPI_SD0_EDGE_LOW read-only [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-only [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-only [7:7] GPIO_QSPI_SS_EDGE_HIGH read-only [6:6] GPIO_QSPI_SS_EDGE_LOW read-only [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-only [4:4] GPIO_QSPI_SS_LEVEL_LOW read-only [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-only [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-only [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-only [0:0] GPIO_QSPI_SCLK_LEVEL_LOW PROC0_INTS 0x00000000 0x0040 Interrupt Enable for proc1 read-write [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] GPIO_QSPI_SD3_EDGE_LOW read-write [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-write [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] GPIO_QSPI_SD2_EDGE_LOW read-write [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-write [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] GPIO_QSPI_SD1_EDGE_LOW read-write [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-write [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] GPIO_QSPI_SD0_EDGE_LOW read-write [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-write [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] GPIO_QSPI_SS_EDGE_LOW read-write [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-write [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-write [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-write [0:0] GPIO_QSPI_SCLK_LEVEL_LOW PROC1_INTE 0x00000000 0x0044 Interrupt Force for proc1 read-write [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] GPIO_QSPI_SD3_EDGE_LOW read-write [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-write [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] GPIO_QSPI_SD2_EDGE_LOW read-write [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-write [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] GPIO_QSPI_SD1_EDGE_LOW read-write [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-write [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] GPIO_QSPI_SD0_EDGE_LOW read-write [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-write [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] GPIO_QSPI_SS_EDGE_LOW read-write [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-write [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-write [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-write [0:0] GPIO_QSPI_SCLK_LEVEL_LOW PROC1_INTF 0x00000000 0x0048 Interrupt status after masking & forcing for proc1 read-only [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-only [22:22] GPIO_QSPI_SD3_EDGE_LOW read-only [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-only [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-only [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-only [18:18] GPIO_QSPI_SD2_EDGE_LOW read-only [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-only [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-only [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-only [14:14] GPIO_QSPI_SD1_EDGE_LOW read-only [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-only [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-only [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-only [10:10] GPIO_QSPI_SD0_EDGE_LOW read-only [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-only [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-only [7:7] GPIO_QSPI_SS_EDGE_HIGH read-only [6:6] GPIO_QSPI_SS_EDGE_LOW read-only [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-only [4:4] GPIO_QSPI_SS_LEVEL_LOW read-only [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-only [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-only [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-only [0:0] GPIO_QSPI_SCLK_LEVEL_LOW PROC1_INTS 0x00000000 0x004c Interrupt Enable for dormant_wake read-write [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] GPIO_QSPI_SD3_EDGE_LOW read-write [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-write [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] GPIO_QSPI_SD2_EDGE_LOW read-write [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-write [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] GPIO_QSPI_SD1_EDGE_LOW read-write [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-write [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] GPIO_QSPI_SD0_EDGE_LOW read-write [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-write [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] GPIO_QSPI_SS_EDGE_LOW read-write [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-write [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-write [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-write [0:0] GPIO_QSPI_SCLK_LEVEL_LOW DORMANT_WAKE_INTE 0x00000000 0x0050 Interrupt Force for dormant_wake read-write [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-write [22:22] GPIO_QSPI_SD3_EDGE_LOW read-write [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-write [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-write [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-write [18:18] GPIO_QSPI_SD2_EDGE_LOW read-write [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-write [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-write [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-write [14:14] GPIO_QSPI_SD1_EDGE_LOW read-write [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-write [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-write [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-write [10:10] GPIO_QSPI_SD0_EDGE_LOW read-write [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-write [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-write [7:7] GPIO_QSPI_SS_EDGE_HIGH read-write [6:6] GPIO_QSPI_SS_EDGE_LOW read-write [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-write [4:4] GPIO_QSPI_SS_LEVEL_LOW read-write [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-write [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-write [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-write [0:0] GPIO_QSPI_SCLK_LEVEL_LOW DORMANT_WAKE_INTF 0x00000000 0x0054 Interrupt status after masking & forcing for dormant_wake read-only [23:23] GPIO_QSPI_SD3_EDGE_HIGH read-only [22:22] GPIO_QSPI_SD3_EDGE_LOW read-only [21:21] GPIO_QSPI_SD3_LEVEL_HIGH read-only [20:20] GPIO_QSPI_SD3_LEVEL_LOW read-only [19:19] GPIO_QSPI_SD2_EDGE_HIGH read-only [18:18] GPIO_QSPI_SD2_EDGE_LOW read-only [17:17] GPIO_QSPI_SD2_LEVEL_HIGH read-only [16:16] GPIO_QSPI_SD2_LEVEL_LOW read-only [15:15] GPIO_QSPI_SD1_EDGE_HIGH read-only [14:14] GPIO_QSPI_SD1_EDGE_LOW read-only [13:13] GPIO_QSPI_SD1_LEVEL_HIGH read-only [12:12] GPIO_QSPI_SD1_LEVEL_LOW read-only [11:11] GPIO_QSPI_SD0_EDGE_HIGH read-only [10:10] GPIO_QSPI_SD0_EDGE_LOW read-only [9:9] GPIO_QSPI_SD0_LEVEL_HIGH read-only [8:8] GPIO_QSPI_SD0_LEVEL_LOW read-only [7:7] GPIO_QSPI_SS_EDGE_HIGH read-only [6:6] GPIO_QSPI_SS_EDGE_LOW read-only [5:5] GPIO_QSPI_SS_LEVEL_HIGH read-only [4:4] GPIO_QSPI_SS_LEVEL_LOW read-only [3:3] GPIO_QSPI_SCLK_EDGE_HIGH read-only [2:2] GPIO_QSPI_SCLK_EDGE_LOW read-only [1:1] GPIO_QSPI_SCLK_LEVEL_HIGH read-only [0:0] GPIO_QSPI_SCLK_LEVEL_LOW DORMANT_WAKE_INTS 0x00000000 32 1 0 0x1000 registers 0x4001c000 PADS_BANK0 0x0000 Voltage select. Per bank control read-write [0:0] Set voltage to 3.3V (DVDD >= 2V5) 3v3 0 Set voltage to 1.8V (DVDD <= 1V8) 1v8 1 VOLTAGE_SELECT VOLTAGE_SELECT 0x00000000 0x0004 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO0 0x00000056 0x0008 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO1 0x00000056 0x000c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO2 0x00000056 0x0010 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO3 0x00000056 0x0014 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO4 0x00000056 0x0018 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO5 0x00000056 0x001c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO6 0x00000056 0x0020 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO7 0x00000056 0x0024 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO8 0x00000056 0x0028 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO9 0x00000056 0x002c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO10 0x00000056 0x0030 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO11 0x00000056 0x0034 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO12 0x00000056 0x0038 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO13 0x00000056 0x003c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO14 0x00000056 0x0040 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO15 0x00000056 0x0044 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO16 0x00000056 0x0048 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO17 0x00000056 0x004c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO18 0x00000056 0x0050 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO19 0x00000056 0x0054 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO20 0x00000056 0x0058 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO21 0x00000056 0x005c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO22 0x00000056 0x0060 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO23 0x00000056 0x0064 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO24 0x00000056 0x0068 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO25 0x00000056 0x006c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO26 0x00000056 0x0070 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO27 0x00000056 0x0074 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO28 0x00000056 0x0078 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO29 0x00000056 0x007c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST SWCLK 0x000000da 0x0080 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST SWD 0x0000005a 32 1 0 0x1000 registers 0x40020000 PADS_QSPI 0x0000 Voltage select. Per bank control read-write [0:0] Set voltage to 3.3V (DVDD >= 2V5) 3v3 0 Set voltage to 1.8V (DVDD <= 1V8) 1v8 1 VOLTAGE_SELECT VOLTAGE_SELECT 0x00000000 0x0004 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO_QSPI_SCLK 0x00000056 0x0008 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO_QSPI_SD0 0x00000052 0x000c Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO_QSPI_SD1 0x00000052 0x0010 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO_QSPI_SD2 0x00000052 0x0014 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO_QSPI_SD3 0x00000052 0x0018 Pad control register read-write [7:7] Output disable. Has priority over output enable from peripherals OD read-write [6:6] Input enable IE read-write [5:4] Drive strength. 2mA 0 4mA 1 8mA 2 12mA 3 DRIVE read-write [3:3] Pull up enable PUE read-write [2:2] Pull down enable PDE read-write [1:1] Enable schmitt trigger SCHMITT read-write [0:0] Slew rate control. 1 = Fast, 0 = Slow SLEWFAST GPIO_QSPI_SS 0x0000005a 32 1 0 0x1000 registers 0x40024000 Controls the crystal oscillator XOSC 0x0000 Crystal Oscillator Control read-write [23:12] On power-up this field is initialised to DISABLE and the chip runs from the ROSC.\n If the chip has subsequently been programmed to run from the XOSC then setting this field to DISABLE may lock-up the chip. If this is a concern then run the clk_ref from the ROSC and enable the clk_sys RESUS feature.\n The 12-bit code is intended to give some protection against accidental writes. An invalid setting will enable the oscillator. DISABLE 3358 ENABLE 4011 ENABLE read-write [11:0] Frequency range. This resets to 0xAA0 and cannot be changed. 1_15MHZ 2720 RESERVED_1 2721 RESERVED_2 2722 RESERVED_3 2723 FREQ_RANGE CTRL 0x00000000 0x0004 Crystal Oscillator Status read-only [31:31] Oscillator is running and stable STABLE read-write [24:24] An invalid value has been written to CTRL_ENABLE or CTRL_FREQ_RANGE or DORMANT oneToClear BADWRITE read-only [12:12] Oscillator is enabled but not necessarily running and stable, resets to 0 ENABLED read-only [1:0] The current frequency range setting, always reads 0 1_15MHZ 0 RESERVED_1 1 RESERVED_2 2 RESERVED_3 3 FREQ_RANGE STATUS 0x00000000 read-write 0x0008 Crystal Oscillator pause control\n This is used to save power by pausing the XOSC\n On power-up this field is initialised to WAKE\n An invalid write will also select WAKE\n WARNING: stop the PLLs before selecting dormant mode\n WARNING: setup the irq before selecting dormant mode DORMANT 0x00000000 0x000c Controls the startup delay read-write [20:20] Multiplies the startup_delay by 4. This is of little value to the user given that the delay can be programmed directly X4 read-write [13:0] in multiples of 256*xtal_period DELAY STARTUP 0x00000000 0x001c A down counter running at the xosc frequency which counts to zero and stops.\n To start the counter write a non-zero value.\n Can be used for short software pauses when setting up time sensitive hardware. read-write [7:0] COUNT COUNT 0x00000000 32 1 0 0x1000 registers 0x40028000 PLL_SYS 0x0000 Control and Status\n GENERAL CONSTRAINTS:\n Reference clock frequency min=5MHz, max=800MHz\n Feedback divider min=16, max=320\n VCO frequency min=400MHz, max=1600MHz read-only [31:31] PLL is locked LOCK read-write [8:8] Passes the reference clock to the output instead of the divided VCO. The VCO continues to run so the user can switch between the reference clock and the divided VCO but the output will glitch when doing so. BYPASS read-write [5:0] Divides the PLL input reference clock.\n Behaviour is undefined for div=0.\n PLL output will be unpredictable during refdiv changes, wait for lock=1 before using it. REFDIV CS 0x00000001 0x0004 Controls the PLL power modes. read-write [5:5] PLL VCO powerdown\n To save power set high when PLL output not required or bypass=1. VCOPD read-write [3:3] PLL post divider powerdown\n To save power set high when PLL output not required or bypass=1. POSTDIVPD read-write [2:2] PLL DSM powerdown\n Nothing is achieved by setting this low. DSMPD read-write [0:0] PLL powerdown\n To save power set high when PLL output not required. PD PWR 0x0000002d 0x0008 Feedback divisor\n (note: this PLL does not support fractional division) read-write [11:0] see ctrl reg description for constraints FBDIV_INT FBDIV_INT 0x00000000 0x000c Controls the PLL post dividers for the primary output\n (note: this PLL does not have a secondary output)\n the primary output is driven from VCO divided by postdiv1*postdiv2 read-write [18:16] divide by 1-7 POSTDIV1 read-write [14:12] divide by 1-7 POSTDIV2 PRIM 0x00077000 32 1 0x4002c000 PLL_USB 0 0x1000 registers 0x40030000 Register block for busfabric control signals and performance counters BUSCTRL 0x0000 Set the priority of each master for bus arbitration. read-write [12:12] 0 - low priority, 1 - high priority DMA_W read-write [8:8] 0 - low priority, 1 - high priority DMA_R read-write [4:4] 0 - low priority, 1 - high priority PROC1 read-write [0:0] 0 - low priority, 1 - high priority PROC0 BUS_PRIORITY 0x00000000 0x0004 Bus priority acknowledge read-only [0:0] Goes to 1 once all arbiters have registered the new global priority levels.\n Arbiters update their local priority when servicing a new nonsequential access.\n In normal circumstances this will happen almost immediately. BUS_PRIORITY_ACK BUS_PRIORITY_ACK 0x00000000 0x0008 Bus fabric performance counter 0 read-write [23:0] Busfabric saturating performance counter 0\n Count some event signal from the busfabric arbiters.\n Write any value to clear. Select an event to count using PERFSEL0 oneToClear PERFCTR0 PERFCTR0 0x00000000 0x000c Bus fabric performance event select for PERFCTR0 read-write [4:0] Select an event for PERFCTR0. Count either contested accesses, or all accesses, on a downstream port of the main crossbar. apb_contested 0 apb 1 fastperi_contested 2 fastperi 3 sram5_contested 4 sram5 5 sram4_contested 6 sram4 7 sram3_contested 8 sram3 9 sram2_contested 10 sram2 11 sram1_contested 12 sram1 13 sram0_contested 14 sram0 15 xip_main_contested 16 xip_main 17 rom_contested 18 rom 19 PERFSEL0 PERFSEL0 0x0000001f 0x0010 Bus fabric performance counter 1 read-write [23:0] Busfabric saturating performance counter 1\n Count some event signal from the busfabric arbiters.\n Write any value to clear. Select an event to count using PERFSEL1 oneToClear PERFCTR1 PERFCTR1 0x00000000 0x0014 Bus fabric performance event select for PERFCTR1 read-write [4:0] Select an event for PERFCTR1. Count either contested accesses, or all accesses, on a downstream port of the main crossbar. apb_contested 0 apb 1 fastperi_contested 2 fastperi 3 sram5_contested 4 sram5 5 sram4_contested 6 sram4 7 sram3_contested 8 sram3 9 sram2_contested 10 sram2 11 sram1_contested 12 sram1 13 sram0_contested 14 sram0 15 xip_main_contested 16 xip_main 17 rom_contested 18 rom 19 PERFSEL1 PERFSEL1 0x0000001f 0x0018 Bus fabric performance counter 2 read-write [23:0] Busfabric saturating performance counter 2\n Count some event signal from the busfabric arbiters.\n Write any value to clear. Select an event to count using PERFSEL2 oneToClear PERFCTR2 PERFCTR2 0x00000000 0x001c Bus fabric performance event select for PERFCTR2 read-write [4:0] Select an event for PERFCTR2. Count either contested accesses, or all accesses, on a downstream port of the main crossbar. apb_contested 0 apb 1 fastperi_contested 2 fastperi 3 sram5_contested 4 sram5 5 sram4_contested 6 sram4 7 sram3_contested 8 sram3 9 sram2_contested 10 sram2 11 sram1_contested 12 sram1 13 sram0_contested 14 sram0 15 xip_main_contested 16 xip_main 17 rom_contested 18 rom 19 PERFSEL2 PERFSEL2 0x0000001f 0x0020 Bus fabric performance counter 3 read-write [23:0] Busfabric saturating performance counter 3\n Count some event signal from the busfabric arbiters.\n Write any value to clear. Select an event to count using PERFSEL3 oneToClear PERFCTR3 PERFCTR3 0x00000000 0x0024 Bus fabric performance event select for PERFCTR3 read-write [4:0] Select an event for PERFCTR3. Count either contested accesses, or all accesses, on a downstream port of the main crossbar. apb_contested 0 apb 1 fastperi_contested 2 fastperi 3 sram5_contested 4 sram5 5 sram4_contested 6 sram4 7 sram3_contested 8 sram3 9 sram2_contested 10 sram2 11 sram1_contested 12 sram1 13 sram0_contested 14 sram0 15 xip_main_contested 16 xip_main 17 rom_contested 18 rom 19 PERFSEL3 PERFSEL3 0x0000001f 32 1 0 0x1000 registers 0x40034000 UART0_IRQ 20 UART0 0x0000 Data Register, UARTDR read-only [11:11] Overrun error. This bit is set to 1 if data is received and the receive FIFO is already full. This is cleared to 0 once there is an empty space in the FIFO and a new character can be written to it. OE read-only [10:10] Break error. This bit is set to 1 if a break condition was detected, indicating that the received data input was held LOW for longer than a full-word transmission time (defined as start, data, parity and stop bits). In FIFO mode, this error is associated with the character at the top of the FIFO. When a break occurs, only one 0 character is loaded into the FIFO. The next character is only enabled after the receive data input goes to a 1 (marking state), and the next valid start bit is received. BE read-only [9:9] Parity error. When set to 1, it indicates that the parity of the received data character does not match the parity that the EPS and SPS bits in the Line Control Register, UARTLCR_H. In FIFO mode, this error is associated with the character at the top of the FIFO. PE read-only [8:8] Framing error. When set to 1, it indicates that the received character did not have a valid stop bit (a valid stop bit is 1). In FIFO mode, this error is associated with the character at the top of the FIFO. FE read-write [7:0] Receive (read) data character. Transmit (write) data character. DATA UARTDR 0x00000000 0x0004 Receive Status Register/Error Clear Register, UARTRSR/UARTECR read-write [3:3] Overrun error. This bit is set to 1 if data is received and the FIFO is already full. This bit is cleared to 0 by a write to UARTECR. The FIFO contents remain valid because no more data is written when the FIFO is full, only the contents of the shift register are overwritten. The CPU must now read the data, to empty the FIFO. oneToClear OE read-write [2:2] Break error. This bit is set to 1 if a break condition was detected, indicating that the received data input was held LOW for longer than a full-word transmission time (defined as start, data, parity, and stop bits). This bit is cleared to 0 after a write to UARTECR. In FIFO mode, this error is associated with the character at the top of the FIFO. When a break occurs, only one 0 character is loaded into the FIFO. The next character is only enabled after the receive data input goes to a 1 (marking state) and the next valid start bit is received. oneToClear BE read-write [1:1] Parity error. When set to 1, it indicates that the parity of the received data character does not match the parity that the EPS and SPS bits in the Line Control Register, UARTLCR_H. This bit is cleared to 0 by a write to UARTECR. In FIFO mode, this error is associated with the character at the top of the FIFO. oneToClear PE read-write [0:0] Framing error. When set to 1, it indicates that the received character did not have a valid stop bit (a valid stop bit is 1). This bit is cleared to 0 by a write to UARTECR. In FIFO mode, this error is associated with the character at the top of the FIFO. oneToClear FE UARTRSR 0x00000000 0x0018 Flag Register, UARTFR read-only [8:8] Ring indicator. This bit is the complement of the UART ring indicator, nUARTRI, modem status input. That is, the bit is 1 when nUARTRI is LOW. RI read-only [7:7] Transmit FIFO empty. The meaning of this bit depends on the state of the FEN bit in the Line Control Register, UARTLCR_H. If the FIFO is disabled, this bit is set when the transmit holding register is empty. If the FIFO is enabled, the TXFE bit is set when the transmit FIFO is empty. This bit does not indicate if there is data in the transmit shift register. TXFE read-only [6:6] Receive FIFO full. The meaning of this bit depends on the state of the FEN bit in the UARTLCR_H Register. If the FIFO is disabled, this bit is set when the receive holding register is full. If the FIFO is enabled, the RXFF bit is set when the receive FIFO is full. RXFF read-only [5:5] Transmit FIFO full. The meaning of this bit depends on the state of the FEN bit in the UARTLCR_H Register. If the FIFO is disabled, this bit is set when the transmit holding register is full. If the FIFO is enabled, the TXFF bit is set when the transmit FIFO is full. TXFF read-only [4:4] Receive FIFO empty. The meaning of this bit depends on the state of the FEN bit in the UARTLCR_H Register. If the FIFO is disabled, this bit is set when the receive holding register is empty. If the FIFO is enabled, the RXFE bit is set when the receive FIFO is empty. RXFE read-only [3:3] UART busy. If this bit is set to 1, the UART is busy transmitting data. This bit remains set until the complete byte, including all the stop bits, has been sent from the shift register. This bit is set as soon as the transmit FIFO becomes non-empty, regardless of whether the UART is enabled or not. BUSY read-only [2:2] Data carrier detect. This bit is the complement of the UART data carrier detect, nUARTDCD, modem status input. That is, the bit is 1 when nUARTDCD is LOW. DCD read-only [1:1] Data set ready. This bit is the complement of the UART data set ready, nUARTDSR, modem status input. That is, the bit is 1 when nUARTDSR is LOW. DSR read-only [0:0] Clear to send. This bit is the complement of the UART clear to send, nUARTCTS, modem status input. That is, the bit is 1 when nUARTCTS is LOW. CTS UARTFR 0x00000090 0x0020 IrDA Low-Power Counter Register, UARTILPR read-write [7:0] 8-bit low-power divisor value. These bits are cleared to 0 at reset. ILPDVSR UARTILPR 0x00000000 0x0024 Integer Baud Rate Register, UARTIBRD read-write [15:0] The integer baud rate divisor. These bits are cleared to 0 on reset. BAUD_DIVINT UARTIBRD 0x00000000 0x0028 Fractional Baud Rate Register, UARTFBRD read-write [5:0] The fractional baud rate divisor. These bits are cleared to 0 on reset. BAUD_DIVFRAC UARTFBRD 0x00000000 0x002c Line Control Register, UARTLCR_H read-write [7:7] Stick parity select. 0 = stick parity is disabled 1 = either: * if the EPS bit is 0 then the parity bit is transmitted and checked as a 1 * if the EPS bit is 1 then the parity bit is transmitted and checked as a 0. This bit has no effect when the PEN bit disables parity checking and generation. SPS read-write [6:5] Word length. These bits indicate the number of data bits transmitted or received in a frame as follows: b11 = 8 bits b10 = 7 bits b01 = 6 bits b00 = 5 bits. WLEN read-write [4:4] Enable FIFOs: 0 = FIFOs are disabled (character mode) that is, the FIFOs become 1-byte-deep holding registers 1 = transmit and receive FIFO buffers are enabled (FIFO mode). FEN read-write [3:3] Two stop bits select. If this bit is set to 1, two stop bits are transmitted at the end of the frame. The receive logic does not check for two stop bits being received. STP2 read-write [2:2] Even parity select. Controls the type of parity the UART uses during transmission and reception: 0 = odd parity. The UART generates or checks for an odd number of 1s in the data and parity bits. 1 = even parity. The UART generates or checks for an even number of 1s in the data and parity bits. This bit has no effect when the PEN bit disables parity checking and generation. EPS read-write [1:1] Parity enable: 0 = parity is disabled and no parity bit added to the data frame 1 = parity checking and generation is enabled. PEN read-write [0:0] Send break. If this bit is set to 1, a low-level is continually output on the UARTTXD output, after completing transmission of the current character. For the proper execution of the break command, the software must set this bit for at least two complete frames. For normal use, this bit must be cleared to 0. BRK UARTLCR_H 0x00000000 0x0030 Control Register, UARTCR read-write [15:15] CTS hardware flow control enable. If this bit is set to 1, CTS hardware flow control is enabled. Data is only transmitted when the nUARTCTS signal is asserted. CTSEN read-write [14:14] RTS hardware flow control enable. If this bit is set to 1, RTS hardware flow control is enabled. Data is only requested when there is space in the receive FIFO for it to be received. RTSEN read-write [13:13] This bit is the complement of the UART Out2 (nUARTOut2) modem status output. That is, when the bit is programmed to a 1, the output is 0. For DTE this can be used as Ring Indicator (RI). OUT2 read-write [12:12] This bit is the complement of the UART Out1 (nUARTOut1) modem status output. That is, when the bit is programmed to a 1 the output is 0. For DTE this can be used as Data Carrier Detect (DCD). OUT1 read-write [11:11] Request to send. This bit is the complement of the UART request to send, nUARTRTS, modem status output. That is, when the bit is programmed to a 1 then nUARTRTS is LOW. RTS read-write [10:10] Data transmit ready. This bit is the complement of the UART data transmit ready, nUARTDTR, modem status output. That is, when the bit is programmed to a 1 then nUARTDTR is LOW. DTR read-write [9:9] Receive enable. If this bit is set to 1, the receive section of the UART is enabled. Data reception occurs for either UART signals or SIR signals depending on the setting of the SIREN bit. When the UART is disabled in the middle of reception, it completes the current character before stopping. RXE read-write [8:8] Transmit enable. If this bit is set to 1, the transmit section of the UART is enabled. Data transmission occurs for either UART signals, or SIR signals depending on the setting of the SIREN bit. When the UART is disabled in the middle of transmission, it completes the current character before stopping. TXE read-write [7:7] Loopback enable. If this bit is set to 1 and the SIREN bit is set to 1 and the SIRTEST bit in the Test Control Register, UARTTCR is set to 1, then the nSIROUT path is inverted, and fed through to the SIRIN path. The SIRTEST bit in the test register must be set to 1 to override the normal half-duplex SIR operation. This must be the requirement for accessing the test registers during normal operation, and SIRTEST must be cleared to 0 when loopback testing is finished. This feature reduces the amount of external coupling required during system test. If this bit is set to 1, and the SIRTEST bit is set to 0, the UARTTXD path is fed through to the UARTRXD path. In either SIR mode or UART mode, when this bit is set, the modem outputs are also fed through to the modem inputs. This bit is cleared to 0 on reset, to disable loopback. LBE read-write [2:2] SIR low-power IrDA mode. This bit selects the IrDA encoding mode. If this bit is cleared to 0, low-level bits are transmitted as an active high pulse with a width of 3 / 16th of the bit period. If this bit is set to 1, low-level bits are transmitted with a pulse width that is 3 times the period of the IrLPBaud16 input signal, regardless of the selected bit rate. Setting this bit uses less power, but might reduce transmission distances. SIRLP read-write [1:1] SIR enable: 0 = IrDA SIR ENDEC is disabled. nSIROUT remains LOW (no light pulse generated), and signal transitions on SIRIN have no effect. 1 = IrDA SIR ENDEC is enabled. Data is transmitted and received on nSIROUT and SIRIN. UARTTXD remains HIGH, in the marking state. Signal transitions on UARTRXD or modem status inputs have no effect. This bit has no effect if the UARTEN bit disables the UART. SIREN read-write [0:0] UART enable: 0 = UART is disabled. If the UART is disabled in the middle of transmission or reception, it completes the current character before stopping. 1 = the UART is enabled. Data transmission and reception occurs for either UART signals or SIR signals depending on the setting of the SIREN bit. UARTEN UARTCR 0x00000300 0x0034 Interrupt FIFO Level Select Register, UARTIFLS read-write [5:3] Receive interrupt FIFO level select. The trigger points for the receive interrupt are as follows: b000 = Receive FIFO becomes >= 1 / 8 full b001 = Receive FIFO becomes >= 1 / 4 full b010 = Receive FIFO becomes >= 1 / 2 full b011 = Receive FIFO becomes >= 3 / 4 full b100 = Receive FIFO becomes >= 7 / 8 full b101-b111 = reserved. RXIFLSEL read-write [2:0] Transmit interrupt FIFO level select. The trigger points for the transmit interrupt are as follows: b000 = Transmit FIFO becomes <= 1 / 8 full b001 = Transmit FIFO becomes <= 1 / 4 full b010 = Transmit FIFO becomes <= 1 / 2 full b011 = Transmit FIFO becomes <= 3 / 4 full b100 = Transmit FIFO becomes <= 7 / 8 full b101-b111 = reserved. TXIFLSEL UARTIFLS 0x00000012 0x0038 Interrupt Mask Set/Clear Register, UARTIMSC read-write [10:10] Overrun error interrupt mask. A read returns the current mask for the UARTOEINTR interrupt. On a write of 1, the mask of the UARTOEINTR interrupt is set. A write of 0 clears the mask. OEIM read-write [9:9] Break error interrupt mask. A read returns the current mask for the UARTBEINTR interrupt. On a write of 1, the mask of the UARTBEINTR interrupt is set. A write of 0 clears the mask. BEIM read-write [8:8] Parity error interrupt mask. A read returns the current mask for the UARTPEINTR interrupt. On a write of 1, the mask of the UARTPEINTR interrupt is set. A write of 0 clears the mask. PEIM read-write [7:7] Framing error interrupt mask. A read returns the current mask for the UARTFEINTR interrupt. On a write of 1, the mask of the UARTFEINTR interrupt is set. A write of 0 clears the mask. FEIM read-write [6:6] Receive timeout interrupt mask. A read returns the current mask for the UARTRTINTR interrupt. On a write of 1, the mask of the UARTRTINTR interrupt is set. A write of 0 clears the mask. RTIM read-write [5:5] Transmit interrupt mask. A read returns the current mask for the UARTTXINTR interrupt. On a write of 1, the mask of the UARTTXINTR interrupt is set. A write of 0 clears the mask. TXIM read-write [4:4] Receive interrupt mask. A read returns the current mask for the UARTRXINTR interrupt. On a write of 1, the mask of the UARTRXINTR interrupt is set. A write of 0 clears the mask. RXIM read-write [3:3] nUARTDSR modem interrupt mask. A read returns the current mask for the UARTDSRINTR interrupt. On a write of 1, the mask of the UARTDSRINTR interrupt is set. A write of 0 clears the mask. DSRMIM read-write [2:2] nUARTDCD modem interrupt mask. A read returns the current mask for the UARTDCDINTR interrupt. On a write of 1, the mask of the UARTDCDINTR interrupt is set. A write of 0 clears the mask. DCDMIM read-write [1:1] nUARTCTS modem interrupt mask. A read returns the current mask for the UARTCTSINTR interrupt. On a write of 1, the mask of the UARTCTSINTR interrupt is set. A write of 0 clears the mask. CTSMIM read-write [0:0] nUARTRI modem interrupt mask. A read returns the current mask for the UARTRIINTR interrupt. On a write of 1, the mask of the UARTRIINTR interrupt is set. A write of 0 clears the mask. RIMIM UARTIMSC 0x00000000 0x003c Raw Interrupt Status Register, UARTRIS read-only [10:10] Overrun error interrupt status. Returns the raw interrupt state of the UARTOEINTR interrupt. OERIS read-only [9:9] Break error interrupt status. Returns the raw interrupt state of the UARTBEINTR interrupt. BERIS read-only [8:8] Parity error interrupt status. Returns the raw interrupt state of the UARTPEINTR interrupt. PERIS read-only [7:7] Framing error interrupt status. Returns the raw interrupt state of the UARTFEINTR interrupt. FERIS read-only [6:6] Receive timeout interrupt status. Returns the raw interrupt state of the UARTRTINTR interrupt. a RTRIS read-only [5:5] Transmit interrupt status. Returns the raw interrupt state of the UARTTXINTR interrupt. TXRIS read-only [4:4] Receive interrupt status. Returns the raw interrupt state of the UARTRXINTR interrupt. RXRIS read-only [3:3] nUARTDSR modem interrupt status. Returns the raw interrupt state of the UARTDSRINTR interrupt. DSRRMIS read-only [2:2] nUARTDCD modem interrupt status. Returns the raw interrupt state of the UARTDCDINTR interrupt. DCDRMIS read-only [1:1] nUARTCTS modem interrupt status. Returns the raw interrupt state of the UARTCTSINTR interrupt. CTSRMIS read-only [0:0] nUARTRI modem interrupt status. Returns the raw interrupt state of the UARTRIINTR interrupt. RIRMIS UARTRIS 0x00000000 0x0040 Masked Interrupt Status Register, UARTMIS read-only [10:10] Overrun error masked interrupt status. Returns the masked interrupt state of the UARTOEINTR interrupt. OEMIS read-only [9:9] Break error masked interrupt status. Returns the masked interrupt state of the UARTBEINTR interrupt. BEMIS read-only [8:8] Parity error masked interrupt status. Returns the masked interrupt state of the UARTPEINTR interrupt. PEMIS read-only [7:7] Framing error masked interrupt status. Returns the masked interrupt state of the UARTFEINTR interrupt. FEMIS read-only [6:6] Receive timeout masked interrupt status. Returns the masked interrupt state of the UARTRTINTR interrupt. RTMIS read-only [5:5] Transmit masked interrupt status. Returns the masked interrupt state of the UARTTXINTR interrupt. TXMIS read-only [4:4] Receive masked interrupt status. Returns the masked interrupt state of the UARTRXINTR interrupt. RXMIS read-only [3:3] nUARTDSR modem masked interrupt status. Returns the masked interrupt state of the UARTDSRINTR interrupt. DSRMMIS read-only [2:2] nUARTDCD modem masked interrupt status. Returns the masked interrupt state of the UARTDCDINTR interrupt. DCDMMIS read-only [1:1] nUARTCTS modem masked interrupt status. Returns the masked interrupt state of the UARTCTSINTR interrupt. CTSMMIS read-only [0:0] nUARTRI modem masked interrupt status. Returns the masked interrupt state of the UARTRIINTR interrupt. RIMMIS UARTMIS 0x00000000 0x0044 Interrupt Clear Register, UARTICR read-write [10:10] Overrun error interrupt clear. Clears the UARTOEINTR interrupt. oneToClear OEIC read-write [9:9] Break error interrupt clear. Clears the UARTBEINTR interrupt. oneToClear BEIC read-write [8:8] Parity error interrupt clear. Clears the UARTPEINTR interrupt. oneToClear PEIC read-write [7:7] Framing error interrupt clear. Clears the UARTFEINTR interrupt. oneToClear FEIC read-write [6:6] Receive timeout interrupt clear. Clears the UARTRTINTR interrupt. oneToClear RTIC read-write [5:5] Transmit interrupt clear. Clears the UARTTXINTR interrupt. oneToClear TXIC read-write [4:4] Receive interrupt clear. Clears the UARTRXINTR interrupt. oneToClear RXIC read-write [3:3] nUARTDSR modem interrupt clear. Clears the UARTDSRINTR interrupt. oneToClear DSRMIC read-write [2:2] nUARTDCD modem interrupt clear. Clears the UARTDCDINTR interrupt. oneToClear DCDMIC read-write [1:1] nUARTCTS modem interrupt clear. Clears the UARTCTSINTR interrupt. oneToClear CTSMIC read-write [0:0] nUARTRI modem interrupt clear. Clears the UARTRIINTR interrupt. oneToClear RIMIC UARTICR 0x00000000 0x0048 DMA Control Register, UARTDMACR read-write [2:2] DMA on error. If this bit is set to 1, the DMA receive request outputs, UARTRXDMASREQ or UARTRXDMABREQ, are disabled when the UART error interrupt is asserted. DMAONERR read-write [1:1] Transmit DMA enable. If this bit is set to 1, DMA for the transmit FIFO is enabled. TXDMAE read-write [0:0] Receive DMA enable. If this bit is set to 1, DMA for the receive FIFO is enabled. RXDMAE UARTDMACR 0x00000000 0x0fe0 UARTPeriphID0 Register read-only [7:0] These bits read back as 0x11 PARTNUMBER0 UARTPERIPHID0 0x00000011 0x0fe4 UARTPeriphID1 Register read-only [7:4] These bits read back as 0x1 DESIGNER0 read-only [3:0] These bits read back as 0x0 PARTNUMBER1 UARTPERIPHID1 0x00000010 0x0fe8 UARTPeriphID2 Register read-only [7:4] This field depends on the revision of the UART: r1p0 0x0 r1p1 0x1 r1p3 0x2 r1p4 0x2 r1p5 0x3 REVISION read-only [3:0] These bits read back as 0x4 DESIGNER1 UARTPERIPHID2 0x00000034 0x0fec UARTPeriphID3 Register read-only [7:0] These bits read back as 0x00 CONFIGURATION UARTPERIPHID3 0x00000000 0x0ff0 UARTPCellID0 Register read-only [7:0] These bits read back as 0x0D UARTPCELLID0 UARTPCELLID0 0x0000000d 0x0ff4 UARTPCellID1 Register read-only [7:0] These bits read back as 0xF0 UARTPCELLID1 UARTPCELLID1 0x000000f0 0x0ff8 UARTPCellID2 Register read-only [7:0] These bits read back as 0x05 UARTPCELLID2 UARTPCELLID2 0x00000005 0x0ffc UARTPCellID3 Register read-only [7:0] These bits read back as 0xB1 UARTPCELLID3 UARTPCELLID3 0x000000b1 32 1 0x40038000 UART1_IRQ 21 UART1 0 0x1000 registers 0x4003c000 SPI0_IRQ 18 SPI0 0x0000 Control register 0, SSPCR0 on page 3-4 read-write [15:8] Serial clock rate. The value SCR is used to generate the transmit and receive bit rate of the PrimeCell SSP. The bit rate is: F SSPCLK CPSDVSR x (1+SCR) where CPSDVSR is an even value from 2-254, programmed through the SSPCPSR register and SCR is a value from 0-255. SCR read-write [7:7] SSPCLKOUT phase, applicable to Motorola SPI frame format only. See Motorola SPI frame format on page 2-10. SPH read-write [6:6] SSPCLKOUT polarity, applicable to Motorola SPI frame format only. See Motorola SPI frame format on page 2-10. SPO read-write [5:4] Frame format: 00 Motorola SPI frame format. 01 TI synchronous serial frame format. 10 National Microwire frame format. 11 Reserved, undefined operation. FRF read-write [3:0] Data Size Select: 0000 Reserved, undefined operation. 0001 Reserved, undefined operation. 0010 Reserved, undefined operation. 0011 4-bit data. 0100 5-bit data. 0101 6-bit data. 0110 7-bit data. 0111 8-bit data. 1000 9-bit data. 1001 10-bit data. 1010 11-bit data. 1011 12-bit data. 1100 13-bit data. 1101 14-bit data. 1110 15-bit data. 1111 16-bit data. DSS SSPCR0 0x00000000 0x0004 Control register 1, SSPCR1 on page 3-5 read-write [3:3] Slave-mode output disable. This bit is relevant only in the slave mode, MS=1. In multiple-slave systems, it is possible for an PrimeCell SSP master to broadcast a message to all slaves in the system while ensuring that only one slave drives data onto its serial output line. In such systems the RXD lines from multiple slaves could be tied together. To operate in such systems, the SOD bit can be set if the PrimeCell SSP slave is not supposed to drive the SSPTXD line: 0 SSP can drive the SSPTXD output in slave mode. 1 SSP must not drive the SSPTXD output in slave mode. SOD read-write [2:2] Master or slave mode select. This bit can be modified only when the PrimeCell SSP is disabled, SSE=0: 0 Device configured as master, default. 1 Device configured as slave. MS read-write [1:1] Synchronous serial port enable: 0 SSP operation disabled. 1 SSP operation enabled. SSE read-write [0:0] Loop back mode: 0 Normal serial port operation enabled. 1 Output of transmit serial shifter is connected to input of receive serial shifter internally. LBM SSPCR1 0x00000000 0x0008 Data register, SSPDR on page 3-6 read-write [15:0] Transmit/Receive FIFO: Read Receive FIFO. Write Transmit FIFO. You must right-justify data when the PrimeCell SSP is programmed for a data size that is less than 16 bits. Unused bits at the top are ignored by transmit logic. The receive logic automatically right-justifies. DATA SSPDR 0x00000000 0x000c Status register, SSPSR on page 3-7 read-only [4:4] PrimeCell SSP busy flag, RO: 0 SSP is idle. 1 SSP is currently transmitting and/or receiving a frame or the transmit FIFO is not empty. BSY read-only [3:3] Receive FIFO full, RO: 0 Receive FIFO is not full. 1 Receive FIFO is full. RFF read-only [2:2] Receive FIFO not empty, RO: 0 Receive FIFO is empty. 1 Receive FIFO is not empty. RNE read-only [1:1] Transmit FIFO not full, RO: 0 Transmit FIFO is full. 1 Transmit FIFO is not full. TNF read-only [0:0] Transmit FIFO empty, RO: 0 Transmit FIFO is not empty. 1 Transmit FIFO is empty. TFE SSPSR 0x00000003 0x0010 Clock prescale register, SSPCPSR on page 3-8 read-write [7:0] Clock prescale divisor. Must be an even number from 2-254, depending on the frequency of SSPCLK. The least significant bit always returns zero on reads. CPSDVSR SSPCPSR 0x00000000 0x0014 Interrupt mask set or clear register, SSPIMSC on page 3-9 read-write [3:3] Transmit FIFO interrupt mask: 0 Transmit FIFO half empty or less condition interrupt is masked. 1 Transmit FIFO half empty or less condition interrupt is not masked. TXIM read-write [2:2] Receive FIFO interrupt mask: 0 Receive FIFO half full or less condition interrupt is masked. 1 Receive FIFO half full or less condition interrupt is not masked. RXIM read-write [1:1] Receive timeout interrupt mask: 0 Receive FIFO not empty and no read prior to timeout period interrupt is masked. 1 Receive FIFO not empty and no read prior to timeout period interrupt is not masked. RTIM read-write [0:0] Receive overrun interrupt mask: 0 Receive FIFO written to while full condition interrupt is masked. 1 Receive FIFO written to while full condition interrupt is not masked. RORIM SSPIMSC 0x00000000 0x0018 Raw interrupt status register, SSPRIS on page 3-10 read-only [3:3] Gives the raw interrupt state, prior to masking, of the SSPTXINTR interrupt TXRIS read-only [2:2] Gives the raw interrupt state, prior to masking, of the SSPRXINTR interrupt RXRIS read-only [1:1] Gives the raw interrupt state, prior to masking, of the SSPRTINTR interrupt RTRIS read-only [0:0] Gives the raw interrupt state, prior to masking, of the SSPRORINTR interrupt RORRIS SSPRIS 0x00000008 0x001c Masked interrupt status register, SSPMIS on page 3-11 read-only [3:3] Gives the transmit FIFO masked interrupt state, after masking, of the SSPTXINTR interrupt TXMIS read-only [2:2] Gives the receive FIFO masked interrupt state, after masking, of the SSPRXINTR interrupt RXMIS read-only [1:1] Gives the receive timeout masked interrupt state, after masking, of the SSPRTINTR interrupt RTMIS read-only [0:0] Gives the receive over run masked interrupt status, after masking, of the SSPRORINTR interrupt RORMIS SSPMIS 0x00000000 0x0020 Interrupt clear register, SSPICR on page 3-11 read-write [1:1] Clears the SSPRTINTR interrupt oneToClear RTIC read-write [0:0] Clears the SSPRORINTR interrupt oneToClear RORIC SSPICR 0x00000000 0x0024 DMA control register, SSPDMACR on page 3-12 read-write [1:1] Transmit DMA Enable. If this bit is set to 1, DMA for the transmit FIFO is enabled. TXDMAE read-write [0:0] Receive DMA Enable. If this bit is set to 1, DMA for the receive FIFO is enabled. RXDMAE SSPDMACR 0x00000000 0x0fe0 Peripheral identification registers, SSPPeriphID0-3 on page 3-13 read-only [7:0] These bits read back as 0x22 PARTNUMBER0 SSPPERIPHID0 0x00000022 0x0fe4 Peripheral identification registers, SSPPeriphID0-3 on page 3-13 read-only [7:4] These bits read back as 0x1 DESIGNER0 read-only [3:0] These bits read back as 0x0 PARTNUMBER1 SSPPERIPHID1 0x00000010 0x0fe8 Peripheral identification registers, SSPPeriphID0-3 on page 3-13 read-only [7:4] These bits return the peripheral revision REVISION read-only [3:0] These bits read back as 0x4 DESIGNER1 SSPPERIPHID2 0x00000034 0x0fec Peripheral identification registers, SSPPeriphID0-3 on page 3-13 read-only [7:0] These bits read back as 0x00 CONFIGURATION SSPPERIPHID3 0x00000000 0x0ff0 PrimeCell identification registers, SSPPCellID0-3 on page 3-16 read-only [7:0] These bits read back as 0x0D SSPPCELLID0 SSPPCELLID0 0x0000000d 0x0ff4 PrimeCell identification registers, SSPPCellID0-3 on page 3-16 read-only [7:0] These bits read back as 0xF0 SSPPCELLID1 SSPPCELLID1 0x000000f0 0x0ff8 PrimeCell identification registers, SSPPCellID0-3 on page 3-16 read-only [7:0] These bits read back as 0x05 SSPPCELLID2 SSPPCELLID2 0x00000005 0x0ffc PrimeCell identification registers, SSPPCellID0-3 on page 3-16 read-only [7:0] These bits read back as 0xB1 SSPPCELLID3 SSPPCELLID3 0x000000b1 32 1 0x40040000 SPI1_IRQ 19 SPI1 0 0x0100 registers 0x40044000 DW_apb_i2c address block I2C0_IRQ 23 I2C0 0x0000 I2C Control Register. This register can be written only when the DW_apb_i2c is disabled, which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect.\n\n Read/Write Access: - bit 10 is read only. - bit 11 is read only - bit 16 is read only - bit 17 is read only - bits 18 and 19 are read only. read-only [10:10] Master issues the STOP_DET interrupt irrespective of whether master is active or not STOP_DET_IF_MASTER_ACTIVE read-write [9:9] This bit controls whether DW_apb_i2c should hold the bus when the Rx FIFO is physically full to its RX_BUFFER_DEPTH, as described in the IC_RX_FULL_HLD_BUS_EN parameter.\n\n Reset value: 0x0. Overflow when RX_FIFO is full DISABLED 0 Hold bus when RX_FIFO is full ENABLED 1 RX_FIFO_FULL_HLD_CTRL read-write [8:8] This bit controls the generation of the TX_EMPTY interrupt, as described in the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0. Default behaviour of TX_EMPTY interrupt DISABLED 0 Controlled generation of TX_EMPTY interrupt ENABLED 1 TX_EMPTY_CTRL read-write [7:7] In slave mode: - 1'b1: issues the STOP_DET interrupt only when it is addressed. - 1'b0: issues the STOP_DET irrespective of whether it's addressed or not. Reset value: 0x0\n\n NOTE: During a general call address, this slave does not issue the STOP_DET interrupt if STOP_DET_IF_ADDRESSED = 1'b1, even if the slave responds to the general call address by generating ACK. The STOP_DET interrupt is generated only when the transmitted address matches the slave address (SAR). slave issues STOP_DET intr always DISABLED 0 slave issues STOP_DET intr only if addressed ENABLED 1 STOP_DET_IFADDRESSED read-write [6:6] This bit controls whether I2C has its slave disabled, which means once the presetn signal is applied, then this bit is set and the slave is disabled.\n\n If this bit is set (slave is disabled), DW_apb_i2c functions only as a master and does not perform any action that requires a slave.\n\n NOTE: Software should ensure that if this bit is written with 0, then bit 0 should also be written with a 0. Slave mode is enabled SLAVE_ENABLED 0 Slave mode is disabled SLAVE_DISABLED 1 IC_SLAVE_DISABLE read-write [5:5] Determines whether RESTART conditions may be sent when acting as a master. Some older slaves do not support handling RESTART conditions; however, RESTART conditions are used in several DW_apb_i2c operations. When RESTART is disabled, the master is prohibited from performing the following functions: - Sending a START BYTE - Performing any high-speed mode operation - High-speed mode operation - Performing direction changes in combined format mode - Performing a read operation with a 10-bit address By replacing RESTART condition followed by a STOP and a subsequent START condition, split operations are broken down into multiple DW_apb_i2c transfers. If the above operations are performed, it will result in setting bit 6 (TX_ABRT) of the IC_RAW_INTR_STAT register.\n\n Reset value: ENABLED Master restart disabled DISABLED 0 Master restart enabled ENABLED 1 IC_RESTART_EN read-write [4:4] Controls whether the DW_apb_i2c starts its transfers in 7- or 10-bit addressing mode when acting as a master. - 0: 7-bit addressing - 1: 10-bit addressing Master 7Bit addressing mode ADDR_7BITS 0 Master 10Bit addressing mode ADDR_10BITS 1 IC_10BITADDR_MASTER read-write [3:3] When acting as a slave, this bit controls whether the DW_apb_i2c responds to 7- or 10-bit addresses. - 0: 7-bit addressing. The DW_apb_i2c ignores transactions that involve 10-bit addressing; for 7-bit addressing, only the lower 7 bits of the IC_SAR register are compared. - 1: 10-bit addressing. The DW_apb_i2c responds to only 10-bit addressing transfers that match the full 10 bits of the IC_SAR register. Slave 7Bit addressing ADDR_7BITS 0 Slave 10Bit addressing ADDR_10BITS 1 IC_10BITADDR_SLAVE read-write [2:1] These bits control at which speed the DW_apb_i2c operates; its setting is relevant only if one is operating the DW_apb_i2c in master mode. Hardware protects against illegal values being programmed by software. These bits must be programmed appropriately for slave mode also, as it is used to capture correct value of spike filter as per the speed mode.\n\n This register should be programmed only with a value in the range of 1 to IC_MAX_SPEED_MODE; otherwise, hardware updates this register with the value of IC_MAX_SPEED_MODE.\n\n 1: standard mode (100 kbit/s)\n\n 2: fast mode (<=400 kbit/s) or fast mode plus (<=1000Kbit/s)\n\n 3: high speed mode (3.4 Mbit/s)\n\n Note: This field is not applicable when IC_ULTRA_FAST_MODE=1 Standard Speed mode of operation STANDARD 1 Fast or Fast Plus mode of operation FAST 2 High Speed mode of operation HIGH 3 SPEED read-write [0:0] This bit controls whether the DW_apb_i2c master is enabled.\n\n NOTE: Software should ensure that if this bit is written with '1' then bit 6 should also be written with a '1'. Master mode is disabled DISABLED 0 Master mode is enabled ENABLED 1 MASTER_MODE IC_CON 0x00000065 0x0004 I2C Target Address Register\n\n This register is 12 bits wide, and bits 31:12 are reserved. This register can be written to only when IC_ENABLE[0] is set to 0.\n\n Note: If the software or application is aware that the DW_apb_i2c is not using the TAR address for the pending commands in the Tx FIFO, then it is possible to update the TAR address even while the Tx FIFO has entries (IC_STATUS[2]= 0). - It is not necessary to perform any write to this register if DW_apb_i2c is enabled as an I2C slave only. read-write [11:11] This bit indicates whether software performs a Device-ID or General Call or START BYTE command. - 0: ignore bit 10 GC_OR_START and use IC_TAR normally - 1: perform special I2C command as specified in Device_ID or GC_OR_START bit Reset value: 0x0 Disables programming of GENERAL_CALL or START_BYTE transmission DISABLED 0 Enables programming of GENERAL_CALL or START_BYTE transmission ENABLED 1 SPECIAL read-write [10:10] If bit 11 (SPECIAL) is set to 1 and bit 13(Device-ID) is set to 0, then this bit indicates whether a General Call or START byte command is to be performed by the DW_apb_i2c. - 0: General Call Address - after issuing a General Call, only writes may be performed. Attempting to issue a read command results in setting bit 6 (TX_ABRT) of the IC_RAW_INTR_STAT register. The DW_apb_i2c remains in General Call mode until the SPECIAL bit value (bit 11) is cleared. - 1: START BYTE Reset value: 0x0 GENERAL_CALL byte transmission GENERAL_CALL 0 START byte transmission START_BYTE 1 GC_OR_START read-write [9:0] This is the target address for any master transaction. When transmitting a General Call, these bits are ignored. To generate a START BYTE, the CPU needs to write only once into these bits.\n\n If the IC_TAR and IC_SAR are the same, loopback exists but the FIFOs are shared between master and slave, so full loopback is not feasible. Only one direction loopback mode is supported (simplex), not duplex. A master cannot transmit to itself; it can transmit to only a slave. IC_TAR IC_TAR 0x00000055 0x0008 I2C Slave Address Register read-write [9:0] The IC_SAR holds the slave address when the I2C is operating as a slave. For 7-bit addressing, only IC_SAR[6:0] is used.\n\n This register can be written only when the I2C interface is disabled, which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect.\n\n Note: The default values cannot be any of the reserved address locations: that is, 0x00 to 0x07, or 0x78 to 0x7f. The correct operation of the device is not guaranteed if you program the IC_SAR or IC_TAR to a reserved value. Refer to <<table_I2C_firstbyte_bit_defs>> for a complete list of these reserved values. IC_SAR IC_SAR 0x00000055 0x0010 I2C Rx/Tx Data Buffer and Command Register; this is the register the CPU writes to when filling the TX FIFO and the CPU reads from when retrieving bytes from RX FIFO.\n\n The size of the register changes as follows:\n\n Write: - 11 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=1 - 9 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=0 Read: - 12 bits when IC_FIRST_DATA_BYTE_STATUS = 1 - 8 bits when IC_FIRST_DATA_BYTE_STATUS = 0 Note: In order for the DW_apb_i2c to continue acknowledging reads, a read command should be written for every byte that is to be received; otherwise the DW_apb_i2c will stop acknowledging. read-only [11:11] Indicates the first data byte received after the address phase for receive transfer in Master receiver or Slave receiver mode.\n\n Reset value : 0x0\n\n NOTE: In case of APB_DATA_WIDTH=8,\n\n 1. The user has to perform two APB Reads to IC_DATA_CMD in order to get status on 11 bit.\n\n 2. In order to read the 11 bit, the user has to perform the first data byte read [7:0] (offset 0x10) and then perform the second read [15:8] (offset 0x11) in order to know the status of 11 bit (whether the data received in previous read is a first data byte or not).\n\n 3. The 11th bit is an optional read field, user can ignore 2nd byte read [15:8] (offset 0x11) if not interested in FIRST_DATA_BYTE status. Sequential data byte received INACTIVE 0 Non sequential data byte received ACTIVE 1 FIRST_DATA_BYTE read-write [10:10] This bit controls whether a RESTART is issued before the byte is sent or received.\n\n 1 - If IC_RESTART_EN is 1, a RESTART is issued before the data is sent/received (according to the value of CMD), regardless of whether or not the transfer direction is changing from the previous command; if IC_RESTART_EN is 0, a STOP followed by a START is issued instead.\n\n 0 - If IC_RESTART_EN is 1, a RESTART is issued only if the transfer direction is changing from the previous command; if IC_RESTART_EN is 0, a STOP followed by a START is issued instead.\n\n Reset value: 0x0 Don't Issue RESTART before this command DISABLE 0 Issue RESTART before this command ENABLE 1 clear RESTART read-write [9:9] This bit controls whether a STOP is issued after the byte is sent or received.\n\n - 1 - STOP is issued after this byte, regardless of whether or not the Tx FIFO is empty. If the Tx FIFO is not empty, the master immediately tries to start a new transfer by issuing a START and arbitrating for the bus. - 0 - STOP is not issued after this byte, regardless of whether or not the Tx FIFO is empty. If the Tx FIFO is not empty, the master continues the current transfer by sending/receiving data bytes according to the value of the CMD bit. If the Tx FIFO is empty, the master holds the SCL line low and stalls the bus until a new command is available in the Tx FIFO. Reset value: 0x0 Don't Issue STOP after this command DISABLE 0 Issue STOP after this command ENABLE 1 clear STOP read-write [8:8] This bit controls whether a read or a write is performed. This bit does not control the direction when the DW_apb_i2con acts as a slave. It controls only the direction when it acts as a master.\n\n When a command is entered in the TX FIFO, this bit distinguishes the write and read commands. In slave-receiver mode, this bit is a 'don't care' because writes to this register are not required. In slave-transmitter mode, a '0' indicates that the data in IC_DATA_CMD is to be transmitted.\n\n When programming this bit, you should remember the following: attempting to perform a read operation after a General Call command has been sent results in a TX_ABRT interrupt (bit 6 of the IC_RAW_INTR_STAT register), unless bit 11 (SPECIAL) in the IC_TAR register has been cleared. If a '1' is written to this bit after receiving a RD_REQ interrupt, then a TX_ABRT interrupt occurs.\n\n Reset value: 0x0 Master Write Command WRITE 0 Master Read Command READ 1 clear CMD read-write [7:0] This register contains the data to be transmitted or received on the I2C bus. If you are writing to this register and want to perform a read, bits 7:0 (DAT) are ignored by the DW_apb_i2c. However, when you read this register, these bits return the value of data received on the DW_apb_i2c interface.\n\n Reset value: 0x0 DAT IC_DATA_CMD 0x00000000 0x0014 Standard Speed I2C Clock SCL High Count Register read-write [15:0] This register must be set before any I2C bus transaction can take place to ensure proper I/O timing. This register sets the SCL clock high-period count for standard speed. For more information, refer to 'IC_CLK Frequency Configuration'.\n\n This register can be written only when the I2C interface is disabled which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect.\n\n The minimum valid value is 6; hardware prevents values less than this being written, and if attempted results in 6 being set. For designs with APB_DATA_WIDTH = 8, the order of programming is important to ensure the correct operation of the DW_apb_i2c. The lower byte must be programmed first. Then the upper byte is programmed.\n\n NOTE: This register must not be programmed to a value higher than 65525, because DW_apb_i2c uses a 16-bit counter to flag an I2C bus idle condition when this counter reaches a value of IC_SS_SCL_HCNT + 10. IC_SS_SCL_HCNT IC_SS_SCL_HCNT 0x00000028 0x0018 Standard Speed I2C Clock SCL Low Count Register read-write [15:0] This register must be set before any I2C bus transaction can take place to ensure proper I/O timing. This register sets the SCL clock low period count for standard speed. For more information, refer to 'IC_CLK Frequency Configuration'\n\n This register can be written only when the I2C interface is disabled which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect.\n\n The minimum valid value is 8; hardware prevents values less than this being written, and if attempted, results in 8 being set. For designs with APB_DATA_WIDTH = 8, the order of programming is important to ensure the correct operation of DW_apb_i2c. The lower byte must be programmed first, and then the upper byte is programmed. IC_SS_SCL_LCNT IC_SS_SCL_LCNT 0x0000002f 0x001c Fast Mode or Fast Mode Plus I2C Clock SCL High Count Register read-write [15:0] This register must be set before any I2C bus transaction can take place to ensure proper I/O timing. This register sets the SCL clock high-period count for fast mode or fast mode plus. It is used in high-speed mode to send the Master Code and START BYTE or General CALL. For more information, refer to 'IC_CLK Frequency Configuration'.\n\n This register goes away and becomes read-only returning 0s if IC_MAX_SPEED_MODE = standard. This register can be written only when the I2C interface is disabled, which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect.\n\n The minimum valid value is 6; hardware prevents values less than this being written, and if attempted results in 6 being set. For designs with APB_DATA_WIDTH == 8 the order of programming is important to ensure the correct operation of the DW_apb_i2c. The lower byte must be programmed first. Then the upper byte is programmed. IC_FS_SCL_HCNT IC_FS_SCL_HCNT 0x00000006 0x0020 Fast Mode or Fast Mode Plus I2C Clock SCL Low Count Register read-write [15:0] This register must be set before any I2C bus transaction can take place to ensure proper I/O timing. This register sets the SCL clock low period count for fast speed. It is used in high-speed mode to send the Master Code and START BYTE or General CALL. For more information, refer to 'IC_CLK Frequency Configuration'.\n\n This register goes away and becomes read-only returning 0s if IC_MAX_SPEED_MODE = standard.\n\n This register can be written only when the I2C interface is disabled, which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect.\n\n The minimum valid value is 8; hardware prevents values less than this being written, and if attempted results in 8 being set. For designs with APB_DATA_WIDTH = 8 the order of programming is important to ensure the correct operation of the DW_apb_i2c. The lower byte must be programmed first. Then the upper byte is programmed. If the value is less than 8 then the count value gets changed to 8. IC_FS_SCL_LCNT IC_FS_SCL_LCNT 0x0000000d 0x002c I2C Interrupt Status Register\n\n Each bit in this register has a corresponding mask bit in the IC_INTR_MASK register. These bits are cleared by reading the matching interrupt clear register. The unmasked raw versions of these bits are available in the IC_RAW_INTR_STAT register. read-only [13:13] See IC_RAW_INTR_STAT for a detailed description of R_MASTER_ON_HOLD bit.\n\n Reset value: 0x0 R_MASTER_ON_HOLD interrupt is inactive INACTIVE 0 R_MASTER_ON_HOLD interrupt is active ACTIVE 1 R_MASTER_ON_HOLD read-only [12:12] See IC_RAW_INTR_STAT for a detailed description of R_RESTART_DET bit.\n\n Reset value: 0x0 R_RESTART_DET interrupt is inactive INACTIVE 0 R_RESTART_DET interrupt is active ACTIVE 1 R_RESTART_DET read-only [11:11] See IC_RAW_INTR_STAT for a detailed description of R_GEN_CALL bit.\n\n Reset value: 0x0 R_GEN_CALL interrupt is inactive INACTIVE 0 R_GEN_CALL interrupt is active ACTIVE 1 R_GEN_CALL read-only [10:10] See IC_RAW_INTR_STAT for a detailed description of R_START_DET bit.\n\n Reset value: 0x0 R_START_DET interrupt is inactive INACTIVE 0 R_START_DET interrupt is active ACTIVE 1 R_START_DET read-only [9:9] See IC_RAW_INTR_STAT for a detailed description of R_STOP_DET bit.\n\n Reset value: 0x0 R_STOP_DET interrupt is inactive INACTIVE 0 R_STOP_DET interrupt is active ACTIVE 1 R_STOP_DET read-only [8:8] See IC_RAW_INTR_STAT for a detailed description of R_ACTIVITY bit.\n\n Reset value: 0x0 R_ACTIVITY interrupt is inactive INACTIVE 0 R_ACTIVITY interrupt is active ACTIVE 1 R_ACTIVITY read-only [7:7] See IC_RAW_INTR_STAT for a detailed description of R_RX_DONE bit.\n\n Reset value: 0x0 R_RX_DONE interrupt is inactive INACTIVE 0 R_RX_DONE interrupt is active ACTIVE 1 R_RX_DONE read-only [6:6] See IC_RAW_INTR_STAT for a detailed description of R_TX_ABRT bit.\n\n Reset value: 0x0 R_TX_ABRT interrupt is inactive INACTIVE 0 R_TX_ABRT interrupt is active ACTIVE 1 R_TX_ABRT read-only [5:5] See IC_RAW_INTR_STAT for a detailed description of R_RD_REQ bit.\n\n Reset value: 0x0 R_RD_REQ interrupt is inactive INACTIVE 0 R_RD_REQ interrupt is active ACTIVE 1 R_RD_REQ read-only [4:4] See IC_RAW_INTR_STAT for a detailed description of R_TX_EMPTY bit.\n\n Reset value: 0x0 R_TX_EMPTY interrupt is inactive INACTIVE 0 R_TX_EMPTY interrupt is active ACTIVE 1 R_TX_EMPTY read-only [3:3] See IC_RAW_INTR_STAT for a detailed description of R_TX_OVER bit.\n\n Reset value: 0x0 R_TX_OVER interrupt is inactive INACTIVE 0 R_TX_OVER interrupt is active ACTIVE 1 R_TX_OVER read-only [2:2] See IC_RAW_INTR_STAT for a detailed description of R_RX_FULL bit.\n\n Reset value: 0x0 R_RX_FULL interrupt is inactive INACTIVE 0 R_RX_FULL interrupt is active ACTIVE 1 R_RX_FULL read-only [1:1] See IC_RAW_INTR_STAT for a detailed description of R_RX_OVER bit.\n\n Reset value: 0x0 R_RX_OVER interrupt is inactive INACTIVE 0 R_RX_OVER interrupt is active ACTIVE 1 R_RX_OVER read-only [0:0] See IC_RAW_INTR_STAT for a detailed description of R_RX_UNDER bit.\n\n Reset value: 0x0 RX_UNDER interrupt is inactive INACTIVE 0 RX_UNDER interrupt is active ACTIVE 1 R_RX_UNDER IC_INTR_STAT 0x00000000 0x0030 I2C Interrupt Mask Register.\n\n These bits mask their corresponding interrupt status bits. This register is active low; a value of 0 masks the interrupt, whereas a value of 1 unmasks the interrupt. read-only [13:13] This M_MASTER_ON_HOLD_read_only bit masks the R_MASTER_ON_HOLD interrupt in IC_INTR_STAT register.\n\n Reset value: 0x0 MASTER_ON_HOLD interrupt is masked ENABLED 0 MASTER_ON_HOLD interrupt is unmasked DISABLED 1 M_MASTER_ON_HOLD_READ_ONLY read-write [12:12] This bit masks the R_RESTART_DET interrupt in IC_INTR_STAT register.\n\n Reset value: 0x0 RESTART_DET interrupt is masked ENABLED 0 RESTART_DET interrupt is unmasked DISABLED 1 M_RESTART_DET read-write [11:11] This bit masks the R_GEN_CALL interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 GEN_CALL interrupt is masked ENABLED 0 GEN_CALL interrupt is unmasked DISABLED 1 M_GEN_CALL read-write [10:10] This bit masks the R_START_DET interrupt in IC_INTR_STAT register.\n\n Reset value: 0x0 START_DET interrupt is masked ENABLED 0 START_DET interrupt is unmasked DISABLED 1 M_START_DET read-write [9:9] This bit masks the R_STOP_DET interrupt in IC_INTR_STAT register.\n\n Reset value: 0x0 STOP_DET interrupt is masked ENABLED 0 STOP_DET interrupt is unmasked DISABLED 1 M_STOP_DET read-write [8:8] This bit masks the R_ACTIVITY interrupt in IC_INTR_STAT register.\n\n Reset value: 0x0 ACTIVITY interrupt is masked ENABLED 0 ACTIVITY interrupt is unmasked DISABLED 1 M_ACTIVITY read-write [7:7] This bit masks the R_RX_DONE interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 RX_DONE interrupt is masked ENABLED 0 RX_DONE interrupt is unmasked DISABLED 1 M_RX_DONE read-write [6:6] This bit masks the R_TX_ABRT interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 TX_ABORT interrupt is masked ENABLED 0 TX_ABORT interrupt is unmasked DISABLED 1 M_TX_ABRT read-write [5:5] This bit masks the R_RD_REQ interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 RD_REQ interrupt is masked ENABLED 0 RD_REQ interrupt is unmasked DISABLED 1 M_RD_REQ read-write [4:4] This bit masks the R_TX_EMPTY interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 TX_EMPTY interrupt is masked ENABLED 0 TX_EMPTY interrupt is unmasked DISABLED 1 M_TX_EMPTY read-write [3:3] This bit masks the R_TX_OVER interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 TX_OVER interrupt is masked ENABLED 0 TX_OVER interrupt is unmasked DISABLED 1 M_TX_OVER read-write [2:2] This bit masks the R_RX_FULL interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 RX_FULL interrupt is masked ENABLED 0 RX_FULL interrupt is unmasked DISABLED 1 M_RX_FULL read-write [1:1] This bit masks the R_RX_OVER interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 RX_OVER interrupt is masked ENABLED 0 RX_OVER interrupt is unmasked DISABLED 1 M_RX_OVER read-write [0:0] This bit masks the R_RX_UNDER interrupt in IC_INTR_STAT register.\n\n Reset value: 0x1 RX_UNDER interrupt is masked ENABLED 0 RX_UNDER interrupt is unmasked DISABLED 1 M_RX_UNDER IC_INTR_MASK 0x000008ff 0x0034 I2C Raw Interrupt Status Register\n\n Unlike the IC_INTR_STAT register, these bits are not masked so they always show the true status of the DW_apb_i2c. read-only [13:13] Indicates whether master is holding the bus and TX FIFO is empty. Enabled only when I2C_DYNAMIC_TAR_UPDATE=1 and IC_EMPTYFIFO_HOLD_MASTER_EN=1.\n\n Reset value: 0x0 MASTER_ON_HOLD interrupt is inactive INACTIVE 0 MASTER_ON_HOLD interrupt is active ACTIVE 1 MASTER_ON_HOLD read-only [12:12] Indicates whether a RESTART condition has occurred on the I2C interface when DW_apb_i2c is operating in Slave mode and the slave is being addressed. Enabled only when IC_SLV_RESTART_DET_EN=1.\n\n Note: However, in high-speed mode or during a START BYTE transfer, the RESTART comes before the address field as per the I2C protocol. In this case, the slave is not the addressed slave when the RESTART is issued, therefore DW_apb_i2c does not generate the RESTART_DET interrupt.\n\n Reset value: 0x0 RESTART_DET interrupt is inactive INACTIVE 0 RESTART_DET interrupt is active ACTIVE 1 RESTART_DET read-only [11:11] Set only when a General Call address is received and it is acknowledged. It stays set until it is cleared either by disabling DW_apb_i2c or when the CPU reads bit 0 of the IC_CLR_GEN_CALL register. DW_apb_i2c stores the received data in the Rx buffer.\n\n Reset value: 0x0 GEN_CALL interrupt is inactive INACTIVE 0 GEN_CALL interrupt is active ACTIVE 1 GEN_CALL read-only [10:10] Indicates whether a START or RESTART condition has occurred on the I2C interface regardless of whether DW_apb_i2c is operating in slave or master mode.\n\n Reset value: 0x0 START_DET interrupt is inactive INACTIVE 0 START_DET interrupt is active ACTIVE 1 START_DET read-only [9:9] Indicates whether a STOP condition has occurred on the I2C interface regardless of whether DW_apb_i2c is operating in slave or master mode.\n\n In Slave Mode: - If IC_CON[7]=1'b1 (STOP_DET_IFADDRESSED), the STOP_DET interrupt will be issued only if slave is addressed. Note: During a general call address, this slave does not issue a STOP_DET interrupt if STOP_DET_IF_ADDRESSED=1'b1, even if the slave responds to the general call address by generating ACK. The STOP_DET interrupt is generated only when the transmitted address matches the slave address (SAR). - If IC_CON[7]=1'b0 (STOP_DET_IFADDRESSED), the STOP_DET interrupt is issued irrespective of whether it is being addressed. In Master Mode: - If IC_CON[10]=1'b1 (STOP_DET_IF_MASTER_ACTIVE),the STOP_DET interrupt will be issued only if Master is active. - If IC_CON[10]=1'b0 (STOP_DET_IFADDRESSED),the STOP_DET interrupt will be issued irrespective of whether master is active or not. Reset value: 0x0 STOP_DET interrupt is inactive INACTIVE 0 STOP_DET interrupt is active ACTIVE 1 STOP_DET read-only [8:8] This bit captures DW_apb_i2c activity and stays set until it is cleared. There are four ways to clear it: - Disabling the DW_apb_i2c - Reading the IC_CLR_ACTIVITY register - Reading the IC_CLR_INTR register - System reset Once this bit is set, it stays set unless one of the four methods is used to clear it. Even if the DW_apb_i2c module is idle, this bit remains set until cleared, indicating that there was activity on the bus.\n\n Reset value: 0x0 RAW_INTR_ACTIVITY interrupt is inactive INACTIVE 0 RAW_INTR_ACTIVITY interrupt is active ACTIVE 1 ACTIVITY read-only [7:7] When the DW_apb_i2c is acting as a slave-transmitter, this bit is set to 1 if the master does not acknowledge a transmitted byte. This occurs on the last byte of the transmission, indicating that the transmission is done.\n\n Reset value: 0x0 RX_DONE interrupt is inactive INACTIVE 0 RX_DONE interrupt is active ACTIVE 1 RX_DONE read-only [6:6] This bit indicates if DW_apb_i2c, as an I2C transmitter, is unable to complete the intended actions on the contents of the transmit FIFO. This situation can occur both as an I2C master or an I2C slave, and is referred to as a 'transmit abort'. When this bit is set to 1, the IC_TX_ABRT_SOURCE register indicates the reason why the transmit abort takes places.\n\n Note: The DW_apb_i2c flushes/resets/empties the TX_FIFO and RX_FIFO whenever there is a transmit abort caused by any of the events tracked by the IC_TX_ABRT_SOURCE register. The FIFOs remains in this flushed state until the register IC_CLR_TX_ABRT is read. Once this read is performed, the Tx FIFO is then ready to accept more data bytes from the APB interface.\n\n Reset value: 0x0 TX_ABRT interrupt is inactive INACTIVE 0 TX_ABRT interrupt is active ACTIVE 1 TX_ABRT read-only [5:5] This bit is set to 1 when DW_apb_i2c is acting as a slave and another I2C master is attempting to read data from DW_apb_i2c. The DW_apb_i2c holds the I2C bus in a wait state (SCL=0) until this interrupt is serviced, which means that the slave has been addressed by a remote master that is asking for data to be transferred. The processor must respond to this interrupt and then write the requested data to the IC_DATA_CMD register. This bit is set to 0 just after the processor reads the IC_CLR_RD_REQ register.\n\n Reset value: 0x0 RD_REQ interrupt is inactive INACTIVE 0 RD_REQ interrupt is active ACTIVE 1 RD_REQ read-only [4:4] The behavior of the TX_EMPTY interrupt status differs based on the TX_EMPTY_CTRL selection in the IC_CON register. - When TX_EMPTY_CTRL = 0: This bit is set to 1 when the transmit buffer is at or below the threshold value set in the IC_TX_TL register. - When TX_EMPTY_CTRL = 1: This bit is set to 1 when the transmit buffer is at or below the threshold value set in the IC_TX_TL register and the transmission of the address/data from the internal shift register for the most recently popped command is completed. It is automatically cleared by hardware when the buffer level goes above the threshold. When IC_ENABLE[0] is set to 0, the TX FIFO is flushed and held in reset. There the TX FIFO looks like it has no data within it, so this bit is set to 1, provided there is activity in the master or slave state machines. When there is no longer any activity, then with ic_en=0, this bit is set to 0.\n\n Reset value: 0x0. TX_EMPTY interrupt is inactive INACTIVE 0 TX_EMPTY interrupt is active ACTIVE 1 TX_EMPTY read-only [3:3] Set during transmit if the transmit buffer is filled to IC_TX_BUFFER_DEPTH and the processor attempts to issue another I2C command by writing to the IC_DATA_CMD register. When the module is disabled, this bit keeps its level until the master or slave state machines go into idle, and when ic_en goes to 0, this interrupt is cleared.\n\n Reset value: 0x0 TX_OVER interrupt is inactive INACTIVE 0 TX_OVER interrupt is active ACTIVE 1 TX_OVER read-only [2:2] Set when the receive buffer reaches or goes above the RX_TL threshold in the IC_RX_TL register. It is automatically cleared by hardware when buffer level goes below the threshold. If the module is disabled (IC_ENABLE[0]=0), the RX FIFO is flushed and held in reset; therefore the RX FIFO is not full. So this bit is cleared once the IC_ENABLE bit 0 is programmed with a 0, regardless of the activity that continues.\n\n Reset value: 0x0 RX_FULL interrupt is inactive INACTIVE 0 RX_FULL interrupt is active ACTIVE 1 RX_FULL read-only [1:1] Set if the receive buffer is completely filled to IC_RX_BUFFER_DEPTH and an additional byte is received from an external I2C device. The DW_apb_i2c acknowledges this, but any data bytes received after the FIFO is full are lost. If the module is disabled (IC_ENABLE[0]=0), this bit keeps its level until the master or slave state machines go into idle, and when ic_en goes to 0, this interrupt is cleared.\n\n Note: If bit 9 of the IC_CON register (RX_FIFO_FULL_HLD_CTRL) is programmed to HIGH, then the RX_OVER interrupt never occurs, because the Rx FIFO never overflows.\n\n Reset value: 0x0 RX_OVER interrupt is inactive INACTIVE 0 RX_OVER interrupt is active ACTIVE 1 RX_OVER read-only [0:0] Set if the processor attempts to read the receive buffer when it is empty by reading from the IC_DATA_CMD register. If the module is disabled (IC_ENABLE[0]=0), this bit keeps its level until the master or slave state machines go into idle, and when ic_en goes to 0, this interrupt is cleared.\n\n Reset value: 0x0 RX_UNDER interrupt is inactive INACTIVE 0 RX_UNDER interrupt is active ACTIVE 1 RX_UNDER IC_RAW_INTR_STAT 0x00000000 0x0038 I2C Receive FIFO Threshold Register read-write [7:0] Receive FIFO Threshold Level.\n\n Controls the level of entries (or above) that triggers the RX_FULL interrupt (bit 2 in IC_RAW_INTR_STAT register). The valid range is 0-255, with the additional restriction that hardware does not allow this value to be set to a value larger than the depth of the buffer. If an attempt is made to do that, the actual value set will be the maximum depth of the buffer. A value of 0 sets the threshold for 1 entry, and a value of 255 sets the threshold for 256 entries. RX_TL IC_RX_TL 0x00000000 0x003c I2C Transmit FIFO Threshold Register read-write [7:0] Transmit FIFO Threshold Level.\n\n Controls the level of entries (or below) that trigger the TX_EMPTY interrupt (bit 4 in IC_RAW_INTR_STAT register). The valid range is 0-255, with the additional restriction that it may not be set to value larger than the depth of the buffer. If an attempt is made to do that, the actual value set will be the maximum depth of the buffer. A value of 0 sets the threshold for 0 entries, and a value of 255 sets the threshold for 255 entries. TX_TL IC_TX_TL 0x00000000 0x0040 Clear Combined and Individual Interrupt Register read-only [0:0] Read this register to clear the combined interrupt, all individual interrupts, and the IC_TX_ABRT_SOURCE register. This bit does not clear hardware clearable interrupts but software clearable interrupts. Refer to Bit 9 of the IC_TX_ABRT_SOURCE register for an exception to clearing IC_TX_ABRT_SOURCE.\n\n Reset value: 0x0 CLR_INTR IC_CLR_INTR 0x00000000 0x0044 Clear RX_UNDER Interrupt Register read-only [0:0] Read this register to clear the RX_UNDER interrupt (bit 0) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_RX_UNDER IC_CLR_RX_UNDER 0x00000000 0x0048 Clear RX_OVER Interrupt Register read-only [0:0] Read this register to clear the RX_OVER interrupt (bit 1) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_RX_OVER IC_CLR_RX_OVER 0x00000000 0x004c Clear TX_OVER Interrupt Register read-only [0:0] Read this register to clear the TX_OVER interrupt (bit 3) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_TX_OVER IC_CLR_TX_OVER 0x00000000 0x0050 Clear RD_REQ Interrupt Register read-only [0:0] Read this register to clear the RD_REQ interrupt (bit 5) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_RD_REQ IC_CLR_RD_REQ 0x00000000 0x0054 Clear TX_ABRT Interrupt Register read-only [0:0] Read this register to clear the TX_ABRT interrupt (bit 6) of the IC_RAW_INTR_STAT register, and the IC_TX_ABRT_SOURCE register. This also releases the TX FIFO from the flushed/reset state, allowing more writes to the TX FIFO. Refer to Bit 9 of the IC_TX_ABRT_SOURCE register for an exception to clearing IC_TX_ABRT_SOURCE.\n\n Reset value: 0x0 CLR_TX_ABRT IC_CLR_TX_ABRT 0x00000000 0x0058 Clear RX_DONE Interrupt Register read-only [0:0] Read this register to clear the RX_DONE interrupt (bit 7) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_RX_DONE IC_CLR_RX_DONE 0x00000000 0x005c Clear ACTIVITY Interrupt Register read-only [0:0] Reading this register clears the ACTIVITY interrupt if the I2C is not active anymore. If the I2C module is still active on the bus, the ACTIVITY interrupt bit continues to be set. It is automatically cleared by hardware if the module is disabled and if there is no further activity on the bus. The value read from this register to get status of the ACTIVITY interrupt (bit 8) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_ACTIVITY IC_CLR_ACTIVITY 0x00000000 0x0060 Clear STOP_DET Interrupt Register read-only [0:0] Read this register to clear the STOP_DET interrupt (bit 9) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_STOP_DET IC_CLR_STOP_DET 0x00000000 0x0064 Clear START_DET Interrupt Register read-only [0:0] Read this register to clear the START_DET interrupt (bit 10) of the IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_START_DET IC_CLR_START_DET 0x00000000 0x0068 Clear GEN_CALL Interrupt Register read-only [0:0] Read this register to clear the GEN_CALL interrupt (bit 11) of IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_GEN_CALL IC_CLR_GEN_CALL 0x00000000 0x006c I2C Enable Register read-write [2:2] In Master mode: - 1'b1: Blocks the transmission of data on I2C bus even if Tx FIFO has data to transmit. - 1'b0: The transmission of data starts on I2C bus automatically, as soon as the first data is available in the Tx FIFO. Note: To block the execution of Master commands, set the TX_CMD_BLOCK bit only when Tx FIFO is empty (IC_STATUS[2]==1) and Master is in Idle state (IC_STATUS[5] == 0). Any further commands put in the Tx FIFO are not executed until TX_CMD_BLOCK bit is unset. Reset value: IC_TX_CMD_BLOCK_DEFAULT Tx Command execution not blocked NOT_BLOCKED 0 Tx Command execution blocked BLOCKED 1 TX_CMD_BLOCK read-write [1:1] When set, the controller initiates the transfer abort. - 0: ABORT not initiated or ABORT done - 1: ABORT operation in progress The software can abort the I2C transfer in master mode by setting this bit. The software can set this bit only when ENABLE is already set; otherwise, the controller ignores any write to ABORT bit. The software cannot clear the ABORT bit once set. In response to an ABORT, the controller issues a STOP and flushes the Tx FIFO after completing the current transfer, then sets the TX_ABORT interrupt after the abort operation. The ABORT bit is cleared automatically after the abort operation.\n\n For a detailed description on how to abort I2C transfers, refer to 'Aborting I2C Transfers'.\n\n Reset value: 0x0 ABORT operation not in progress DISABLE 0 ABORT operation in progress ENABLED 1 ABORT read-write [0:0] Controls whether the DW_apb_i2c is enabled. - 0: Disables DW_apb_i2c (TX and RX FIFOs are held in an erased state) - 1: Enables DW_apb_i2c Software can disable DW_apb_i2c while it is active. However, it is important that care be taken to ensure that DW_apb_i2c is disabled properly. A recommended procedure is described in 'Disabling DW_apb_i2c'.\n\n When DW_apb_i2c is disabled, the following occurs: - The TX FIFO and RX FIFO get flushed. - Status bits in the IC_INTR_STAT register are still active until DW_apb_i2c goes into IDLE state. If the module is transmitting, it stops as well as deletes the contents of the transmit buffer after the current transfer is complete. If the module is receiving, the DW_apb_i2c stops the current transfer at the end of the current byte and does not acknowledge the transfer.\n\n In systems with asynchronous pclk and ic_clk when IC_CLK_TYPE parameter set to asynchronous (1), there is a two ic_clk delay when enabling or disabling the DW_apb_i2c. For a detailed description on how to disable DW_apb_i2c, refer to 'Disabling DW_apb_i2c'\n\n Reset value: 0x0 I2C is disabled DISABLED 0 I2C is enabled ENABLED 1 ENABLE IC_ENABLE 0x00000000 0x0070 I2C Status Register\n\n This is a read-only register used to indicate the current transfer status and FIFO status. The status register may be read at any time. None of the bits in this register request an interrupt.\n\n When the I2C is disabled by writing 0 in bit 0 of the IC_ENABLE register: - Bits 1 and 2 are set to 1 - Bits 3 and 10 are set to 0 When the master or slave state machines goes to idle and ic_en=0: - Bits 5 and 6 are set to 0 read-only [6:6] Slave FSM Activity Status. When the Slave Finite State Machine (FSM) is not in the IDLE state, this bit is set. - 0: Slave FSM is in IDLE state so the Slave part of DW_apb_i2c is not Active - 1: Slave FSM is not in IDLE state so the Slave part of DW_apb_i2c is Active Reset value: 0x0 Slave is idle IDLE 0 Slave not idle ACTIVE 1 SLV_ACTIVITY read-only [5:5] Master FSM Activity Status. When the Master Finite State Machine (FSM) is not in the IDLE state, this bit is set. - 0: Master FSM is in IDLE state so the Master part of DW_apb_i2c is not Active - 1: Master FSM is not in IDLE state so the Master part of DW_apb_i2c is Active Note: IC_STATUS[0]-that is, ACTIVITY bit-is the OR of SLV_ACTIVITY and MST_ACTIVITY bits.\n\n Reset value: 0x0 Master is idle IDLE 0 Master not idle ACTIVE 1 MST_ACTIVITY read-only [4:4] Receive FIFO Completely Full. When the receive FIFO is completely full, this bit is set. When the receive FIFO contains one or more empty location, this bit is cleared. - 0: Receive FIFO is not full - 1: Receive FIFO is full Reset value: 0x0 Rx FIFO not full NOT_FULL 0 Rx FIFO is full FULL 1 RFF read-only [3:3] Receive FIFO Not Empty. This bit is set when the receive FIFO contains one or more entries; it is cleared when the receive FIFO is empty. - 0: Receive FIFO is empty - 1: Receive FIFO is not empty Reset value: 0x0 Rx FIFO is empty EMPTY 0 Rx FIFO not empty NOT_EMPTY 1 RFNE read-only [2:2] Transmit FIFO Completely Empty. When the transmit FIFO is completely empty, this bit is set. When it contains one or more valid entries, this bit is cleared. This bit field does not request an interrupt. - 0: Transmit FIFO is not empty - 1: Transmit FIFO is empty Reset value: 0x1 Tx FIFO not empty NON_EMPTY 0 Tx FIFO is empty EMPTY 1 TFE read-only [1:1] Transmit FIFO Not Full. Set when the transmit FIFO contains one or more empty locations, and is cleared when the FIFO is full. - 0: Transmit FIFO is full - 1: Transmit FIFO is not full Reset value: 0x1 Tx FIFO is full FULL 0 Tx FIFO not full NOT_FULL 1 TFNF read-only [0:0] I2C Activity Status. Reset value: 0x0 I2C is idle INACTIVE 0 I2C is active ACTIVE 1 ACTIVITY IC_STATUS 0x00000006 0x0074 I2C Transmit FIFO Level Register This register contains the number of valid data entries in the transmit FIFO buffer. It is cleared whenever: - The I2C is disabled - There is a transmit abort - that is, TX_ABRT bit is set in the IC_RAW_INTR_STAT register - The slave bulk transmit mode is aborted The register increments whenever data is placed into the transmit FIFO and decrements when data is taken from the transmit FIFO. read-only [4:0] Transmit FIFO Level. Contains the number of valid data entries in the transmit FIFO.\n\n Reset value: 0x0 TXFLR IC_TXFLR 0x00000000 0x0078 I2C Receive FIFO Level Register This register contains the number of valid data entries in the receive FIFO buffer. It is cleared whenever: - The I2C is disabled - Whenever there is a transmit abort caused by any of the events tracked in IC_TX_ABRT_SOURCE The register increments whenever data is placed into the receive FIFO and decrements when data is taken from the receive FIFO. read-only [4:0] Receive FIFO Level. Contains the number of valid data entries in the receive FIFO.\n\n Reset value: 0x0 RXFLR IC_RXFLR 0x00000000 0x007c I2C SDA Hold Time Length Register\n\n The bits [15:0] of this register are used to control the hold time of SDA during transmit in both slave and master mode (after SCL goes from HIGH to LOW).\n\n The bits [23:16] of this register are used to extend the SDA transition (if any) whenever SCL is HIGH in the receiver in either master or slave mode.\n\n Writes to this register succeed only when IC_ENABLE[0]=0.\n\n The values in this register are in units of ic_clk period. The value programmed in IC_SDA_TX_HOLD must be greater than the minimum hold time in each mode one cycle in master mode, seven cycles in slave mode for the value to be implemented.\n\n The programmed SDA hold time during transmit (IC_SDA_TX_HOLD) cannot exceed at any time the duration of the low part of scl. Therefore the programmed value cannot be larger than N_SCL_LOW-2, where N_SCL_LOW is the duration of the low part of the scl period measured in ic_clk cycles. read-write [23:16] Sets the required SDA hold time in units of ic_clk period, when DW_apb_i2c acts as a receiver.\n\n Reset value: IC_DEFAULT_SDA_HOLD[23:16]. IC_SDA_RX_HOLD read-write [15:0] Sets the required SDA hold time in units of ic_clk period, when DW_apb_i2c acts as a transmitter.\n\n Reset value: IC_DEFAULT_SDA_HOLD[15:0]. IC_SDA_TX_HOLD IC_SDA_HOLD 0x00000001 0x0080 I2C Transmit Abort Source Register\n\n This register has 32 bits that indicate the source of the TX_ABRT bit. Except for Bit 9, this register is cleared whenever the IC_CLR_TX_ABRT register or the IC_CLR_INTR register is read. To clear Bit 9, the source of the ABRT_SBYTE_NORSTRT must be fixed first; RESTART must be enabled (IC_CON[5]=1), the SPECIAL bit must be cleared (IC_TAR[11]), or the GC_OR_START bit must be cleared (IC_TAR[10]).\n\n Once the source of the ABRT_SBYTE_NORSTRT is fixed, then this bit can be cleared in the same manner as other bits in this register. If the source of the ABRT_SBYTE_NORSTRT is not fixed before attempting to clear this bit, Bit 9 clears for one cycle and is then re-asserted. read-only [31:23] This field indicates the number of Tx FIFO Data Commands which are flushed due to TX_ABRT interrupt. It is cleared whenever I2C is disabled.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Slave-Transmitter TX_FLUSH_CNT read-only [16:16] This is a master-mode-only bit. Master has detected the transfer abort (IC_ENABLE[1])\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter Transfer abort detected by master- scenario not present ABRT_USER_ABRT_VOID 0 Transfer abort detected by master ABRT_USER_ABRT_GENERATED 1 ABRT_USER_ABRT read-only [15:15] 1: When the processor side responds to a slave mode request for data to be transmitted to a remote master and user writes a 1 in CMD (bit 8) of IC_DATA_CMD register.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Slave-Transmitter Slave trying to transmit to remote master in read mode- scenario not present ABRT_SLVRD_INTX_VOID 0 Slave trying to transmit to remote master in read mode ABRT_SLVRD_INTX_GENERATED 1 ABRT_SLVRD_INTX read-only [14:14] This field indicates that a Slave has lost the bus while transmitting data to a remote master. IC_TX_ABRT_SOURCE[12] is set at the same time. Note: Even though the slave never 'owns' the bus, something could go wrong on the bus. This is a fail safe check. For instance, during a data transmission at the low-to-high transition of SCL, if what is on the data bus is not what is supposed to be transmitted, then DW_apb_i2c no longer own the bus.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Slave-Transmitter Slave lost arbitration to remote master- scenario not present ABRT_SLV_ARBLOST_VOID 0 Slave lost arbitration to remote master ABRT_SLV_ARBLOST_GENERATED 1 ABRT_SLV_ARBLOST read-only [13:13] This field specifies that the Slave has received a read command and some data exists in the TX FIFO, so the slave issues a TX_ABRT interrupt to flush old data in TX FIFO.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Slave-Transmitter Slave flushes existing data in TX-FIFO upon getting read command- scenario not present ABRT_SLVFLUSH_TXFIFO_VOID 0 Slave flushes existing data in TX-FIFO upon getting read command ABRT_SLVFLUSH_TXFIFO_GENERATED 1 ABRT_SLVFLUSH_TXFIFO read-only [12:12] This field specifies that the Master has lost arbitration, or if IC_TX_ABRT_SOURCE[14] is also set, then the slave transmitter has lost arbitration.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Slave-Transmitter Master or Slave-Transmitter lost arbitration- scenario not present ABRT_LOST_VOID 0 Master or Slave-Transmitter lost arbitration ABRT_LOST_GENERATED 1 ARB_LOST read-only [11:11] This field indicates that the User tries to initiate a Master operation with the Master mode disabled.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Master-Receiver User initiating master operation when MASTER disabled- scenario not present ABRT_MASTER_DIS_VOID 0 User initiating master operation when MASTER disabled ABRT_MASTER_DIS_GENERATED 1 ABRT_MASTER_DIS read-only [10:10] This field indicates that the restart is disabled (IC_RESTART_EN bit (IC_CON[5]) =0) and the master sends a read command in 10-bit addressing mode.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Receiver Master not trying to read in 10Bit addressing mode when RESTART disabled ABRT_10B_RD_VOID 0 Master trying to read in 10Bit addressing mode when RESTART disabled ABRT_10B_RD_GENERATED 1 ABRT_10B_RD_NORSTRT read-only [9:9] To clear Bit 9, the source of the ABRT_SBYTE_NORSTRT must be fixed first; restart must be enabled (IC_CON[5]=1), the SPECIAL bit must be cleared (IC_TAR[11]), or the GC_OR_START bit must be cleared (IC_TAR[10]). Once the source of the ABRT_SBYTE_NORSTRT is fixed, then this bit can be cleared in the same manner as other bits in this register. If the source of the ABRT_SBYTE_NORSTRT is not fixed before attempting to clear this bit, bit 9 clears for one cycle and then gets reasserted. When this field is set to 1, the restart is disabled (IC_RESTART_EN bit (IC_CON[5]) =0) and the user is trying to send a START Byte.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master User trying to send START byte when RESTART disabled- scenario not present ABRT_SBYTE_NORSTRT_VOID 0 User trying to send START byte when RESTART disabled ABRT_SBYTE_NORSTRT_GENERATED 1 ABRT_SBYTE_NORSTRT read-only [8:8] This field indicates that the restart is disabled (IC_RESTART_EN bit (IC_CON[5]) =0) and the user is trying to use the master to transfer data in High Speed mode.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Master-Receiver User trying to switch Master to HS mode when RESTART disabled- scenario not present ABRT_HS_NORSTRT_VOID 0 User trying to switch Master to HS mode when RESTART disabled ABRT_HS_NORSTRT_GENERATED 1 ABRT_HS_NORSTRT read-only [7:7] This field indicates that the Master has sent a START Byte and the START Byte was acknowledged (wrong behavior).\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master ACK detected for START byte- scenario not present ABRT_SBYTE_ACKDET_VOID 0 ACK detected for START byte ABRT_SBYTE_ACKDET_GENERATED 1 ABRT_SBYTE_ACKDET read-only [6:6] This field indicates that the Master is in High Speed mode and the High Speed Master code was acknowledged (wrong behavior).\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master HS Master code ACKed in HS Mode- scenario not present ABRT_HS_ACK_VOID 0 HS Master code ACKed in HS Mode ABRT_HS_ACK_GENERATED 1 ABRT_HS_ACKDET read-only [5:5] This field indicates that DW_apb_i2c in the master mode has sent a General Call but the user programmed the byte following the General Call to be a read from the bus (IC_DATA_CMD[9] is set to 1).\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter GCALL is followed by read from bus-scenario not present ABRT_GCALL_READ_VOID 0 GCALL is followed by read from bus ABRT_GCALL_READ_GENERATED 1 ABRT_GCALL_READ read-only [4:4] This field indicates that DW_apb_i2c in master mode has sent a General Call and no slave on the bus acknowledged the General Call.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter GCALL not ACKed by any slave-scenario not present ABRT_GCALL_NOACK_VOID 0 GCALL not ACKed by any slave ABRT_GCALL_NOACK_GENERATED 1 ABRT_GCALL_NOACK read-only [3:3] This field indicates the master-mode only bit. When the master receives an acknowledgement for the address, but when it sends data byte(s) following the address, it did not receive an acknowledge from the remote slave(s).\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter Transmitted data non-ACKed by addressed slave-scenario not present ABRT_TXDATA_NOACK_VOID 0 Transmitted data not ACKed by addressed slave ABRT_TXDATA_NOACK_GENERATED 1 ABRT_TXDATA_NOACK read-only [2:2] This field indicates that the Master is in 10-bit address mode and that the second address byte of the 10-bit address was not acknowledged by any slave.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Master-Receiver This abort is not generated INACTIVE 0 Byte 2 of 10Bit Address not ACKed by any slave ACTIVE 1 ABRT_10ADDR2_NOACK read-only [1:1] This field indicates that the Master is in 10-bit address mode and the first 10-bit address byte was not acknowledged by any slave.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Master-Receiver This abort is not generated INACTIVE 0 Byte 1 of 10Bit Address not ACKed by any slave ACTIVE 1 ABRT_10ADDR1_NOACK read-only [0:0] This field indicates that the Master is in 7-bit addressing mode and the address sent was not acknowledged by any slave.\n\n Reset value: 0x0\n\n Role of DW_apb_i2c: Master-Transmitter or Master-Receiver This abort is not generated INACTIVE 0 This abort is generated because of NOACK for 7-bit address ACTIVE 1 ABRT_7B_ADDR_NOACK IC_TX_ABRT_SOURCE 0x00000000 0x0084 Generate Slave Data NACK Register\n\n The register is used to generate a NACK for the data part of a transfer when DW_apb_i2c is acting as a slave-receiver. This register only exists when the IC_SLV_DATA_NACK_ONLY parameter is set to 1. When this parameter disabled, this register does not exist and writing to the register's address has no effect.\n\n A write can occur on this register if both of the following conditions are met: - DW_apb_i2c is disabled (IC_ENABLE[0] = 0) - Slave part is inactive (IC_STATUS[6] = 0) Note: The IC_STATUS[6] is a register read-back location for the internal slv_activity signal; the user should poll this before writing the ic_slv_data_nack_only bit. read-write [0:0] Generate NACK. This NACK generation only occurs when DW_apb_i2c is a slave-receiver. If this register is set to a value of 1, it can only generate a NACK after a data byte is received; hence, the data transfer is aborted and the data received is not pushed to the receive buffer.\n\n When the register is set to a value of 0, it generates NACK/ACK, depending on normal criteria. - 1: generate NACK after data byte received - 0: generate NACK/ACK normally Reset value: 0x0 Slave receiver generates NACK normally DISABLED 0 Slave receiver generates NACK upon data reception only ENABLED 1 NACK IC_SLV_DATA_NACK_ONLY 0x00000000 0x0088 DMA Control Register\n\n The register is used to enable the DMA Controller interface operation. There is a separate bit for transmit and receive. This can be programmed regardless of the state of IC_ENABLE. read-write [1:1] Transmit DMA Enable. This bit enables/disables the transmit FIFO DMA channel. Reset value: 0x0 transmit FIFO DMA channel disabled DISABLED 0 Transmit FIFO DMA channel enabled ENABLED 1 TDMAE read-write [0:0] Receive DMA Enable. This bit enables/disables the receive FIFO DMA channel. Reset value: 0x0 Receive FIFO DMA channel disabled DISABLED 0 Receive FIFO DMA channel enabled ENABLED 1 RDMAE IC_DMA_CR 0x00000000 0x008c DMA Transmit Data Level Register read-write [3:0] Transmit Data Level. This bit field controls the level at which a DMA request is made by the transmit logic. It is equal to the watermark level; that is, the dma_tx_req signal is generated when the number of valid data entries in the transmit FIFO is equal to or below this field value, and TDMAE = 1.\n\n Reset value: 0x0 DMATDL IC_DMA_TDLR 0x00000000 0x0090 I2C Receive Data Level Register read-write [3:0] Receive Data Level. This bit field controls the level at which a DMA request is made by the receive logic. The watermark level = DMARDL+1; that is, dma_rx_req is generated when the number of valid data entries in the receive FIFO is equal to or more than this field value + 1, and RDMAE =1. For instance, when DMARDL is 0, then dma_rx_req is asserted when 1 or more data entries are present in the receive FIFO.\n\n Reset value: 0x0 DMARDL IC_DMA_RDLR 0x00000000 0x0094 I2C SDA Setup Register\n\n This register controls the amount of time delay (in terms of number of ic_clk clock periods) introduced in the rising edge of SCL - relative to SDA changing - when DW_apb_i2c services a read request in a slave-transmitter operation. The relevant I2C requirement is tSU:DAT (note 4) as detailed in the I2C Bus Specification. This register must be programmed with a value equal to or greater than 2.\n\n Writes to this register succeed only when IC_ENABLE[0] = 0.\n\n Note: The length of setup time is calculated using [(IC_SDA_SETUP - 1) * (ic_clk_period)], so if the user requires 10 ic_clk periods of setup time, they should program a value of 11. The IC_SDA_SETUP register is only used by the DW_apb_i2c when operating as a slave transmitter. read-write [7:0] SDA Setup. It is recommended that if the required delay is 1000ns, then for an ic_clk frequency of 10 MHz, IC_SDA_SETUP should be programmed to a value of 11. IC_SDA_SETUP must be programmed with a minimum value of 2. SDA_SETUP IC_SDA_SETUP 0x00000064 0x0098 I2C ACK General Call Register\n\n The register controls whether DW_apb_i2c responds with a ACK or NACK when it receives an I2C General Call address.\n\n This register is applicable only when the DW_apb_i2c is in slave mode. read-write [0:0] ACK General Call. When set to 1, DW_apb_i2c responds with a ACK (by asserting ic_data_oe) when it receives a General Call. Otherwise, DW_apb_i2c responds with a NACK (by negating ic_data_oe). Generate NACK for a General Call DISABLED 0 Generate ACK for a General Call ENABLED 1 ACK_GEN_CALL IC_ACK_GENERAL_CALL 0x00000001 0x009c I2C Enable Status Register\n\n The register is used to report the DW_apb_i2c hardware status when the IC_ENABLE[0] register is set from 1 to 0; that is, when DW_apb_i2c is disabled.\n\n If IC_ENABLE[0] has been set to 1, bits 2:1 are forced to 0, and bit 0 is forced to 1.\n\n If IC_ENABLE[0] has been set to 0, bits 2:1 is only be valid as soon as bit 0 is read as '0'.\n\n Note: When IC_ENABLE[0] has been set to 0, a delay occurs for bit 0 to be read as 0 because disabling the DW_apb_i2c depends on I2C bus activities. read-only [2:2] Slave Received Data Lost. This bit indicates if a Slave-Receiver operation has been aborted with at least one data byte received from an I2C transfer due to the setting bit 0 of IC_ENABLE from 1 to 0. When read as 1, DW_apb_i2c is deemed to have been actively engaged in an aborted I2C transfer (with matching address) and the data phase of the I2C transfer has been entered, even though a data byte has been responded with a NACK.\n\n Note: If the remote I2C master terminates the transfer with a STOP condition before the DW_apb_i2c has a chance to NACK a transfer, and IC_ENABLE[0] has been set to 0, then this bit is also set to 1.\n\n When read as 0, DW_apb_i2c is deemed to have been disabled without being actively involved in the data phase of a Slave-Receiver transfer.\n\n Note: The CPU can safely read this bit when IC_EN (bit 0) is read as 0.\n\n Reset value: 0x0 Slave RX Data is not lost INACTIVE 0 Slave RX Data is lost ACTIVE 1 SLV_RX_DATA_LOST read-only [1:1] Slave Disabled While Busy (Transmit, Receive). This bit indicates if a potential or active Slave operation has been aborted due to the setting bit 0 of the IC_ENABLE register from 1 to 0. This bit is set when the CPU writes a 0 to the IC_ENABLE register while:\n\n (a) DW_apb_i2c is receiving the address byte of the Slave-Transmitter operation from a remote master;\n\n OR,\n\n (b) address and data bytes of the Slave-Receiver operation from a remote master.\n\n When read as 1, DW_apb_i2c is deemed to have forced a NACK during any part of an I2C transfer, irrespective of whether the I2C address matches the slave address set in DW_apb_i2c (IC_SAR register) OR if the transfer is completed before IC_ENABLE is set to 0 but has not taken effect.\n\n Note: If the remote I2C master terminates the transfer with a STOP condition before the DW_apb_i2c has a chance to NACK a transfer, and IC_ENABLE[0] has been set to 0, then this bit will also be set to 1.\n\n When read as 0, DW_apb_i2c is deemed to have been disabled when there is master activity, or when the I2C bus is idle.\n\n Note: The CPU can safely read this bit when IC_EN (bit 0) is read as 0.\n\n Reset value: 0x0 Slave is disabled when it is idle INACTIVE 0 Slave is disabled when it is active ACTIVE 1 SLV_DISABLED_WHILE_BUSY read-only [0:0] ic_en Status. This bit always reflects the value driven on the output port ic_en. - When read as 1, DW_apb_i2c is deemed to be in an enabled state. - When read as 0, DW_apb_i2c is deemed completely inactive. Note: The CPU can safely read this bit anytime. When this bit is read as 0, the CPU can safely read SLV_RX_DATA_LOST (bit 2) and SLV_DISABLED_WHILE_BUSY (bit 1).\n\n Reset value: 0x0 I2C disabled DISABLED 0 I2C enabled ENABLED 1 IC_EN IC_ENABLE_STATUS 0x00000000 0x00a0 I2C SS, FS or FM+ spike suppression limit\n\n This register is used to store the duration, measured in ic_clk cycles, of the longest spike that is filtered out by the spike suppression logic when the component is operating in SS, FS or FM+ modes. The relevant I2C requirement is tSP (table 4) as detailed in the I2C Bus Specification. This register must be programmed with a minimum value of 1. read-write [7:0] This register must be set before any I2C bus transaction can take place to ensure stable operation. This register sets the duration, measured in ic_clk cycles, of the longest spike in the SCL or SDA lines that will be filtered out by the spike suppression logic. This register can be written only when the I2C interface is disabled which corresponds to the IC_ENABLE[0] register being set to 0. Writes at other times have no effect. The minimum valid value is 1; hardware prevents values less than this being written, and if attempted results in 1 being set. or more information, refer to 'Spike Suppression'. IC_FS_SPKLEN IC_FS_SPKLEN 0x00000007 0x00a8 Clear RESTART_DET Interrupt Register read-only [0:0] Read this register to clear the RESTART_DET interrupt (bit 12) of IC_RAW_INTR_STAT register.\n\n Reset value: 0x0 CLR_RESTART_DET IC_CLR_RESTART_DET 0x00000000 0x00f4 Component Parameter Register 1\n\n Note This register is not implemented and therefore reads as 0. If it was implemented it would be a constant read-only register that contains encoded information about the component's parameter settings. Fields shown below are the settings for those parameters read-only [23:16] TX Buffer Depth = 16 TX_BUFFER_DEPTH read-only [15:8] RX Buffer Depth = 16 RX_BUFFER_DEPTH read-only [7:7] Encoded parameters not visible ADD_ENCODED_PARAMS read-only [6:6] DMA handshaking signals are enabled HAS_DMA read-only [5:5] COMBINED Interrupt outputs INTR_IO read-only [4:4] Programmable count values for each mode. HC_COUNT_VALUES read-only [3:2] MAX SPEED MODE = FAST MODE MAX_SPEED_MODE read-only [1:0] APB data bus width is 32 bits APB_DATA_WIDTH IC_COMP_PARAM_1 0x00000000 0x00f8 I2C Component Version Register read-only [31:0] IC_COMP_VERSION IC_COMP_VERSION 0x3230312a 0x00fc I2C Component Type Register read-only [31:0] Designware Component Type number = 0x44_57_01_40. This assigned unique hex value is constant and is derived from the two ASCII letters 'DW' followed by a 16-bit unsigned number. IC_COMP_TYPE IC_COMP_TYPE 0x44570140 32 1 0x40048000 I2C1_IRQ 24 I2C1 0 0x1000 registers 0x4004c000 Control and data interface to SAR ADC ADC_IRQ_FIFO 22 ADC 0x0000 ADC Control and Status read-write [20:16] Round-robin sampling. 1 bit per channel. Set all bits to 0 to disable.\n Otherwise, the ADC will cycle through each enabled channel in a round-robin fashion.\n The first channel to be sampled will be the one currently indicated by AINSEL.\n AINSEL will be updated after each conversion with the newly-selected channel. RROBIN read-write [14:12] Select analog mux input. Updated automatically in round-robin mode. AINSEL read-write [10:10] Some past ADC conversion encountered an error. Write 1 to clear. oneToClear ERR_STICKY read-only [9:9] The most recent ADC conversion encountered an error; result is undefined or noisy. ERR read-only [8:8] 1 if the ADC is ready to start a new conversion. Implies any previous conversion has completed.\n 0 whilst conversion in progress. READY read-write [3:3] Continuously perform conversions whilst this bit is 1. A new conversion will start immediately after the previous finishes. START_MANY read-write [2:2] Start a single conversion. Self-clearing. Ignored if start_many is asserted. clear START_ONCE read-write [1:1] Power on temperature sensor. 1 - enabled. 0 - disabled. TS_EN read-write [0:0] Power on ADC and enable its clock.\n 1 - enabled. 0 - disabled. EN CS 0x00000000 0x0004 Result of most recent ADC conversion read-only [11:0] RESULT RESULT 0x00000000 0x0008 FIFO control and status read-write [27:24] DREQ/IRQ asserted when level >= threshold THRESH read-only [19:16] The number of conversion results currently waiting in the FIFO LEVEL read-write [11:11] 1 if the FIFO has been overflowed. Write 1 to clear. oneToClear OVER read-write [10:10] 1 if the FIFO has been underflowed. Write 1 to clear. oneToClear UNDER read-only [9:9] FULL read-only [8:8] EMPTY read-write [3:3] If 1: assert DMA requests when FIFO contains data DREQ_EN read-write [2:2] If 1: conversion error bit appears in the FIFO alongside the result ERR read-write [1:1] If 1: FIFO results are right-shifted to be one byte in size. Enables DMA to byte buffers. SHIFT read-write [0:0] If 1: write result to the FIFO after each conversion. EN FCS 0x00000000 0x000c Conversion result FIFO read-only [15:15] 1 if this particular sample experienced a conversion error. Remains in the same location if the sample is shifted. ERR read-only [11:0] VAL FIFO 0x00000000 0x0010 Clock divider. If non-zero, CS_START_MANY will start conversions\n at regular intervals rather than back-to-back.\n The divider is reset when either of these fields are written.\n Total period is 1 + INT + FRAC / 256 read-write [23:8] Integer part of clock divisor. INT read-write [7:0] Fractional part of clock divisor. First-order delta-sigma. FRAC DIV 0x00000000 0x0014 Raw Interrupts read-only [0:0] Triggered when the sample FIFO reaches a certain level.\n This level can be programmed via the FCS_THRESH field. FIFO INTR 0x00000000 0x0018 Interrupt Enable read-write [0:0] Triggered when the sample FIFO reaches a certain level.\n This level can be programmed via the FCS_THRESH field. FIFO INTE 0x00000000 0x001c Interrupt Force read-write [0:0] Triggered when the sample FIFO reaches a certain level.\n This level can be programmed via the FCS_THRESH field. FIFO INTF 0x00000000 0x0020 Interrupt status after masking & forcing read-only [0:0] Triggered when the sample FIFO reaches a certain level.\n This level can be programmed via the FCS_THRESH field. FIFO INTS 0x00000000 32 2 0 0x1000 registers 0x40050000 Simple PWM PWM_IRQ_WRAP 4 PWM 0x0000 Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH0_CSR 0x00000000 0x0004 INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH0_DIV 0x00000010 0x0008 Direct access to the PWM counter read-write [15:0] CH0_CTR CH0_CTR 0x00000000 0x000c Counter compare values read-write [31:16] B read-write [15:0] A CH0_CC 0x00000000 0x0010 Counter wrap value read-write [15:0] CH0_TOP CH0_TOP 0x0000ffff 0x0014 Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH1_CSR 0x00000000 0x0018 INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH1_DIV 0x00000010 0x001c Direct access to the PWM counter read-write [15:0] CH1_CTR CH1_CTR 0x00000000 0x0020 Counter compare values read-write [31:16] B read-write [15:0] A CH1_CC 0x00000000 0x0024 Counter wrap value read-write [15:0] CH1_TOP CH1_TOP 0x0000ffff 0x0028 Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH2_CSR 0x00000000 0x002c INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH2_DIV 0x00000010 0x0030 Direct access to the PWM counter read-write [15:0] CH2_CTR CH2_CTR 0x00000000 0x0034 Counter compare values read-write [31:16] B read-write [15:0] A CH2_CC 0x00000000 0x0038 Counter wrap value read-write [15:0] CH2_TOP CH2_TOP 0x0000ffff 0x003c Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH3_CSR 0x00000000 0x0040 INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH3_DIV 0x00000010 0x0044 Direct access to the PWM counter read-write [15:0] CH3_CTR CH3_CTR 0x00000000 0x0048 Counter compare values read-write [31:16] B read-write [15:0] A CH3_CC 0x00000000 0x004c Counter wrap value read-write [15:0] CH3_TOP CH3_TOP 0x0000ffff 0x0050 Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH4_CSR 0x00000000 0x0054 INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH4_DIV 0x00000010 0x0058 Direct access to the PWM counter read-write [15:0] CH4_CTR CH4_CTR 0x00000000 0x005c Counter compare values read-write [31:16] B read-write [15:0] A CH4_CC 0x00000000 0x0060 Counter wrap value read-write [15:0] CH4_TOP CH4_TOP 0x0000ffff 0x0064 Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH5_CSR 0x00000000 0x0068 INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH5_DIV 0x00000010 0x006c Direct access to the PWM counter read-write [15:0] CH5_CTR CH5_CTR 0x00000000 0x0070 Counter compare values read-write [31:16] B read-write [15:0] A CH5_CC 0x00000000 0x0074 Counter wrap value read-write [15:0] CH5_TOP CH5_TOP 0x0000ffff 0x0078 Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH6_CSR 0x00000000 0x007c INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH6_DIV 0x00000010 0x0080 Direct access to the PWM counter read-write [15:0] CH6_CTR CH6_CTR 0x00000000 0x0084 Counter compare values read-write [31:16] B read-write [15:0] A CH6_CC 0x00000000 0x0088 Counter wrap value read-write [15:0] CH6_TOP CH6_TOP 0x0000ffff 0x008c Control and status register read-write [7:7] Advance the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running\n at less than full speed (div_int + div_frac / 16 > 1) clear PH_ADV read-write [6:6] Retard the phase of the counter by 1 count, while it is running.\n Self-clearing. Write a 1, and poll until low. Counter must be running. clear PH_RET read-write [5:4] Free-running counting at rate dictated by fractional divider div 0 Fractional divider operation is gated by the PWM B pin. level 1 Counter advances with each rising edge of the PWM B pin. rise 2 Counter advances with each falling edge of the PWM B pin. fall 3 DIVMODE read-write [3:3] Invert output B B_INV read-write [2:2] Invert output A A_INV read-write [1:1] 1: Enable phase-correct modulation. 0: Trailing-edge PH_CORRECT read-write [0:0] Enable the PWM channel. EN CH7_CSR 0x00000000 0x0090 INT and FRAC form a fixed-point fractional number.\n Counting rate is system clock frequency divided by this number.\n Fractional division uses simple 1st-order sigma-delta. read-write [11:4] INT read-write [3:0] FRAC CH7_DIV 0x00000010 0x0094 Direct access to the PWM counter read-write [15:0] CH7_CTR CH7_CTR 0x00000000 0x0098 Counter compare values read-write [31:16] B read-write [15:0] A CH7_CC 0x00000000 0x009c Counter wrap value read-write [15:0] CH7_TOP CH7_TOP 0x0000ffff 0x00a0 This register aliases the CSR_EN bits for all channels.\n Writing to this register allows multiple channels to be enabled\n or disabled simultaneously, so they can run in perfect sync.\n For each channel, there is only one physical EN register bit,\n which can be accessed through here or CHx_CSR. read-write [7:7] CH7 read-write [6:6] CH6 read-write [5:5] CH5 read-write [4:4] CH4 read-write [3:3] CH3 read-write [2:2] CH2 read-write [1:1] CH1 read-write [0:0] CH0 EN 0x00000000 0x00a4 Raw Interrupts read-write [7:7] oneToClear CH7 read-write [6:6] oneToClear CH6 read-write [5:5] oneToClear CH5 read-write [4:4] oneToClear CH4 read-write [3:3] oneToClear CH3 read-write [2:2] oneToClear CH2 read-write [1:1] oneToClear CH1 read-write [0:0] oneToClear CH0 INTR 0x00000000 0x00a8 Interrupt Enable read-write [7:7] CH7 read-write [6:6] CH6 read-write [5:5] CH5 read-write [4:4] CH4 read-write [3:3] CH3 read-write [2:2] CH2 read-write [1:1] CH1 read-write [0:0] CH0 INTE 0x00000000 0x00ac Interrupt Force read-write [7:7] CH7 read-write [6:6] CH6 read-write [5:5] CH5 read-write [4:4] CH4 read-write [3:3] CH3 read-write [2:2] CH2 read-write [1:1] CH1 read-write [0:0] CH0 INTF 0x00000000 0x00b0 Interrupt status after masking & forcing read-only [7:7] CH7 read-only [6:6] CH6 read-only [5:5] CH5 read-only [4:4] CH4 read-only [3:3] CH3 read-only [2:2] CH2 read-only [1:1] CH1 read-only [0:0] CH0 INTS 0x00000000 32 1 0 0x1000 registers 0x40054000 Controls time and alarms\n time is a 64 bit value indicating the time in usec since power-on\n timeh is the top 32 bits of time & timel is the bottom 32 bits\n to change time write to timelw before timehw\n to read time read from timelr before timehr\n An alarm is set by setting alarm_enable and writing to the corresponding alarm register\n When an alarm is pending, the corresponding alarm_running signal will be high\n An alarm can be cancelled before it has finished by clearing the alarm_enable\n When an alarm fires, the corresponding alarm_irq is set and alarm_running is cleared\n To clear the interrupt write a 1 to the corresponding alarm_irq TIMER_IRQ_0 0 TIMER_IRQ_1 1 TIMER_IRQ_2 2 TIMER_IRQ_3 3 TIMER write-only 0x0000 Write to bits 63:32 of time\n always write timelw before timehw TIMEHW 0x00000000 write-only 0x0004 Write to bits 31:0 of time\n writes do not get copied to time until timehw is written TIMELW 0x00000000 read-only 0x0008 Read from bits 63:32 of time\n always read timelr before timehr TIMEHR 0x00000000 read-only 0x000c Read from bits 31:0 of time TIMELR 0x00000000 read-write 0x0010 Arm alarm 0, and configure the time it will fire.\n Once armed, the alarm fires when TIMER_ALARM0 == TIMELR.\n The alarm will disarm itself once it fires, and can\n be disarmed early using the ARMED status register. ALARM0 0x00000000 read-write 0x0014 Arm alarm 1, and configure the time it will fire.\n Once armed, the alarm fires when TIMER_ALARM1 == TIMELR.\n The alarm will disarm itself once it fires, and can\n be disarmed early using the ARMED status register. ALARM1 0x00000000 read-write 0x0018 Arm alarm 2, and configure the time it will fire.\n Once armed, the alarm fires when TIMER_ALARM2 == TIMELR.\n The alarm will disarm itself once it fires, and can\n be disarmed early using the ARMED status register. ALARM2 0x00000000 read-write 0x001c Arm alarm 3, and configure the time it will fire.\n Once armed, the alarm fires when TIMER_ALARM3 == TIMELR.\n The alarm will disarm itself once it fires, and can\n be disarmed early using the ARMED status register. ALARM3 0x00000000 0x0020 Indicates the armed/disarmed status of each alarm.\n A write to the corresponding ALARMx register arms the alarm.\n Alarms automatically disarm upon firing, but writing ones here\n will disarm immediately without waiting to fire. read-write [3:0] oneToClear ARMED ARMED 0x00000000 read-only 0x0024 Raw read from bits 63:32 of time (no side effects) TIMERAWH 0x00000000 read-only 0x0028 Raw read from bits 31:0 of time (no side effects) TIMERAWL 0x00000000 0x002c Set bits high to enable pause when the corresponding debug ports are active read-write [2:2] Pause when processor 1 is in debug mode DBG1 read-write [1:1] Pause when processor 0 is in debug mode DBG0 DBGPAUSE 0x00000007 0x0030 Set high to pause the timer read-write [0:0] PAUSE PAUSE 0x00000000 0x0034 Raw Interrupts read-write [3:3] oneToClear ALARM_3 read-write [2:2] oneToClear ALARM_2 read-write [1:1] oneToClear ALARM_1 read-write [0:0] oneToClear ALARM_0 INTR 0x00000000 0x0038 Interrupt Enable read-write [3:3] ALARM_3 read-write [2:2] ALARM_2 read-write [1:1] ALARM_1 read-write [0:0] ALARM_0 INTE 0x00000000 0x003c Interrupt Force read-write [3:3] ALARM_3 read-write [2:2] ALARM_2 read-write [1:1] ALARM_1 read-write [0:0] ALARM_0 INTF 0x00000000 0x0040 Interrupt status after masking & forcing read-only [3:3] ALARM_3 read-only [2:2] ALARM_2 read-only [1:1] ALARM_1 read-only [0:0] ALARM_0 INTS 0x00000000 32 1 0 0x1000 registers 0x40058000 WATCHDOG 0x0000 Watchdog control\n The rst_wdsel register determines which subsystems are reset when the watchdog is triggered.\n The watchdog can be triggered in software. read-write [31:31] Trigger a watchdog reset clear TRIGGER read-write [30:30] When not enabled the watchdog timer is paused ENABLE read-write [26:26] Pause the watchdog timer when processor 1 is in debug mode PAUSE_DBG1 read-write [25:25] Pause the watchdog timer when processor 0 is in debug mode PAUSE_DBG0 read-write [24:24] Pause the watchdog timer when JTAG is accessing the bus fabric PAUSE_JTAG read-only [23:0] Indicates the number of ticks / 2 (see errata RP2040-E1) before a watchdog reset will be triggered TIME CTRL 0x07000000 0x0004 Load the watchdog timer. The maximum setting is 0xffffff which corresponds to 0xffffff / 2 ticks before triggering a watchdog reset (see errata RP2040-E1). write-only [23:0] LOAD LOAD 0x00000000 0x0008 Logs the reason for the last reset. Both bits are zero for the case of a hardware reset. read-only [1:1] FORCE read-only [0:0] TIMER REASON 0x00000000 read-write 0x000c Scratch register. Information persists through soft reset of the chip. SCRATCH0 0x00000000 read-write 0x0010 Scratch register. Information persists through soft reset of the chip. SCRATCH1 0x00000000 read-write 0x0014 Scratch register. Information persists through soft reset of the chip. SCRATCH2 0x00000000 read-write 0x0018 Scratch register. Information persists through soft reset of the chip. SCRATCH3 0x00000000 read-write 0x001c Scratch register. Information persists through soft reset of the chip. SCRATCH4 0x00000000 read-write 0x0020 Scratch register. Information persists through soft reset of the chip. SCRATCH5 0x00000000 read-write 0x0024 Scratch register. Information persists through soft reset of the chip. SCRATCH6 0x00000000 read-write 0x0028 Scratch register. Information persists through soft reset of the chip. SCRATCH7 0x00000000 0x002c Controls the tick generator read-only [19:11] Count down timer: the remaining number clk_tick cycles before the next tick is generated. COUNT read-only [10:10] Is the tick generator running? RUNNING read-write [9:9] start / stop tick generation ENABLE read-write [8:0] Total number of clk_tick cycles before the next tick. CYCLES TICK 0x00000200 32 1 0 0x1000 registers 0x4005c000 Register block to control RTC RTC_IRQ 25 RTC 0x0000 Divider minus 1 for the 1 second counter. Safe to change the value when RTC is not enabled. read-write [15:0] CLKDIV_M1 CLKDIV_M1 0x00000000 0x0004 RTC setup register 0 read-write [23:12] Year YEAR read-write [11:8] Month (1..12) MONTH read-write [4:0] Day of the month (1..31) DAY SETUP_0 0x00000000 0x0008 RTC setup register 1 read-write [26:24] Day of the week: 1-Monday...0-Sunday ISO 8601 mod 7 DOTW read-write [20:16] Hours HOUR read-write [13:8] Minutes MIN read-write [5:0] Seconds SEC SETUP_1 0x00000000 0x000c RTC Control and status read-write [8:8] If set, leapyear is forced off.\n Useful for years divisible by 100 but not by 400 FORCE_NOTLEAPYEAR read-write [4:4] Load RTC clear LOAD read-only [1:1] RTC enabled (running) RTC_ACTIVE read-write [0:0] Enable RTC RTC_ENABLE CTRL 0x00000000 0x0010 Interrupt setup register 0 read-only [29:29] MATCH_ACTIVE read-write [28:28] Global match enable. Don't change any other value while this one is enabled MATCH_ENA read-write [26:26] Enable year matching YEAR_ENA read-write [25:25] Enable month matching MONTH_ENA read-write [24:24] Enable day matching DAY_ENA read-write [23:12] Year YEAR read-write [11:8] Month (1..12) MONTH read-write [4:0] Day of the month (1..31) DAY IRQ_SETUP_0 0x00000000 0x0014 Interrupt setup register 1 read-write [31:31] Enable day of the week matching DOTW_ENA read-write [30:30] Enable hour matching HOUR_ENA read-write [29:29] Enable minute matching MIN_ENA read-write [28:28] Enable second matching SEC_ENA read-write [26:24] Day of the week DOTW read-write [20:16] Hours HOUR read-write [13:8] Minutes MIN read-write [5:0] Seconds SEC IRQ_SETUP_1 0x00000000 0x0018 RTC register 1. read-only [23:12] Year YEAR read-only [11:8] Month (1..12) MONTH read-only [4:0] Day of the month (1..31) DAY RTC_1 0x00000000 0x001c RTC register 0\n Read this before RTC 1! read-only [26:24] Day of the week DOTW read-only [20:16] Hours HOUR read-only [13:8] Minutes MIN read-only [5:0] Seconds SEC RTC_0 0x00000000 0x0020 Raw Interrupts read-only [0:0] RTC INTR 0x00000000 0x0024 Interrupt Enable read-write [0:0] RTC INTE 0x00000000 0x0028 Interrupt Force read-write [0:0] RTC INTF 0x00000000 0x002c Interrupt status after masking & forcing read-only [0:0] RTC INTS 0x00000000 32 1 0 0x1000 registers 0x40060000 ROSC 0x0000 Ring Oscillator control read-write [23:12] On power-up this field is initialised to ENABLE\n The system clock must be switched to another source before setting this field to DISABLE otherwise the chip will lock up\n The 12-bit code is intended to give some protection against accidental writes. An invalid setting will enable the oscillator. DISABLE 3358 ENABLE 4011 ENABLE read-write [11:0] Controls the number of delay stages in the ROSC ring\n LOW uses stages 0 to 7\n MEDIUM uses stages 0 to 5\n HIGH uses stages 0 to 3\n TOOHIGH uses stages 0 to 1 and should not be used because its frequency exceeds design specifications\n The clock output will not glitch when changing the range up one step at a time\n The clock output will glitch when changing the range down\n Note: the values here are gray coded which is why HIGH comes before TOOHIGH LOW 4004 MEDIUM 4005 HIGH 4007 TOOHIGH 4006 FREQ_RANGE CTRL 0x00000aa0 0x0004 The FREQA & FREQB registers control the frequency by controlling the drive strength of each stage\n The drive strength has 4 levels determined by the number of bits set\n Increasing the number of bits set increases the drive strength and increases the oscillation frequency\n 0 bits set is the default drive strength\n 1 bit set doubles the drive strength\n 2 bits set triples drive strength\n 3 bits set quadruples drive strength read-write [31:16] Set to 0x9696 to apply the settings\n Any other value in this field will set all drive strengths to 0 PASS 38550 PASSWD read-write [14:12] Stage 3 drive strength DS3 read-write [10:8] Stage 2 drive strength DS2 read-write [6:4] Stage 1 drive strength DS1 read-write [2:0] Stage 0 drive strength DS0 FREQA 0x00000000 0x0008 For a detailed description see freqa register read-write [31:16] Set to 0x9696 to apply the settings\n Any other value in this field will set all drive strengths to 0 PASS 38550 PASSWD read-write [14:12] Stage 7 drive strength DS7 read-write [10:8] Stage 6 drive strength DS6 read-write [6:4] Stage 5 drive strength DS5 read-write [2:0] Stage 4 drive strength DS4 FREQB 0x00000000 read-write 0x000c Ring Oscillator pause control\n This is used to save power by pausing the ROSC\n On power-up this field is initialised to WAKE\n An invalid write will also select WAKE\n Warning: setup the irq before selecting dormant mode DORMANT 0x00000000 0x0010 Controls the output divider read-write [11:0] set to 0xaa0 + div where\n div = 0 divides by 32\n div = 1-31 divides by div\n any other value sets div=0 and therefore divides by 32\n this register resets to div=16 PASS 2720 DIV DIV 0x00000000 0x0014 Controls the phase shifted output read-write [11:4] set to 0xaa0\n any other value enables the output with shift=0 PASSWD read-write [3:3] enable the phase-shifted output\n this can be changed on-the-fly ENABLE read-write [2:2] invert the phase-shifted output\n this is ignored when div=1 FLIP read-write [1:0] phase shift the phase-shifted output by SHIFT input clocks\n this can be changed on-the-fly\n must be set to 0 before setting div=1 SHIFT PHASE 0x00000008 0x0018 Ring Oscillator Status read-only [31:31] Oscillator is running and stable STABLE read-write [24:24] An invalid value has been written to CTRL_ENABLE or CTRL_FREQ_RANGE or FRFEQA or FREQB or DORMANT oneToClear BADWRITE read-only [16:16] post-divider is running\n this resets to 0 but transitions to 1 during chip startup DIV_RUNNING read-only [12:12] Oscillator is enabled but not necessarily running and stable\n this resets to 0 but transitions to 1 during chip startup ENABLED STATUS 0x00000000 0x001c 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 read-only [0:0] RANDOMBIT RANDOMBIT 0x00000001 0x0020 A down counter running at the ROSC frequency which counts to zero and stops.\n To start the counter write a non-zero value.\n Can be used for short software pauses when setting up time sensitive hardware. read-write [7:0] COUNT COUNT 0x00000000 32 1 0 0x1000 registers 0x40064000 control and status for on-chip voltage regulator and chip level reset subsystem VREG_AND_CHIP_RESET 0x0000 Voltage regulator control and status read-only [12:12] regulation status\n 0=not in regulation, 1=in regulation ROK read-write [7:4] output voltage select\n 0000 to 0101 - 0.80V\n 0110 - 0.85V\n 0111 - 0.90V\n 1000 - 0.95V\n 1001 - 1.00V\n 1010 - 1.05V\n 1011 - 1.10V (default)\n 1100 - 1.15V\n 1101 - 1.20V\n 1110 - 1.25V\n 1111 - 1.30V VSEL read-write [1:1] high impedance mode select\n 0=not in high impedance mode, 1=in high impedance mode HIZ read-write [0:0] enable\n 0=not enabled, 1=enabled EN VREG 0x000000b1 0x0004 brown-out detection control read-write [7:4] threshold select\n 0000 - 0.473V\n 0001 - 0.516V\n 0010 - 0.559V\n 0011 - 0.602V\n 0100 - 0.645V\n 0101 - 0.688V\n 0110 - 0.731V\n 0111 - 0.774V\n 1000 - 0.817V\n 1001 - 0.860V (default)\n 1010 - 0.903V\n 1011 - 0.946V\n 1100 - 0.989V\n 1101 - 1.032V\n 1110 - 1.075V\n 1111 - 1.118V VSEL read-write [0:0] enable\n 0=not enabled, 1=enabled EN BOD 0x00000091 0x0008 Chip reset control and status read-write [24:24] This is set by psm_restart from the debugger.\n Its purpose is to branch bootcode to a safe mode when the debugger has issued a psm_restart in order to recover from a boot lock-up.\n In the safe mode the debugger can repair the boot code, clear this flag then reboot the processor. oneToClear PSM_RESTART_FLAG read-only [20:20] Last reset was from the debug port HAD_PSM_RESTART read-only [16:16] Last reset was from the RUN pin HAD_RUN read-only [8:8] Last reset was from the power-on reset or brown-out detection blocks HAD_POR CHIP_RESET 0x00000000 32 1 0 0x1000 registers 0x4006c000 Testbench manager. Allows the programmer to know what platform their software is running on. TBMAN 0x0000 Indicates the type of platform in use read-only [1:1] Indicates the platform is an FPGA FPGA read-only [0:0] Indicates the platform is an ASIC ASIC PLATFORM 0x00000005 32 1 0 0x1000 registers 0x50000000 DMA with separate read and write masters DMA_IRQ_0 11 DMA_IRQ_1 12 DMA read-write 0x0000 DMA Channel 0 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH0_READ_ADDR 0x00000000 read-write 0x0004 DMA Channel 0 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH0_WRITE_ADDR 0x00000000 read-write 0x0008 DMA Channel 0 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH0_TRANS_COUNT 0x00000000 0x000c DMA Channel 0 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (0). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH0_CTRL_TRIG 0x00000000 read-only 0x0010 Alias for channel 0 CTRL register CH0_AL1_CTRL 0x00000000 read-only 0x0014 Alias for channel 0 READ_ADDR register CH0_AL1_READ_ADDR 0x00000000 read-only 0x0018 Alias for channel 0 WRITE_ADDR register CH0_AL1_WRITE_ADDR 0x00000000 read-only 0x001c Alias for channel 0 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH0_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x0020 Alias for channel 0 CTRL register CH0_AL2_CTRL 0x00000000 read-only 0x0024 Alias for channel 0 TRANS_COUNT register CH0_AL2_TRANS_COUNT 0x00000000 read-only 0x0028 Alias for channel 0 READ_ADDR register CH0_AL2_READ_ADDR 0x00000000 read-only 0x002c Alias for channel 0 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH0_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x0030 Alias for channel 0 CTRL register CH0_AL3_CTRL 0x00000000 read-only 0x0034 Alias for channel 0 WRITE_ADDR register CH0_AL3_WRITE_ADDR 0x00000000 read-only 0x0038 Alias for channel 0 TRANS_COUNT register CH0_AL3_TRANS_COUNT 0x00000000 read-only 0x003c Alias for channel 0 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH0_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0040 DMA Channel 1 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH1_READ_ADDR 0x00000000 read-write 0x0044 DMA Channel 1 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH1_WRITE_ADDR 0x00000000 read-write 0x0048 DMA Channel 1 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH1_TRANS_COUNT 0x00000000 0x004c DMA Channel 1 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (1). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH1_CTRL_TRIG 0x00000800 read-only 0x0050 Alias for channel 1 CTRL register CH1_AL1_CTRL 0x00000000 read-only 0x0054 Alias for channel 1 READ_ADDR register CH1_AL1_READ_ADDR 0x00000000 read-only 0x0058 Alias for channel 1 WRITE_ADDR register CH1_AL1_WRITE_ADDR 0x00000000 read-only 0x005c Alias for channel 1 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH1_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x0060 Alias for channel 1 CTRL register CH1_AL2_CTRL 0x00000000 read-only 0x0064 Alias for channel 1 TRANS_COUNT register CH1_AL2_TRANS_COUNT 0x00000000 read-only 0x0068 Alias for channel 1 READ_ADDR register CH1_AL2_READ_ADDR 0x00000000 read-only 0x006c Alias for channel 1 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH1_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x0070 Alias for channel 1 CTRL register CH1_AL3_CTRL 0x00000000 read-only 0x0074 Alias for channel 1 WRITE_ADDR register CH1_AL3_WRITE_ADDR 0x00000000 read-only 0x0078 Alias for channel 1 TRANS_COUNT register CH1_AL3_TRANS_COUNT 0x00000000 read-only 0x007c Alias for channel 1 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH1_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0080 DMA Channel 2 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH2_READ_ADDR 0x00000000 read-write 0x0084 DMA Channel 2 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH2_WRITE_ADDR 0x00000000 read-write 0x0088 DMA Channel 2 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH2_TRANS_COUNT 0x00000000 0x008c DMA Channel 2 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (2). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH2_CTRL_TRIG 0x00001000 read-only 0x0090 Alias for channel 2 CTRL register CH2_AL1_CTRL 0x00000000 read-only 0x0094 Alias for channel 2 READ_ADDR register CH2_AL1_READ_ADDR 0x00000000 read-only 0x0098 Alias for channel 2 WRITE_ADDR register CH2_AL1_WRITE_ADDR 0x00000000 read-only 0x009c Alias for channel 2 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH2_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x00a0 Alias for channel 2 CTRL register CH2_AL2_CTRL 0x00000000 read-only 0x00a4 Alias for channel 2 TRANS_COUNT register CH2_AL2_TRANS_COUNT 0x00000000 read-only 0x00a8 Alias for channel 2 READ_ADDR register CH2_AL2_READ_ADDR 0x00000000 read-only 0x00ac Alias for channel 2 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH2_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x00b0 Alias for channel 2 CTRL register CH2_AL3_CTRL 0x00000000 read-only 0x00b4 Alias for channel 2 WRITE_ADDR register CH2_AL3_WRITE_ADDR 0x00000000 read-only 0x00b8 Alias for channel 2 TRANS_COUNT register CH2_AL3_TRANS_COUNT 0x00000000 read-only 0x00bc Alias for channel 2 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH2_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x00c0 DMA Channel 3 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH3_READ_ADDR 0x00000000 read-write 0x00c4 DMA Channel 3 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH3_WRITE_ADDR 0x00000000 read-write 0x00c8 DMA Channel 3 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH3_TRANS_COUNT 0x00000000 0x00cc DMA Channel 3 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (3). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH3_CTRL_TRIG 0x00001800 read-only 0x00d0 Alias for channel 3 CTRL register CH3_AL1_CTRL 0x00000000 read-only 0x00d4 Alias for channel 3 READ_ADDR register CH3_AL1_READ_ADDR 0x00000000 read-only 0x00d8 Alias for channel 3 WRITE_ADDR register CH3_AL1_WRITE_ADDR 0x00000000 read-only 0x00dc Alias for channel 3 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH3_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x00e0 Alias for channel 3 CTRL register CH3_AL2_CTRL 0x00000000 read-only 0x00e4 Alias for channel 3 TRANS_COUNT register CH3_AL2_TRANS_COUNT 0x00000000 read-only 0x00e8 Alias for channel 3 READ_ADDR register CH3_AL2_READ_ADDR 0x00000000 read-only 0x00ec Alias for channel 3 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH3_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x00f0 Alias for channel 3 CTRL register CH3_AL3_CTRL 0x00000000 read-only 0x00f4 Alias for channel 3 WRITE_ADDR register CH3_AL3_WRITE_ADDR 0x00000000 read-only 0x00f8 Alias for channel 3 TRANS_COUNT register CH3_AL3_TRANS_COUNT 0x00000000 read-only 0x00fc Alias for channel 3 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH3_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0100 DMA Channel 4 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH4_READ_ADDR 0x00000000 read-write 0x0104 DMA Channel 4 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH4_WRITE_ADDR 0x00000000 read-write 0x0108 DMA Channel 4 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH4_TRANS_COUNT 0x00000000 0x010c DMA Channel 4 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (4). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH4_CTRL_TRIG 0x00002000 read-only 0x0110 Alias for channel 4 CTRL register CH4_AL1_CTRL 0x00000000 read-only 0x0114 Alias for channel 4 READ_ADDR register CH4_AL1_READ_ADDR 0x00000000 read-only 0x0118 Alias for channel 4 WRITE_ADDR register CH4_AL1_WRITE_ADDR 0x00000000 read-only 0x011c Alias for channel 4 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH4_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x0120 Alias for channel 4 CTRL register CH4_AL2_CTRL 0x00000000 read-only 0x0124 Alias for channel 4 TRANS_COUNT register CH4_AL2_TRANS_COUNT 0x00000000 read-only 0x0128 Alias for channel 4 READ_ADDR register CH4_AL2_READ_ADDR 0x00000000 read-only 0x012c Alias for channel 4 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH4_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x0130 Alias for channel 4 CTRL register CH4_AL3_CTRL 0x00000000 read-only 0x0134 Alias for channel 4 WRITE_ADDR register CH4_AL3_WRITE_ADDR 0x00000000 read-only 0x0138 Alias for channel 4 TRANS_COUNT register CH4_AL3_TRANS_COUNT 0x00000000 read-only 0x013c Alias for channel 4 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH4_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0140 DMA Channel 5 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH5_READ_ADDR 0x00000000 read-write 0x0144 DMA Channel 5 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH5_WRITE_ADDR 0x00000000 read-write 0x0148 DMA Channel 5 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH5_TRANS_COUNT 0x00000000 0x014c DMA Channel 5 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (5). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH5_CTRL_TRIG 0x00002800 read-only 0x0150 Alias for channel 5 CTRL register CH5_AL1_CTRL 0x00000000 read-only 0x0154 Alias for channel 5 READ_ADDR register CH5_AL1_READ_ADDR 0x00000000 read-only 0x0158 Alias for channel 5 WRITE_ADDR register CH5_AL1_WRITE_ADDR 0x00000000 read-only 0x015c Alias for channel 5 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH5_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x0160 Alias for channel 5 CTRL register CH5_AL2_CTRL 0x00000000 read-only 0x0164 Alias for channel 5 TRANS_COUNT register CH5_AL2_TRANS_COUNT 0x00000000 read-only 0x0168 Alias for channel 5 READ_ADDR register CH5_AL2_READ_ADDR 0x00000000 read-only 0x016c Alias for channel 5 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH5_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x0170 Alias for channel 5 CTRL register CH5_AL3_CTRL 0x00000000 read-only 0x0174 Alias for channel 5 WRITE_ADDR register CH5_AL3_WRITE_ADDR 0x00000000 read-only 0x0178 Alias for channel 5 TRANS_COUNT register CH5_AL3_TRANS_COUNT 0x00000000 read-only 0x017c Alias for channel 5 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH5_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0180 DMA Channel 6 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH6_READ_ADDR 0x00000000 read-write 0x0184 DMA Channel 6 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH6_WRITE_ADDR 0x00000000 read-write 0x0188 DMA Channel 6 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH6_TRANS_COUNT 0x00000000 0x018c DMA Channel 6 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (6). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH6_CTRL_TRIG 0x00003000 read-only 0x0190 Alias for channel 6 CTRL register CH6_AL1_CTRL 0x00000000 read-only 0x0194 Alias for channel 6 READ_ADDR register CH6_AL1_READ_ADDR 0x00000000 read-only 0x0198 Alias for channel 6 WRITE_ADDR register CH6_AL1_WRITE_ADDR 0x00000000 read-only 0x019c Alias for channel 6 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH6_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x01a0 Alias for channel 6 CTRL register CH6_AL2_CTRL 0x00000000 read-only 0x01a4 Alias for channel 6 TRANS_COUNT register CH6_AL2_TRANS_COUNT 0x00000000 read-only 0x01a8 Alias for channel 6 READ_ADDR register CH6_AL2_READ_ADDR 0x00000000 read-only 0x01ac Alias for channel 6 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH6_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x01b0 Alias for channel 6 CTRL register CH6_AL3_CTRL 0x00000000 read-only 0x01b4 Alias for channel 6 WRITE_ADDR register CH6_AL3_WRITE_ADDR 0x00000000 read-only 0x01b8 Alias for channel 6 TRANS_COUNT register CH6_AL3_TRANS_COUNT 0x00000000 read-only 0x01bc Alias for channel 6 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH6_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x01c0 DMA Channel 7 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH7_READ_ADDR 0x00000000 read-write 0x01c4 DMA Channel 7 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH7_WRITE_ADDR 0x00000000 read-write 0x01c8 DMA Channel 7 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH7_TRANS_COUNT 0x00000000 0x01cc DMA Channel 7 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (7). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH7_CTRL_TRIG 0x00003800 read-only 0x01d0 Alias for channel 7 CTRL register CH7_AL1_CTRL 0x00000000 read-only 0x01d4 Alias for channel 7 READ_ADDR register CH7_AL1_READ_ADDR 0x00000000 read-only 0x01d8 Alias for channel 7 WRITE_ADDR register CH7_AL1_WRITE_ADDR 0x00000000 read-only 0x01dc Alias for channel 7 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH7_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x01e0 Alias for channel 7 CTRL register CH7_AL2_CTRL 0x00000000 read-only 0x01e4 Alias for channel 7 TRANS_COUNT register CH7_AL2_TRANS_COUNT 0x00000000 read-only 0x01e8 Alias for channel 7 READ_ADDR register CH7_AL2_READ_ADDR 0x00000000 read-only 0x01ec Alias for channel 7 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH7_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x01f0 Alias for channel 7 CTRL register CH7_AL3_CTRL 0x00000000 read-only 0x01f4 Alias for channel 7 WRITE_ADDR register CH7_AL3_WRITE_ADDR 0x00000000 read-only 0x01f8 Alias for channel 7 TRANS_COUNT register CH7_AL3_TRANS_COUNT 0x00000000 read-only 0x01fc Alias for channel 7 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH7_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0200 DMA Channel 8 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH8_READ_ADDR 0x00000000 read-write 0x0204 DMA Channel 8 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH8_WRITE_ADDR 0x00000000 read-write 0x0208 DMA Channel 8 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH8_TRANS_COUNT 0x00000000 0x020c DMA Channel 8 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (8). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH8_CTRL_TRIG 0x00004000 read-only 0x0210 Alias for channel 8 CTRL register CH8_AL1_CTRL 0x00000000 read-only 0x0214 Alias for channel 8 READ_ADDR register CH8_AL1_READ_ADDR 0x00000000 read-only 0x0218 Alias for channel 8 WRITE_ADDR register CH8_AL1_WRITE_ADDR 0x00000000 read-only 0x021c Alias for channel 8 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH8_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x0220 Alias for channel 8 CTRL register CH8_AL2_CTRL 0x00000000 read-only 0x0224 Alias for channel 8 TRANS_COUNT register CH8_AL2_TRANS_COUNT 0x00000000 read-only 0x0228 Alias for channel 8 READ_ADDR register CH8_AL2_READ_ADDR 0x00000000 read-only 0x022c Alias for channel 8 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH8_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x0230 Alias for channel 8 CTRL register CH8_AL3_CTRL 0x00000000 read-only 0x0234 Alias for channel 8 WRITE_ADDR register CH8_AL3_WRITE_ADDR 0x00000000 read-only 0x0238 Alias for channel 8 TRANS_COUNT register CH8_AL3_TRANS_COUNT 0x00000000 read-only 0x023c Alias for channel 8 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH8_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0240 DMA Channel 9 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH9_READ_ADDR 0x00000000 read-write 0x0244 DMA Channel 9 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH9_WRITE_ADDR 0x00000000 read-write 0x0248 DMA Channel 9 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH9_TRANS_COUNT 0x00000000 0x024c DMA Channel 9 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (9). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH9_CTRL_TRIG 0x00004800 read-only 0x0250 Alias for channel 9 CTRL register CH9_AL1_CTRL 0x00000000 read-only 0x0254 Alias for channel 9 READ_ADDR register CH9_AL1_READ_ADDR 0x00000000 read-only 0x0258 Alias for channel 9 WRITE_ADDR register CH9_AL1_WRITE_ADDR 0x00000000 read-only 0x025c Alias for channel 9 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH9_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x0260 Alias for channel 9 CTRL register CH9_AL2_CTRL 0x00000000 read-only 0x0264 Alias for channel 9 TRANS_COUNT register CH9_AL2_TRANS_COUNT 0x00000000 read-only 0x0268 Alias for channel 9 READ_ADDR register CH9_AL2_READ_ADDR 0x00000000 read-only 0x026c Alias for channel 9 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH9_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x0270 Alias for channel 9 CTRL register CH9_AL3_CTRL 0x00000000 read-only 0x0274 Alias for channel 9 WRITE_ADDR register CH9_AL3_WRITE_ADDR 0x00000000 read-only 0x0278 Alias for channel 9 TRANS_COUNT register CH9_AL3_TRANS_COUNT 0x00000000 read-only 0x027c Alias for channel 9 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH9_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x0280 DMA Channel 10 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH10_READ_ADDR 0x00000000 read-write 0x0284 DMA Channel 10 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH10_WRITE_ADDR 0x00000000 read-write 0x0288 DMA Channel 10 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH10_TRANS_COUNT 0x00000000 0x028c DMA Channel 10 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (10). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH10_CTRL_TRIG 0x00005000 read-only 0x0290 Alias for channel 10 CTRL register CH10_AL1_CTRL 0x00000000 read-only 0x0294 Alias for channel 10 READ_ADDR register CH10_AL1_READ_ADDR 0x00000000 read-only 0x0298 Alias for channel 10 WRITE_ADDR register CH10_AL1_WRITE_ADDR 0x00000000 read-only 0x029c Alias for channel 10 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH10_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x02a0 Alias for channel 10 CTRL register CH10_AL2_CTRL 0x00000000 read-only 0x02a4 Alias for channel 10 TRANS_COUNT register CH10_AL2_TRANS_COUNT 0x00000000 read-only 0x02a8 Alias for channel 10 READ_ADDR register CH10_AL2_READ_ADDR 0x00000000 read-only 0x02ac Alias for channel 10 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH10_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x02b0 Alias for channel 10 CTRL register CH10_AL3_CTRL 0x00000000 read-only 0x02b4 Alias for channel 10 WRITE_ADDR register CH10_AL3_WRITE_ADDR 0x00000000 read-only 0x02b8 Alias for channel 10 TRANS_COUNT register CH10_AL3_TRANS_COUNT 0x00000000 read-only 0x02bc Alias for channel 10 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH10_AL3_READ_ADDR_TRIG 0x00000000 read-write 0x02c0 DMA Channel 11 Read Address pointer\n This register updates automatically each time a read completes. The current value is the next address to be read by this channel. CH11_READ_ADDR 0x00000000 read-write 0x02c4 DMA Channel 11 Write Address pointer\n This register updates automatically each time a write completes. The current value is the next address to be written by this channel. CH11_WRITE_ADDR 0x00000000 read-write 0x02c8 DMA Channel 11 Transfer Count\n Program the number of bus transfers a channel will perform before halting. Note that, if transfers are larger than one byte in size, this is not equal to the number of bytes transferred (see CTRL_DATA_SIZE).\n\n When the channel is active, reading this register shows the number of transfers remaining, updating automatically each time a write transfer completes.\n\n Writing this register sets the RELOAD value for the transfer counter. Each time this channel is triggered, the RELOAD value is copied into the live transfer counter. The channel can be started multiple times, and will perform the same number of transfers each time, as programmed by most recent write.\n\n The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT is used as a trigger, the written value is used immediately as the length of the new transfer sequence, as well as being written to RELOAD. CH11_TRANS_COUNT 0x00000000 0x02cc DMA Channel 11 Control and Status read-only [31:31] Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel halts when it encounters any bus error, and always raises its channel IRQ flag. AHB_ERROR read-write [30:30] If 1, the channel received a read bus error. Write one to clear.\n READ_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 3 transfers later) oneToClear READ_ERROR read-write [29:29] If 1, the channel received a write bus error. Write one to clear.\n WRITE_ADDR shows the approximate address where the bus error was encountered (will not to be earlier, or more than 5 transfers later) oneToClear WRITE_ERROR read-only [24:24] This flag goes high when the channel starts a new transfer sequence, and low when the last transfer of that sequence completes. Clearing EN while BUSY is high pauses the channel, and BUSY will stay high while paused.\n\n To terminate a sequence early (and clear the BUSY flag), see CHAN_ABORT. BUSY read-write [23:23] If 1, this channel's data transfers are visible to the sniff hardware, and each transfer will advance the state of the checksum. This only applies if the sniff hardware is enabled, and has this channel selected.\n\n This allows checksum to be enabled or disabled on a per-control- block basis. SNIFF_EN read-write [22:22] Apply byte-swap transformation to DMA data.\n For byte data, this has no effect. For halfword data, the two bytes of each halfword are swapped. For word data, the four bytes of each word are swapped to reverse order. BSWAP read-write [21:21] In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, an IRQ is raised when NULL is written to a trigger register, indicating the end of a control block chain.\n\n This reduces the number of interrupts to be serviced by the CPU when transferring a DMA chain of many small control blocks. IRQ_QUIET read-write [20:15] Select a Transfer Request signal.\n The channel uses the transfer request signal to pace its data transfer rate. Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system).\n 0x0 to 0x3a -> select DREQ n as TREQ Select Timer 0 as TREQ TIMER0 59 Select Timer 1 as TREQ TIMER1 60 Select Timer 2 as TREQ (Optional) TIMER2 61 Select Timer 3 as TREQ (Optional) TIMER3 62 Permanent request, for unpaced transfers. PERMANENT 63 TREQ_SEL read-write [14:11] When this channel completes, it will trigger the channel indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this channel)_.\n Reset value is equal to channel number (11). CHAIN_TO read-write [10:10] Select whether RING_SIZE applies to read or write addresses.\n If 0, read addresses are wrapped on a (1 << RING_SIZE) boundary. If 1, write addresses are wrapped. RING_SEL read-write [9:6] Size of address wrap region. If 0, don't wrap. For values n > 0, only the lower n bits of the address will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned ring buffers.\n\n Ring sizes between 2 and 32768 bytes are possible. This can apply to either read or write addresses, based on value of RING_SEL. RING_NONE 0 RING_SIZE read-write [5:5] If 1, the write address increments with each transfer. If 0, each write is directed to the same, initial address.\n\n Generally this should be disabled for memory-to-peripheral transfers. INCR_WRITE read-write [4:4] If 1, the read address increments with each transfer. If 0, each read is directed to the same, initial address.\n\n Generally this should be disabled for peripheral-to-memory transfers. INCR_READ read-write [3:2] Set the size of each bus transfer (byte/halfword/word). READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) with each transfer. SIZE_BYTE 0 SIZE_HALFWORD 1 SIZE_WORD 2 DATA_SIZE read-write [1:1] HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in each scheduling round, all high priority channels are considered first, and then only a single low priority channel, before returning to the high priority channels.\n\n This only affects the order in which the DMA schedules channels. The DMA's bus priority is not changed. If the DMA is not saturated then a low priority channel will see no loss of throughput. HIGH_PRIORITY read-write [0:0] DMA Channel Enable.\n When 1, the channel will respond to triggering events, which will cause it to become BUSY and start transferring data. When 0, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will remain high if already high) EN CH11_CTRL_TRIG 0x00005800 read-only 0x02d0 Alias for channel 11 CTRL register CH11_AL1_CTRL 0x00000000 read-only 0x02d4 Alias for channel 11 READ_ADDR register CH11_AL1_READ_ADDR 0x00000000 read-only 0x02d8 Alias for channel 11 WRITE_ADDR register CH11_AL1_WRITE_ADDR 0x00000000 read-only 0x02dc Alias for channel 11 TRANS_COUNT register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH11_AL1_TRANS_COUNT_TRIG 0x00000000 read-only 0x02e0 Alias for channel 11 CTRL register CH11_AL2_CTRL 0x00000000 read-only 0x02e4 Alias for channel 11 TRANS_COUNT register CH11_AL2_TRANS_COUNT 0x00000000 read-only 0x02e8 Alias for channel 11 READ_ADDR register CH11_AL2_READ_ADDR 0x00000000 read-only 0x02ec Alias for channel 11 WRITE_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH11_AL2_WRITE_ADDR_TRIG 0x00000000 read-only 0x02f0 Alias for channel 11 CTRL register CH11_AL3_CTRL 0x00000000 read-only 0x02f4 Alias for channel 11 WRITE_ADDR register CH11_AL3_WRITE_ADDR 0x00000000 read-only 0x02f8 Alias for channel 11 TRANS_COUNT register CH11_AL3_TRANS_COUNT 0x00000000 read-only 0x02fc Alias for channel 11 READ_ADDR register\n This is a trigger register (0xc). Writing a nonzero value will\n reload the channel counter and start the channel. CH11_AL3_READ_ADDR_TRIG 0x00000000 0x0400 Interrupt Status (raw) read-only [15:0] Raw interrupt status for DMA Channels 0..15. Bit n corresponds to channel n. Ignores any masking or forcing. Channel interrupts can be cleared by writing a bit mask to INTR, INTS0 or INTS1.\n\n Channel interrupts can be routed to either of two system-level IRQs based on INTE0 and INTE1.\n\n This can be used vector different channel interrupts to different ISRs: this might be done to allow NVIC IRQ preemption for more time-critical channels, or to spread IRQ load across different cores.\n\n It is also valid to ignore this behaviour and just use INTE0/INTS0/IRQ 0. INTR INTR 0x00000000 0x0404 Interrupt Enables for IRQ 0 read-write [15:0] Set bit n to pass interrupts from channel n to DMA IRQ 0. INTE0 INTE0 0x00000000 0x0408 Force Interrupts read-write [15:0] Write 1s to force the corresponding bits in INTE0. The interrupt remains asserted until INTF0 is cleared. INTF0 INTF0 0x00000000 0x040c Interrupt Status for IRQ 0 read-write [15:0] Indicates active channel interrupt requests which are currently causing IRQ 0 to be asserted.\n Channel interrupts can be cleared by writing a bit mask here. oneToClear INTS0 INTS0 0x00000000 0x0414 Interrupt Enables for IRQ 1 read-write [15:0] Set bit n to pass interrupts from channel n to DMA IRQ 1. INTE1 INTE1 0x00000000 0x0418 Force Interrupts for IRQ 1 read-write [15:0] Write 1s to force the corresponding bits in INTE0. The interrupt remains asserted until INTF0 is cleared. INTF1 INTF1 0x00000000 0x041c Interrupt Status (masked) for IRQ 1 read-write [15:0] Indicates active channel interrupt requests which are currently causing IRQ 1 to be asserted.\n Channel interrupts can be cleared by writing a bit mask here. oneToClear INTS1 INTS1 0x00000000 0x0420 Pacing (X/Y) Fractional Timer\n 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. read-write [31:16] Pacing Timer Dividend. Specifies the X value for the (X/Y) fractional timer. X read-write [15:0] Pacing Timer Divisor. Specifies the Y value for the (X/Y) fractional timer. Y TIMER0 0x00000000 0x0424 Pacing (X/Y) Fractional Timer\n 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. read-write [31:16] Pacing Timer Dividend. Specifies the X value for the (X/Y) fractional timer. X read-write [15:0] Pacing Timer Divisor. Specifies the Y value for the (X/Y) fractional timer. Y TIMER1 0x00000000 0x0428 Pacing (X/Y) Fractional Timer\n 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. read-write [31:16] Pacing Timer Dividend. Specifies the X value for the (X/Y) fractional timer. X read-write [15:0] Pacing Timer Divisor. Specifies the Y value for the (X/Y) fractional timer. Y TIMER2 0x00000000 0x042c Pacing (X/Y) Fractional Timer\n 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. read-write [31:16] Pacing Timer Dividend. Specifies the X value for the (X/Y) fractional timer. X read-write [15:0] Pacing Timer Divisor. Specifies the Y value for the (X/Y) fractional timer. Y TIMER3 0x00000000 0x0430 Trigger one or more channels simultaneously read-write [15:0] Each bit in this register corresponds to a DMA channel. Writing a 1 to the relevant bit is the same as writing to that channel's trigger register; the channel will start if it is currently enabled and not already busy. clear MULTI_CHAN_TRIGGER MULTI_CHAN_TRIGGER 0x00000000 0x0434 Sniffer Control read-write [11:11] If set, the result appears inverted (bitwise complement) when read. This does not affect the way the checksum is calculated; the result is transformed on-the-fly between the result register and the bus. OUT_INV read-write [10:10] If set, the result appears bit-reversed when read. This does not affect the way the checksum is calculated; the result is transformed on-the-fly between the result register and the bus. OUT_REV read-write [9:9] Locally perform a byte reverse on the sniffed data, before feeding into checksum.\n\n Note that the sniff hardware is downstream of the DMA channel byteswap performed in the read master: if channel CTRL_BSWAP and SNIFF_CTRL_BSWAP are both enabled, their effects cancel from the sniffer's point of view. BSWAP read-write [8:5] Calculate a CRC-32 (IEEE802.3 polynomial) CRC32 0 Calculate a CRC-32 (IEEE802.3 polynomial) with bit reversed data CRC32R 1 Calculate a CRC-16-CCITT CRC16 2 Calculate a CRC-16-CCITT with bit reversed data CRC16R 3 XOR reduction over all data. == 1 if the total 1 population count is odd. EVEN 14 Calculate a simple 32-bit checksum (addition with a 32 bit accumulator) SUM 15 CALC read-write [4:1] DMA channel for Sniffer to observe DMACH read-write [0:0] Enable sniffer EN SNIFF_CTRL 0x00000000 read-write 0x0438 Data accumulator for sniff hardware\n Write an initial seed value here before starting a DMA transfer on the channel indicated by SNIFF_CTRL_DMACH. The hardware will update this register each time it observes a read from the indicated channel. Once the channel completes, the final result can be read from this register. SNIFF_DATA 0x00000000 0x0440 Debug RAF, WAF, TDF levels read-only [23:16] Current Read-Address-FIFO fill level RAF_LVL read-only [15:8] Current Write-Address-FIFO fill level WAF_LVL read-only [7:0] Current Transfer-Data-FIFO fill level TDF_LVL FIFO_LEVELS 0x00000000 0x0444 Abort an in-progress transfer sequence on one or more channels read-write [15:0] Each bit corresponds to a channel. Writing a 1 aborts whatever transfer sequence is in progress on that channel. The bit will remain high until any in-flight transfers have been flushed through the address and data FIFOs.\n\n After writing, this register must be polled until it returns all-zero. Until this point, it is unsafe to restart the channel. clear CHAN_ABORT CHAN_ABORT 0x00000000 0x0448 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. read-only [4:0] N_CHANNELS N_CHANNELS 0x00000000 0x0800 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH0_DBG_CTDREQ CH0_DBG_CTDREQ 0x00000000 read-only 0x0804 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH0_DBG_TCR 0x00000000 0x0840 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH1_DBG_CTDREQ CH1_DBG_CTDREQ 0x00000000 read-only 0x0844 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH1_DBG_TCR 0x00000000 0x0880 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH2_DBG_CTDREQ CH2_DBG_CTDREQ 0x00000000 read-only 0x0884 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH2_DBG_TCR 0x00000000 0x08c0 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH3_DBG_CTDREQ CH3_DBG_CTDREQ 0x00000000 read-only 0x08c4 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH3_DBG_TCR 0x00000000 0x0900 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH4_DBG_CTDREQ CH4_DBG_CTDREQ 0x00000000 read-only 0x0904 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH4_DBG_TCR 0x00000000 0x0940 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH5_DBG_CTDREQ CH5_DBG_CTDREQ 0x00000000 read-only 0x0944 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH5_DBG_TCR 0x00000000 0x0980 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH6_DBG_CTDREQ CH6_DBG_CTDREQ 0x00000000 read-only 0x0984 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH6_DBG_TCR 0x00000000 0x09c0 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH7_DBG_CTDREQ CH7_DBG_CTDREQ 0x00000000 read-only 0x09c4 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH7_DBG_TCR 0x00000000 0x0a00 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH8_DBG_CTDREQ CH8_DBG_CTDREQ 0x00000000 read-only 0x0a04 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH8_DBG_TCR 0x00000000 0x0a40 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH9_DBG_CTDREQ CH9_DBG_CTDREQ 0x00000000 read-only 0x0a44 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH9_DBG_TCR 0x00000000 0x0a80 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH10_DBG_CTDREQ CH10_DBG_CTDREQ 0x00000000 read-only 0x0a84 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH10_DBG_TCR 0x00000000 0x0ac0 Read: get channel DREQ counter (i.e. how many accesses the DMA expects it can perform on the peripheral without overflow/underflow. Write any value: clears the counter, and cause channel to re-initiate DREQ handshake. read-only [5:0] CH11_DBG_CTDREQ CH11_DBG_CTDREQ 0x00000000 read-only 0x0ac4 Read to get channel TRANS_COUNT reload value, i.e. the length of the next transfer CH11_DBG_TCR 0x00000000 32 1 0 0x1000 registers 0x50110000 USB FS/LS controller device registers USBCTRL_IRQ 5 USBCTRL_REGS 0x0000 Device address and endpoint control read-write [19:16] Device endpoint to send data to. Only valid for HOST mode. ENDPOINT read-write [6:0] In device mode, the address that the device should respond to. Set in response to a SET_ADDR setup packet from the host. In host mode set to the address of the device to communicate with. ADDRESS ADDR_ENDP 0x00000000 0x0004 Interrupt endpoint 1. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP1 0x00000000 0x0008 Interrupt endpoint 2. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP2 0x00000000 0x000c Interrupt endpoint 3. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP3 0x00000000 0x0010 Interrupt endpoint 4. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP4 0x00000000 0x0014 Interrupt endpoint 5. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP5 0x00000000 0x0018 Interrupt endpoint 6. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP6 0x00000000 0x001c Interrupt endpoint 7. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP7 0x00000000 0x0020 Interrupt endpoint 8. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP8 0x00000000 0x0024 Interrupt endpoint 9. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP9 0x00000000 0x0028 Interrupt endpoint 10. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP10 0x00000000 0x002c Interrupt endpoint 11. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP11 0x00000000 0x0030 Interrupt endpoint 12. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP12 0x00000000 0x0034 Interrupt endpoint 13. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP13 0x00000000 0x0038 Interrupt endpoint 14. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP14 0x00000000 0x003c Interrupt endpoint 15. Only valid for HOST mode. read-write [26:26] Interrupt EP requires preamble (is a low speed device on a full speed hub) INTEP_PREAMBLE read-write [25:25] Direction of the interrupt endpoint. In=0, Out=1 INTEP_DIR read-write [19:16] Endpoint number of the interrupt endpoint ENDPOINT read-write [6:0] Device address ADDRESS ADDR_ENDP15 0x00000000 0x0040 Main control register read-write [31:31] Reduced timings for simulation SIM_TIMING read-write [1:1] Device mode = 0, Host mode = 1 HOST_NDEVICE read-write [0:0] Enable controller CONTROLLER_EN MAIN_CTRL 0x00000000 0x0044 Set the SOF (Start of Frame) frame number in the host controller. The SOF packet is sent every 1ms and the host will increment the frame number by 1 each time. write-only [10:0] COUNT SOF_WR 0x00000000 0x0048 Read the last SOF (Start of Frame) frame number seen. In device mode the last SOF received from the host. In host mode the last SOF sent by the host. read-only [10:0] COUNT SOF_RD 0x00000000 0x004c SIE control register read-write [31:31] Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a STALL EP0_INT_STALL read-write [30:30] Device: EP0 single buffered = 0, double buffered = 1 EP0_DOUBLE_BUF read-write [29:29] Device: Set bit in BUFF_STATUS for every buffer completed on EP0 EP0_INT_1BUF read-write [28:28] Device: Set bit in BUFF_STATUS for every 2 buffers completed on EP0 EP0_INT_2BUF read-write [27:27] Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a NAK EP0_INT_NAK read-write [26:26] Direct bus drive enable DIRECT_EN read-write [25:25] Direct control of DP DIRECT_DP read-write [24:24] Direct control of DM DIRECT_DM read-write [18:18] Power down bus transceiver TRANSCEIVER_PD read-write [17:17] Device: Pull-up strength (0=1K2, 1=2k3) RPU_OPT read-write [16:16] Device: Enable pull up resistor PULLUP_EN read-write [15:15] Host: Enable pull down resistors PULLDOWN_EN read-write [13:13] Host: Reset bus clear RESET_BUS read-write [12:12] Device: Remote wakeup. Device can initiate its own resume after suspend. clear RESUME read-write [11:11] Host: Enable VBUS VBUS_EN read-write [10:10] Host: Enable keep alive packet (for low speed bus) KEEP_ALIVE_EN read-write [9:9] Host: Enable SOF generation (for full speed bus) SOF_EN read-write [8:8] Host: Delay packet(s) until after SOF SOF_SYNC read-write [6:6] Host: Preable enable for LS device on FS hub PREAMBLE_EN read-write [4:4] Host: Stop transaction clear STOP_TRANS read-write [3:3] Host: Receive transaction (IN to host) RECEIVE_DATA read-write [2:2] Host: Send transaction (OUT from host) SEND_DATA read-write [1:1] Host: Send Setup packet SEND_SETUP read-write [0:0] Host: Start transaction clear START_TRANS SIE_CTRL 0x00000000 0x0050 SIE status register read-write [31:31] Data Sequence Error.\n\n The device can raise a sequence error in the following conditions:\n\n * A SETUP packet is received followed by a DATA1 packet (data phase should always be DATA0) * An OUT packet is received from the host but doesn't match the data pid in the buffer control register read from DPSRAM\n\n The host can raise a data sequence error in the following conditions:\n\n * An IN packet from the device has the wrong data PID oneToClear DATA_SEQ_ERROR read-write [30:30] ACK received. Raised by both host and device. oneToClear ACK_REC read-write [29:29] Host: STALL received oneToClear STALL_REC read-write [28:28] Host: NAK received oneToClear NAK_REC read-write [27:27] RX timeout is raised by both the host and device if an ACK is not received in the maximum time specified by the USB spec. oneToClear RX_TIMEOUT read-write [26:26] RX overflow is raised by the Serial RX engine if the incoming data is too fast. oneToClear RX_OVERFLOW read-write [25:25] Bit Stuff Error. Raised by the Serial RX engine. oneToClear BIT_STUFF_ERROR read-write [24:24] CRC Error. Raised by the Serial RX engine. oneToClear CRC_ERROR read-write [19:19] Device: bus reset received oneToClear BUS_RESET read-write [18:18] Transaction complete.\n\n Raised by device if:\n\n * An IN or OUT packet is sent with the `LAST_BUFF` bit set in the buffer control register\n\n Raised by host if:\n\n * A setup packet is sent when no data in or data out transaction follows * An IN packet is received and the `LAST_BUFF` bit is set in the buffer control register * An IN packet is received with zero length * An OUT packet is sent and the `LAST_BUFF` bit is set oneToClear TRANS_COMPLETE read-write [17:17] Device: Setup packet received oneToClear SETUP_REC read-only [16:16] Device: connected CONNECTED read-write [11:11] Host: Device has initiated a remote resume. Device: host has initiated a resume. oneToClear RESUME read-only [10:10] VBUS over current detected VBUS_OVER_CURR read-only [9:8] Host: device speed. Disconnected = 00, LS = 01, FS = 10 SPEED read-only [4:4] Bus in suspended state. Valid for device and host. Host and device will go into suspend if neither Keep Alive / SOF frames are enabled. SUSPENDED read-only [3:2] USB bus line state LINE_STATE read-only [0:0] Device: VBUS Detected VBUS_DETECTED SIE_STATUS 0x00000000 0x0054 interrupt endpoint control register read-write [15:1] Host: Enable interrupt endpoint 1 -> 15 INT_EP_ACTIVE INT_EP_CTRL 0x00000000 0x0058 Buffer status register. A bit set here indicates that a buffer has completed on the endpoint (if the buffer interrupt is enabled). It is possible for 2 buffers to be completed, so clearing the buffer status bit may instantly re set it on the next clock cycle. read-write [31:31] oneToClear EP15_OUT read-write [30:30] oneToClear EP15_IN read-write [29:29] oneToClear EP14_OUT read-write [28:28] oneToClear EP14_IN read-write [27:27] oneToClear EP13_OUT read-write [26:26] oneToClear EP13_IN read-write [25:25] oneToClear EP12_OUT read-write [24:24] oneToClear EP12_IN read-write [23:23] oneToClear EP11_OUT read-write [22:22] oneToClear EP11_IN read-write [21:21] oneToClear EP10_OUT read-write [20:20] oneToClear EP10_IN read-write [19:19] oneToClear EP9_OUT read-write [18:18] oneToClear EP9_IN read-write [17:17] oneToClear EP8_OUT read-write [16:16] oneToClear EP8_IN read-write [15:15] oneToClear EP7_OUT read-write [14:14] oneToClear EP7_IN read-write [13:13] oneToClear EP6_OUT read-write [12:12] oneToClear EP6_IN read-write [11:11] oneToClear EP5_OUT read-write [10:10] oneToClear EP5_IN read-write [9:9] oneToClear EP4_OUT read-write [8:8] oneToClear EP4_IN read-write [7:7] oneToClear EP3_OUT read-write [6:6] oneToClear EP3_IN read-write [5:5] oneToClear EP2_OUT read-write [4:4] oneToClear EP2_IN read-write [3:3] oneToClear EP1_OUT read-write [2:2] oneToClear EP1_IN read-write [1:1] oneToClear EP0_OUT read-write [0:0] oneToClear EP0_IN BUFF_STATUS 0x00000000 0x005c Which of the double buffers should be handled. Only valid if using an interrupt per buffer (i.e. not per 2 buffers). Not valid for host interrupt endpoint polling because they are only single buffered. read-only [31:31] EP15_OUT read-only [30:30] EP15_IN read-only [29:29] EP14_OUT read-only [28:28] EP14_IN read-only [27:27] EP13_OUT read-only [26:26] EP13_IN read-only [25:25] EP12_OUT read-only [24:24] EP12_IN read-only [23:23] EP11_OUT read-only [22:22] EP11_IN read-only [21:21] EP10_OUT read-only [20:20] EP10_IN read-only [19:19] EP9_OUT read-only [18:18] EP9_IN read-only [17:17] EP8_OUT read-only [16:16] EP8_IN read-only [15:15] EP7_OUT read-only [14:14] EP7_IN read-only [13:13] EP6_OUT read-only [12:12] EP6_IN read-only [11:11] EP5_OUT read-only [10:10] EP5_IN read-only [9:9] EP4_OUT read-only [8:8] EP4_IN read-only [7:7] EP3_OUT read-only [6:6] EP3_IN read-only [5:5] EP2_OUT read-only [4:4] EP2_IN read-only [3:3] EP1_OUT read-only [2:2] EP1_IN read-only [1:1] EP0_OUT read-only [0:0] EP0_IN BUFF_CPU_SHOULD_HANDLE 0x00000000 0x0060 Device only: Can be set to ignore the buffer control register for this endpoint in case you would like to revoke a buffer. A NAK will be sent for every access to the endpoint until this bit is cleared. A corresponding bit in `EP_ABORT_DONE` is set when it is safe to modify the buffer control register. read-write [31:31] EP15_OUT read-write [30:30] EP15_IN read-write [29:29] EP14_OUT read-write [28:28] EP14_IN read-write [27:27] EP13_OUT read-write [26:26] EP13_IN read-write [25:25] EP12_OUT read-write [24:24] EP12_IN read-write [23:23] EP11_OUT read-write [22:22] EP11_IN read-write [21:21] EP10_OUT read-write [20:20] EP10_IN read-write [19:19] EP9_OUT read-write [18:18] EP9_IN read-write [17:17] EP8_OUT read-write [16:16] EP8_IN read-write [15:15] EP7_OUT read-write [14:14] EP7_IN read-write [13:13] EP6_OUT read-write [12:12] EP6_IN read-write [11:11] EP5_OUT read-write [10:10] EP5_IN read-write [9:9] EP4_OUT read-write [8:8] EP4_IN read-write [7:7] EP3_OUT read-write [6:6] EP3_IN read-write [5:5] EP2_OUT read-write [4:4] EP2_IN read-write [3:3] EP1_OUT read-write [2:2] EP1_IN read-write [1:1] EP0_OUT read-write [0:0] EP0_IN EP_ABORT 0x00000000 0x0064 Device only: Used in conjunction with `EP_ABORT`. Set once an endpoint is idle so the programmer knows it is safe to modify the buffer control register. read-write [31:31] oneToClear EP15_OUT read-write [30:30] oneToClear EP15_IN read-write [29:29] oneToClear EP14_OUT read-write [28:28] oneToClear EP14_IN read-write [27:27] oneToClear EP13_OUT read-write [26:26] oneToClear EP13_IN read-write [25:25] oneToClear EP12_OUT read-write [24:24] oneToClear EP12_IN read-write [23:23] oneToClear EP11_OUT read-write [22:22] oneToClear EP11_IN read-write [21:21] oneToClear EP10_OUT read-write [20:20] oneToClear EP10_IN read-write [19:19] oneToClear EP9_OUT read-write [18:18] oneToClear EP9_IN read-write [17:17] oneToClear EP8_OUT read-write [16:16] oneToClear EP8_IN read-write [15:15] oneToClear EP7_OUT read-write [14:14] oneToClear EP7_IN read-write [13:13] oneToClear EP6_OUT read-write [12:12] oneToClear EP6_IN read-write [11:11] oneToClear EP5_OUT read-write [10:10] oneToClear EP5_IN read-write [9:9] oneToClear EP4_OUT read-write [8:8] oneToClear EP4_IN read-write [7:7] oneToClear EP3_OUT read-write [6:6] oneToClear EP3_IN read-write [5:5] oneToClear EP2_OUT read-write [4:4] oneToClear EP2_IN read-write [3:3] oneToClear EP1_OUT read-write [2:2] oneToClear EP1_IN read-write [1:1] oneToClear EP0_OUT read-write [0:0] oneToClear EP0_IN EP_ABORT_DONE 0x00000000 0x0068 Device: this bit must be set in conjunction with the `STALL` bit in the buffer control register to send a STALL on EP0. The device controller clears these bits when a SETUP packet is received because the USB spec requires that a STALL condition is cleared when a SETUP packet is received. read-write [1:1] EP0_OUT read-write [0:0] EP0_IN EP_STALL_ARM 0x00000000 0x006c Used by the host controller. Sets the wait time in microseconds before trying again if the device replies with a NAK. read-write [25:16] NAK polling interval for a full speed device DELAY_FS read-write [9:0] NAK polling interval for a low speed device DELAY_LS NAK_POLL 0x00100010 0x0070 Device: bits are set when the `IRQ_ON_NAK` or `IRQ_ON_STALL` bits are set. For EP0 this comes from `SIE_CTRL`. For all other endpoints it comes from the endpoint control register. read-write [31:31] oneToClear EP15_OUT read-write [30:30] oneToClear EP15_IN read-write [29:29] oneToClear EP14_OUT read-write [28:28] oneToClear EP14_IN read-write [27:27] oneToClear EP13_OUT read-write [26:26] oneToClear EP13_IN read-write [25:25] oneToClear EP12_OUT read-write [24:24] oneToClear EP12_IN read-write [23:23] oneToClear EP11_OUT read-write [22:22] oneToClear EP11_IN read-write [21:21] oneToClear EP10_OUT read-write [20:20] oneToClear EP10_IN read-write [19:19] oneToClear EP9_OUT read-write [18:18] oneToClear EP9_IN read-write [17:17] oneToClear EP8_OUT read-write [16:16] oneToClear EP8_IN read-write [15:15] oneToClear EP7_OUT read-write [14:14] oneToClear EP7_IN read-write [13:13] oneToClear EP6_OUT read-write [12:12] oneToClear EP6_IN read-write [11:11] oneToClear EP5_OUT read-write [10:10] oneToClear EP5_IN read-write [9:9] oneToClear EP4_OUT read-write [8:8] oneToClear EP4_IN read-write [7:7] oneToClear EP3_OUT read-write [6:6] oneToClear EP3_IN read-write [5:5] oneToClear EP2_OUT read-write [4:4] oneToClear EP2_IN read-write [3:3] oneToClear EP1_OUT read-write [2:2] oneToClear EP1_IN read-write [1:1] oneToClear EP0_OUT read-write [0:0] oneToClear EP0_IN EP_STATUS_STALL_NAK 0x00000000 0x0074 Where to connect the USB controller. Should be to_phy by default. read-write [3:3] SOFTCON read-write [2:2] TO_DIGITAL_PAD read-write [1:1] TO_EXTPHY read-write [0:0] TO_PHY USB_MUXING 0x00000000 0x0078 Overrides for the power signals in the event that the VBUS signals are not hooked up to GPIO. Set the value of the override and then the override enable to switch over to the override value. read-write [5:5] OVERCURR_DETECT_EN read-write [4:4] OVERCURR_DETECT read-write [3:3] VBUS_DETECT_OVERRIDE_EN read-write [2:2] VBUS_DETECT read-write [1:1] VBUS_EN_OVERRIDE_EN read-write [0:0] VBUS_EN USB_PWR 0x00000000 0x007c This register allows for direct control of the USB phy. Use in conjunction with usbphy_direct_override register to enable each override bit. read-only [22:22] DM over voltage DM_OVV read-only [21:21] DP over voltage DP_OVV read-only [20:20] DM overcurrent DM_OVCN read-only [19:19] DP overcurrent DP_OVCN read-only [18:18] DPM pin state RX_DM read-only [17:17] DPP pin state RX_DP read-only [16:16] Differential RX RX_DD read-write [15:15] TX_DIFFMODE=0: Single ended mode\n TX_DIFFMODE=1: Differential drive mode (TX_DM, TX_DM_OE ignored) TX_DIFFMODE read-write [14:14] TX_FSSLEW=0: Low speed slew rate\n TX_FSSLEW=1: Full speed slew rate TX_FSSLEW read-write [13:13] TX power down override (if override enable is set). 1 = powered down. TX_PD read-write [12:12] RX power down override (if override enable is set). 1 = powered down. RX_PD read-write [11:11] Output data. TX_DIFFMODE=1, Ignored\n TX_DIFFMODE=0, Drives DPM only. TX_DM_OE=1 to enable drive. DPM=TX_DM TX_DM read-write [10:10] Output data. If TX_DIFFMODE=1, Drives DPP/DPM diff pair. TX_DP_OE=1 to enable drive. DPP=TX_DP, DPM=~TX_DP\n If TX_DIFFMODE=0, Drives DPP only. TX_DP_OE=1 to enable drive. DPP=TX_DP TX_DP read-write [9:9] Output enable. If TX_DIFFMODE=1, Ignored.\n If TX_DIFFMODE=0, OE for DPM only. 0 - DPM in Hi-Z state; 1 - DPM driving TX_DM_OE read-write [8:8] Output enable. If TX_DIFFMODE=1, OE for DPP/DPM diff pair. 0 - DPP/DPM in Hi-Z state; 1 - DPP/DPM driving\n If TX_DIFFMODE=0, OE for DPP only. 0 - DPP in Hi-Z state; 1 - DPP driving TX_DP_OE read-write [6:6] DM pull down enable DM_PULLDN_EN read-write [5:5] DM pull up enable DM_PULLUP_EN read-write [4:4] Enable the second DM pull up resistor. 0 - Pull = Rpu2; 1 - Pull = Rpu1 + Rpu2 DM_PULLUP_HISEL read-write [2:2] DP pull down enable DP_PULLDN_EN read-write [1:1] DP pull up enable DP_PULLUP_EN read-write [0:0] Enable the second DP pull up resistor. 0 - Pull = Rpu2; 1 - Pull = Rpu1 + Rpu2 DP_PULLUP_HISEL USBPHY_DIRECT 0x00000000 0x0080 Override enable for each control in usbphy_direct read-write [15:15] TX_DIFFMODE_OVERRIDE_EN read-write [12:12] DM_PULLUP_OVERRIDE_EN read-write [11:11] TX_FSSLEW_OVERRIDE_EN read-write [10:10] TX_PD_OVERRIDE_EN read-write [9:9] RX_PD_OVERRIDE_EN read-write [8:8] TX_DM_OVERRIDE_EN read-write [7:7] TX_DP_OVERRIDE_EN read-write [6:6] TX_DM_OE_OVERRIDE_EN read-write [5:5] TX_DP_OE_OVERRIDE_EN read-write [4:4] DM_PULLDN_EN_OVERRIDE_EN read-write [3:3] DP_PULLDN_EN_OVERRIDE_EN read-write [2:2] DP_PULLUP_EN_OVERRIDE_EN read-write [1:1] DM_PULLUP_HISEL_OVERRIDE_EN read-write [0:0] DP_PULLUP_HISEL_OVERRIDE_EN USBPHY_DIRECT_OVERRIDE 0x00000000 0x0084 Used to adjust trim values of USB phy pull down resistors. read-write [12:8] Value to drive to USB PHY\n DM pulldown resistor trim control\n Experimental data suggests that the reset value will work, but this register allows adjustment if required DM_PULLDN_TRIM read-write [4:0] Value to drive to USB PHY\n DP pulldown resistor trim control\n Experimental data suggests that the reset value will work, but this register allows adjustment if required DP_PULLDN_TRIM USBPHY_TRIM 0x00001f1f 0x008c Raw Interrupts read-only [19:19] Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. EP_STALL_NAK read-only [18:18] Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. ABORT_DONE read-only [17:17] Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD DEV_SOF read-only [16:16] Device. Source: SIE_STATUS.SETUP_REC SETUP_REQ read-only [15:15] Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME DEV_RESUME_FROM_HOST read-only [14:14] Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED DEV_SUSPEND read-only [13:13] Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED DEV_CONN_DIS read-only [12:12] Source: SIE_STATUS.BUS_RESET BUS_RESET read-only [11:11] Source: SIE_STATUS.VBUS_DETECT VBUS_DETECT read-only [10:10] Source: SIE_STATUS.STALL_REC STALL read-only [9:9] Source: SIE_STATUS.CRC_ERROR ERROR_CRC read-only [8:8] Source: SIE_STATUS.BIT_STUFF_ERROR ERROR_BIT_STUFF read-only [7:7] Source: SIE_STATUS.RX_OVERFLOW ERROR_RX_OVERFLOW read-only [6:6] Source: SIE_STATUS.RX_TIMEOUT ERROR_RX_TIMEOUT read-only [5:5] Source: SIE_STATUS.DATA_SEQ_ERROR ERROR_DATA_SEQ read-only [4:4] Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. BUFF_STATUS read-only [3:3] Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. TRANS_COMPLETE read-only [2:2] Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD HOST_SOF read-only [1:1] Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME HOST_RESUME read-only [0:0] Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED HOST_CONN_DIS INTR 0x00000000 0x0090 Interrupt Enable read-write [19:19] Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. EP_STALL_NAK read-write [18:18] Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. ABORT_DONE read-write [17:17] Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD DEV_SOF read-write [16:16] Device. Source: SIE_STATUS.SETUP_REC SETUP_REQ read-write [15:15] Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME DEV_RESUME_FROM_HOST read-write [14:14] Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED DEV_SUSPEND read-write [13:13] Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED DEV_CONN_DIS read-write [12:12] Source: SIE_STATUS.BUS_RESET BUS_RESET read-write [11:11] Source: SIE_STATUS.VBUS_DETECT VBUS_DETECT read-write [10:10] Source: SIE_STATUS.STALL_REC STALL read-write [9:9] Source: SIE_STATUS.CRC_ERROR ERROR_CRC read-write [8:8] Source: SIE_STATUS.BIT_STUFF_ERROR ERROR_BIT_STUFF read-write [7:7] Source: SIE_STATUS.RX_OVERFLOW ERROR_RX_OVERFLOW read-write [6:6] Source: SIE_STATUS.RX_TIMEOUT ERROR_RX_TIMEOUT read-write [5:5] Source: SIE_STATUS.DATA_SEQ_ERROR ERROR_DATA_SEQ read-write [4:4] Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. BUFF_STATUS read-write [3:3] Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. TRANS_COMPLETE read-write [2:2] Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD HOST_SOF read-write [1:1] Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME HOST_RESUME read-write [0:0] Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED HOST_CONN_DIS INTE 0x00000000 0x0094 Interrupt Force read-write [19:19] Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. EP_STALL_NAK read-write [18:18] Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. ABORT_DONE read-write [17:17] Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD DEV_SOF read-write [16:16] Device. Source: SIE_STATUS.SETUP_REC SETUP_REQ read-write [15:15] Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME DEV_RESUME_FROM_HOST read-write [14:14] Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED DEV_SUSPEND read-write [13:13] Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED DEV_CONN_DIS read-write [12:12] Source: SIE_STATUS.BUS_RESET BUS_RESET read-write [11:11] Source: SIE_STATUS.VBUS_DETECT VBUS_DETECT read-write [10:10] Source: SIE_STATUS.STALL_REC STALL read-write [9:9] Source: SIE_STATUS.CRC_ERROR ERROR_CRC read-write [8:8] Source: SIE_STATUS.BIT_STUFF_ERROR ERROR_BIT_STUFF read-write [7:7] Source: SIE_STATUS.RX_OVERFLOW ERROR_RX_OVERFLOW read-write [6:6] Source: SIE_STATUS.RX_TIMEOUT ERROR_RX_TIMEOUT read-write [5:5] Source: SIE_STATUS.DATA_SEQ_ERROR ERROR_DATA_SEQ read-write [4:4] Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. BUFF_STATUS read-write [3:3] Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. TRANS_COMPLETE read-write [2:2] Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD HOST_SOF read-write [1:1] Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME HOST_RESUME read-write [0:0] Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED HOST_CONN_DIS INTF 0x00000000 0x0098 Interrupt status after masking & forcing read-only [19:19] Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. EP_STALL_NAK read-only [18:18] Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. ABORT_DONE read-only [17:17] Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD DEV_SOF read-only [16:16] Device. Source: SIE_STATUS.SETUP_REC SETUP_REQ read-only [15:15] Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME DEV_RESUME_FROM_HOST read-only [14:14] Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED DEV_SUSPEND read-only [13:13] Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED DEV_CONN_DIS read-only [12:12] Source: SIE_STATUS.BUS_RESET BUS_RESET read-only [11:11] Source: SIE_STATUS.VBUS_DETECT VBUS_DETECT read-only [10:10] Source: SIE_STATUS.STALL_REC STALL read-only [9:9] Source: SIE_STATUS.CRC_ERROR ERROR_CRC read-only [8:8] Source: SIE_STATUS.BIT_STUFF_ERROR ERROR_BIT_STUFF read-only [7:7] Source: SIE_STATUS.RX_OVERFLOW ERROR_RX_OVERFLOW read-only [6:6] Source: SIE_STATUS.RX_TIMEOUT ERROR_RX_TIMEOUT read-only [5:5] Source: SIE_STATUS.DATA_SEQ_ERROR ERROR_DATA_SEQ read-only [4:4] Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. BUFF_STATUS read-only [3:3] Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. TRANS_COMPLETE read-only [2:2] Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD HOST_SOF read-only [1:1] Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME HOST_RESUME read-only [0:0] Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED HOST_CONN_DIS INTS 0x00000000 32 1 0 0x1000 registers 0x50200000 Programmable IO block PIO0_IRQ_0 7 PIO0_IRQ_1 8 PIO0 0x0000 PIO control register read-write [11:8] Restart a state machine's clock divider from an initial phase of 0. Clock dividers are free-running, so once started, their output (including fractional jitter) is completely determined by the integer/fractional divisor configured in SMx_CLKDIV. This means that, if multiple clock dividers with the same divisor are restarted simultaneously, by writing multiple 1 bits to this field, the execution clocks of those state machines will run in precise lockstep.\n\n Note that setting/clearing SM_ENABLE does not stop the clock divider from running, so once multiple state machines' clocks are synchronised, it is safe to disable/reenable a state machine, whilst keeping the clock dividers in sync.\n\n Note also that CLKDIV_RESTART can be written to whilst the state machine is running, and this is useful to resynchronise clock dividers after the divisors (SMx_CLKDIV) have been changed on-the-fly. clear CLKDIV_RESTART read-write [7:4] Write 1 to instantly clear internal SM state which may be otherwise difficult to access and will affect future execution.\n\n Specifically, the following are cleared: input and output shift counters; the contents of the input shift register; the delay counter; the waiting-on-IRQ state; any stalled instruction written to SMx_INSTR or run by OUT/MOV EXEC; any pin write left asserted due to OUT_STICKY. clear SM_RESTART read-write [3:0] Enable/disable each of the four state machines by writing 1/0 to each of these four bits. When disabled, a state machine will cease executing instructions, except those written directly to SMx_INSTR by the system. Multiple bits can be set/cleared at once to run/halt multiple state machines simultaneously. SM_ENABLE CTRL 0x00000000 0x0004 FIFO status register read-only [27:24] State machine TX FIFO is empty TXEMPTY read-only [19:16] State machine TX FIFO is full TXFULL read-only [11:8] State machine RX FIFO is empty RXEMPTY read-only [3:0] State machine RX FIFO is full RXFULL FSTAT 0x0f000f00 0x0008 FIFO debug register read-write [27:24] State machine has stalled on empty TX FIFO during a blocking PULL, or an OUT with autopull enabled. Write 1 to clear. oneToClear TXSTALL read-write [19:16] TX FIFO overflow (i.e. write-on-full by the system) has occurred. Write 1 to clear. Note that write-on-full does not alter the state or contents of the FIFO in any way, but the data that the system attempted to write is dropped, so if this flag is set, your software has quite likely dropped some data on the floor. oneToClear TXOVER read-write [11:8] RX FIFO underflow (i.e. read-on-empty by the system) has occurred. Write 1 to clear. Note that read-on-empty does not perturb the state of the FIFO in any way, but the data returned by reading from an empty FIFO is undefined, so this flag generally only becomes set due to some kind of software error. oneToClear RXUNDER read-write [3:0] State machine has stalled on full RX FIFO during a blocking PUSH, or an IN with autopush enabled. This flag is also set when a nonblocking PUSH to a full FIFO took place, in which case the state machine has dropped data. Write 1 to clear. oneToClear RXSTALL FDEBUG 0x00000000 0x000c FIFO levels read-only [31:28] RX3 read-only [27:24] TX3 read-only [23:20] RX2 read-only [19:16] TX2 read-only [15:12] RX1 read-only [11:8] TX1 read-only [7:4] RX0 read-only [3:0] TX0 FLEVEL 0x00000000 write-only 0x0010 Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. Attempting to write to a full FIFO has no effect on the FIFO state or contents, and sets the sticky FDEBUG_TXOVER error flag for this FIFO. TXF0 0x00000000 write-only 0x0014 Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. Attempting to write to a full FIFO has no effect on the FIFO state or contents, and sets the sticky FDEBUG_TXOVER error flag for this FIFO. TXF1 0x00000000 write-only 0x0018 Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. Attempting to write to a full FIFO has no effect on the FIFO state or contents, and sets the sticky FDEBUG_TXOVER error flag for this FIFO. TXF2 0x00000000 write-only 0x001c Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. Attempting to write to a full FIFO has no effect on the FIFO state or contents, and sets the sticky FDEBUG_TXOVER error flag for this FIFO. TXF3 0x00000000 read-only 0x0020 Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. Attempting to read from an empty FIFO has no effect on the FIFO state, and sets the sticky FDEBUG_RXUNDER error flag for this FIFO. The data returned to the system on a read from an empty FIFO is undefined. RXF0 0x00000000 read-only 0x0024 Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. Attempting to read from an empty FIFO has no effect on the FIFO state, and sets the sticky FDEBUG_RXUNDER error flag for this FIFO. The data returned to the system on a read from an empty FIFO is undefined. RXF1 0x00000000 read-only 0x0028 Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. Attempting to read from an empty FIFO has no effect on the FIFO state, and sets the sticky FDEBUG_RXUNDER error flag for this FIFO. The data returned to the system on a read from an empty FIFO is undefined. RXF2 0x00000000 read-only 0x002c Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. Attempting to read from an empty FIFO has no effect on the FIFO state, and sets the sticky FDEBUG_RXUNDER error flag for this FIFO. The data returned to the system on a read from an empty FIFO is undefined. RXF3 0x00000000 0x0030 State machine IRQ flags register. Write 1 to clear. There are 8 state machine IRQ flags, which can be set, cleared, and waited on by the state machines. There's no fixed association between flags and state machines -- any state machine can use any flag.\n\n Any of the 8 flags can be used for timing synchronisation between state machines, using IRQ and WAIT instructions. The lower four of these flags are also routed out to system-level interrupt requests, alongside FIFO status interrupts -- see e.g. IRQ0_INTE. read-write [7:0] oneToClear IRQ IRQ 0x00000000 0x0034 Writing a 1 to each of these bits will forcibly assert the corresponding IRQ. Note this is different to the INTF register: writing here affects PIO internal state. INTF just asserts the processor-facing IRQ signal for testing ISRs, and is not visible to the state machines. write-only [7:0] IRQ_FORCE IRQ_FORCE 0x00000000 read-write 0x0038 There is a 2-flipflop synchronizer on each GPIO input, which protects PIO logic from metastabilities. This increases input delay, and for fast synchronous IO (e.g. SPI) these synchronizers may need to be bypassed. Each bit in this register corresponds to one GPIO.\n 0 -> input is synchronized (default)\n 1 -> synchronizer is bypassed\n If in doubt, leave this register as all zeroes. INPUT_SYNC_BYPASS 0x00000000 read-only 0x003c Read to sample the pad output values PIO is currently driving to the GPIOs. DBG_PADOUT 0x00000000 read-only 0x0040 Read to sample the pad output enables (direction) PIO is currently driving to the GPIOs. DBG_PADOE 0x00000000 0x0044 The PIO hardware has some free parameters that may vary between chip products.\n These should be provided in the chip datasheet, but are also exposed here. read-only [21:16] The size of the instruction memory, measured in units of one instruction IMEM_SIZE read-only [11:8] The number of state machines this PIO instance is equipped with. SM_COUNT read-only [5:0] The depth of the state machine TX/RX FIFOs, measured in words.\n Joining fifos via SHIFTCTRL_FJOIN gives one FIFO with double\n this depth. FIFO_DEPTH DBG_CFGINFO 0x00000000 0x0048 Write-only access to instruction memory location 0 read-write [15:0] INSTR_MEM0 INSTR_MEM0 0x00000000 0x004c Write-only access to instruction memory location 1 read-write [15:0] INSTR_MEM1 INSTR_MEM1 0x00000000 0x0050 Write-only access to instruction memory location 2 read-write [15:0] INSTR_MEM2 INSTR_MEM2 0x00000000 0x0054 Write-only access to instruction memory location 3 read-write [15:0] INSTR_MEM3 INSTR_MEM3 0x00000000 0x0058 Write-only access to instruction memory location 4 read-write [15:0] INSTR_MEM4 INSTR_MEM4 0x00000000 0x005c Write-only access to instruction memory location 5 read-write [15:0] INSTR_MEM5 INSTR_MEM5 0x00000000 0x0060 Write-only access to instruction memory location 6 read-write [15:0] INSTR_MEM6 INSTR_MEM6 0x00000000 0x0064 Write-only access to instruction memory location 7 read-write [15:0] INSTR_MEM7 INSTR_MEM7 0x00000000 0x0068 Write-only access to instruction memory location 8 read-write [15:0] INSTR_MEM8 INSTR_MEM8 0x00000000 0x006c Write-only access to instruction memory location 9 read-write [15:0] INSTR_MEM9 INSTR_MEM9 0x00000000 0x0070 Write-only access to instruction memory location 10 read-write [15:0] INSTR_MEM10 INSTR_MEM10 0x00000000 0x0074 Write-only access to instruction memory location 11 read-write [15:0] INSTR_MEM11 INSTR_MEM11 0x00000000 0x0078 Write-only access to instruction memory location 12 read-write [15:0] INSTR_MEM12 INSTR_MEM12 0x00000000 0x007c Write-only access to instruction memory location 13 read-write [15:0] INSTR_MEM13 INSTR_MEM13 0x00000000 0x0080 Write-only access to instruction memory location 14 read-write [15:0] INSTR_MEM14 INSTR_MEM14 0x00000000 0x0084 Write-only access to instruction memory location 15 read-write [15:0] INSTR_MEM15 INSTR_MEM15 0x00000000 0x0088 Write-only access to instruction memory location 16 read-write [15:0] INSTR_MEM16 INSTR_MEM16 0x00000000 0x008c Write-only access to instruction memory location 17 read-write [15:0] INSTR_MEM17 INSTR_MEM17 0x00000000 0x0090 Write-only access to instruction memory location 18 read-write [15:0] INSTR_MEM18 INSTR_MEM18 0x00000000 0x0094 Write-only access to instruction memory location 19 read-write [15:0] INSTR_MEM19 INSTR_MEM19 0x00000000 0x0098 Write-only access to instruction memory location 20 read-write [15:0] INSTR_MEM20 INSTR_MEM20 0x00000000 0x009c Write-only access to instruction memory location 21 read-write [15:0] INSTR_MEM21 INSTR_MEM21 0x00000000 0x00a0 Write-only access to instruction memory location 22 read-write [15:0] INSTR_MEM22 INSTR_MEM22 0x00000000 0x00a4 Write-only access to instruction memory location 23 read-write [15:0] INSTR_MEM23 INSTR_MEM23 0x00000000 0x00a8 Write-only access to instruction memory location 24 read-write [15:0] INSTR_MEM24 INSTR_MEM24 0x00000000 0x00ac Write-only access to instruction memory location 25 read-write [15:0] INSTR_MEM25 INSTR_MEM25 0x00000000 0x00b0 Write-only access to instruction memory location 26 read-write [15:0] INSTR_MEM26 INSTR_MEM26 0x00000000 0x00b4 Write-only access to instruction memory location 27 read-write [15:0] INSTR_MEM27 INSTR_MEM27 0x00000000 0x00b8 Write-only access to instruction memory location 28 read-write [15:0] INSTR_MEM28 INSTR_MEM28 0x00000000 0x00bc Write-only access to instruction memory location 29 read-write [15:0] INSTR_MEM29 INSTR_MEM29 0x00000000 0x00c0 Write-only access to instruction memory location 30 read-write [15:0] INSTR_MEM30 INSTR_MEM30 0x00000000 0x00c4 Write-only access to instruction memory location 31 read-write [15:0] INSTR_MEM31 INSTR_MEM31 0x00000000 0x00c8 Clock divisor register for state machine 0\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) read-write [31:16] Effective frequency is sysclk/(int + frac/256).\n Value of 0 is interpreted as 65536. If INT is 0, FRAC must also be 0. INT read-write [15:8] Fractional part of clock divisor FRAC SM0_CLKDIV 0x00010000 0x00cc Execution/behavioural settings for state machine 0 read-only [31:31] If 1, an instruction written to SMx_INSTR is stalled, and latched by the state machine. Will clear to 0 once this instruction completes. EXEC_STALLED read-write [30:30] If 1, the MSB of the Delay/Side-set instruction field is used as side-set enable, rather than a side-set data bit. This allows instructions to perform side-set optionally, rather than on every instruction, but the maximum possible side-set width is reduced from 5 to 4. Note that the value of PINCTRL_SIDESET_COUNT is inclusive of this enable bit. SIDE_EN read-write [29:29] If 1, side-set data is asserted to pin directions, instead of pin values SIDE_PINDIR read-write [28:24] The GPIO number to use as condition for JMP PIN. Unaffected by input mapping. JMP_PIN read-write [23:19] Which data bit to use for inline OUT enable OUT_EN_SEL read-write [18:18] If 1, use a bit of OUT data as an auxiliary write enable\n When used in conjunction with OUT_STICKY, writes with an enable of 0 will\n deassert the latest pin write. This can create useful masking/override behaviour\n due to the priority ordering of state machine pin writes (SM0 < SM1 < ...) INLINE_OUT_EN read-write [17:17] Continuously assert the most recent OUT/SET to the pins OUT_STICKY read-write [16:12] After reaching this address, execution is wrapped to wrap_bottom.\n If the instruction is a jump, and the jump condition is true, the jump takes priority. WRAP_TOP read-write [11:7] After reaching wrap_top, execution is wrapped to this address. WRAP_BOTTOM read-write [4:4] Comparison used for the MOV x, STATUS instruction. All-ones if TX FIFO level < N, otherwise all-zeroes TXLEVEL 0 All-ones if RX FIFO level < N, otherwise all-zeroes RXLEVEL 1 STATUS_SEL read-write [3:0] Comparison level for the MOV x, STATUS instruction STATUS_N SM0_EXECCTRL 0x0001f000 0x00d0 Control behaviour of the input/output shift registers for state machine 0 read-write [31:31] When 1, RX FIFO steals the TX FIFO's storage, and becomes twice as deep.\n TX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_RX read-write [30:30] When 1, TX FIFO steals the RX FIFO's storage, and becomes twice as deep.\n RX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_TX read-write [29:25] Number of bits shifted out of OSR before autopull, or conditional pull (PULL IFEMPTY), will take place.\n Write 0 for value of 32. PULL_THRESH read-write [24:20] Number of bits shifted into ISR before autopush, or conditional push (PUSH IFFULL), will take place.\n Write 0 for value of 32. PUSH_THRESH read-write [19:19] 1 = shift out of output shift register to right. 0 = to left. OUT_SHIFTDIR read-write [18:18] 1 = shift input shift register to right (data enters from left). 0 = to left. IN_SHIFTDIR read-write [17:17] Pull automatically when the output shift register is emptied, i.e. on or following an OUT instruction which causes the output shift counter to reach or exceed PULL_THRESH. AUTOPULL read-write [16:16] Push automatically when the input shift register is filled, i.e. on an IN instruction which causes the input shift counter to reach or exceed PUSH_THRESH. AUTOPUSH SM0_SHIFTCTRL 0x000c0000 0x00d4 Current instruction address of state machine 0 read-only [4:0] SM0_ADDR SM0_ADDR 0x00000000 0x00d8 Read to see the instruction currently addressed by state machine 0's program counter\n Write to execute an instruction immediately (including jumps) and then resume execution. read-write [15:0] SM0_INSTR SM0_INSTR 0x00000000 0x00dc State machine pin control read-write [31:29] The number of MSBs of the Delay/Side-set instruction field which are used for side-set. Inclusive of the enable bit, if present. Minimum of 0 (all delay bits, no side-set) and maximum of 5 (all side-set, no delay). SIDESET_COUNT read-write [28:26] The number of pins asserted by a SET. In the range 0 to 5 inclusive. SET_COUNT read-write [25:20] The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV PINS instruction. In the range 0 to 32 inclusive. OUT_COUNT read-write [19:15] The pin which is mapped to the least-significant bit of a state machine's IN data bus. Higher-numbered pins are mapped to consecutively more-significant data bits, with a modulo of 32 applied to pin number. IN_BASE read-write [14:10] The lowest-numbered pin that will be affected by a side-set operation. The MSBs of an instruction's side-set/delay field (up to 5, determined by SIDESET_COUNT) are used for side-set data, with the remaining LSBs used for delay. The least-significant bit of the side-set portion is the bit written to this pin, with more-significant bits written to higher-numbered pins. SIDESET_BASE read-write [9:5] The lowest-numbered pin that will be affected by a SET PINS or SET PINDIRS instruction. The data written to this pin is the least-significant bit of the SET data. SET_BASE read-write [4:0] The lowest-numbered pin that will be affected by an OUT PINS, OUT PINDIRS or MOV PINS instruction. The data written to this pin will always be the least-significant bit of the OUT or MOV data. OUT_BASE SM0_PINCTRL 0x14000000 0x00e0 Clock divisor register for state machine 1\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) read-write [31:16] Effective frequency is sysclk/(int + frac/256).\n Value of 0 is interpreted as 65536. If INT is 0, FRAC must also be 0. INT read-write [15:8] Fractional part of clock divisor FRAC SM1_CLKDIV 0x00010000 0x00e4 Execution/behavioural settings for state machine 1 read-only [31:31] If 1, an instruction written to SMx_INSTR is stalled, and latched by the state machine. Will clear to 0 once this instruction completes. EXEC_STALLED read-write [30:30] If 1, the MSB of the Delay/Side-set instruction field is used as side-set enable, rather than a side-set data bit. This allows instructions to perform side-set optionally, rather than on every instruction, but the maximum possible side-set width is reduced from 5 to 4. Note that the value of PINCTRL_SIDESET_COUNT is inclusive of this enable bit. SIDE_EN read-write [29:29] If 1, side-set data is asserted to pin directions, instead of pin values SIDE_PINDIR read-write [28:24] The GPIO number to use as condition for JMP PIN. Unaffected by input mapping. JMP_PIN read-write [23:19] Which data bit to use for inline OUT enable OUT_EN_SEL read-write [18:18] If 1, use a bit of OUT data as an auxiliary write enable\n When used in conjunction with OUT_STICKY, writes with an enable of 0 will\n deassert the latest pin write. This can create useful masking/override behaviour\n due to the priority ordering of state machine pin writes (SM0 < SM1 < ...) INLINE_OUT_EN read-write [17:17] Continuously assert the most recent OUT/SET to the pins OUT_STICKY read-write [16:12] After reaching this address, execution is wrapped to wrap_bottom.\n If the instruction is a jump, and the jump condition is true, the jump takes priority. WRAP_TOP read-write [11:7] After reaching wrap_top, execution is wrapped to this address. WRAP_BOTTOM read-write [4:4] Comparison used for the MOV x, STATUS instruction. All-ones if TX FIFO level < N, otherwise all-zeroes TXLEVEL 0 All-ones if RX FIFO level < N, otherwise all-zeroes RXLEVEL 1 STATUS_SEL read-write [3:0] Comparison level for the MOV x, STATUS instruction STATUS_N SM1_EXECCTRL 0x0001f000 0x00e8 Control behaviour of the input/output shift registers for state machine 1 read-write [31:31] When 1, RX FIFO steals the TX FIFO's storage, and becomes twice as deep.\n TX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_RX read-write [30:30] When 1, TX FIFO steals the RX FIFO's storage, and becomes twice as deep.\n RX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_TX read-write [29:25] Number of bits shifted out of OSR before autopull, or conditional pull (PULL IFEMPTY), will take place.\n Write 0 for value of 32. PULL_THRESH read-write [24:20] Number of bits shifted into ISR before autopush, or conditional push (PUSH IFFULL), will take place.\n Write 0 for value of 32. PUSH_THRESH read-write [19:19] 1 = shift out of output shift register to right. 0 = to left. OUT_SHIFTDIR read-write [18:18] 1 = shift input shift register to right (data enters from left). 0 = to left. IN_SHIFTDIR read-write [17:17] Pull automatically when the output shift register is emptied, i.e. on or following an OUT instruction which causes the output shift counter to reach or exceed PULL_THRESH. AUTOPULL read-write [16:16] Push automatically when the input shift register is filled, i.e. on an IN instruction which causes the input shift counter to reach or exceed PUSH_THRESH. AUTOPUSH SM1_SHIFTCTRL 0x000c0000 0x00ec Current instruction address of state machine 1 read-only [4:0] SM1_ADDR SM1_ADDR 0x00000000 0x00f0 Read to see the instruction currently addressed by state machine 1's program counter\n Write to execute an instruction immediately (including jumps) and then resume execution. read-write [15:0] SM1_INSTR SM1_INSTR 0x00000000 0x00f4 State machine pin control read-write [31:29] The number of MSBs of the Delay/Side-set instruction field which are used for side-set. Inclusive of the enable bit, if present. Minimum of 0 (all delay bits, no side-set) and maximum of 5 (all side-set, no delay). SIDESET_COUNT read-write [28:26] The number of pins asserted by a SET. In the range 0 to 5 inclusive. SET_COUNT read-write [25:20] The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV PINS instruction. In the range 0 to 32 inclusive. OUT_COUNT read-write [19:15] The pin which is mapped to the least-significant bit of a state machine's IN data bus. Higher-numbered pins are mapped to consecutively more-significant data bits, with a modulo of 32 applied to pin number. IN_BASE read-write [14:10] The lowest-numbered pin that will be affected by a side-set operation. The MSBs of an instruction's side-set/delay field (up to 5, determined by SIDESET_COUNT) are used for side-set data, with the remaining LSBs used for delay. The least-significant bit of the side-set portion is the bit written to this pin, with more-significant bits written to higher-numbered pins. SIDESET_BASE read-write [9:5] The lowest-numbered pin that will be affected by a SET PINS or SET PINDIRS instruction. The data written to this pin is the least-significant bit of the SET data. SET_BASE read-write [4:0] The lowest-numbered pin that will be affected by an OUT PINS, OUT PINDIRS or MOV PINS instruction. The data written to this pin will always be the least-significant bit of the OUT or MOV data. OUT_BASE SM1_PINCTRL 0x14000000 0x00f8 Clock divisor register for state machine 2\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) read-write [31:16] Effective frequency is sysclk/(int + frac/256).\n Value of 0 is interpreted as 65536. If INT is 0, FRAC must also be 0. INT read-write [15:8] Fractional part of clock divisor FRAC SM2_CLKDIV 0x00010000 0x00fc Execution/behavioural settings for state machine 2 read-only [31:31] If 1, an instruction written to SMx_INSTR is stalled, and latched by the state machine. Will clear to 0 once this instruction completes. EXEC_STALLED read-write [30:30] If 1, the MSB of the Delay/Side-set instruction field is used as side-set enable, rather than a side-set data bit. This allows instructions to perform side-set optionally, rather than on every instruction, but the maximum possible side-set width is reduced from 5 to 4. Note that the value of PINCTRL_SIDESET_COUNT is inclusive of this enable bit. SIDE_EN read-write [29:29] If 1, side-set data is asserted to pin directions, instead of pin values SIDE_PINDIR read-write [28:24] The GPIO number to use as condition for JMP PIN. Unaffected by input mapping. JMP_PIN read-write [23:19] Which data bit to use for inline OUT enable OUT_EN_SEL read-write [18:18] If 1, use a bit of OUT data as an auxiliary write enable\n When used in conjunction with OUT_STICKY, writes with an enable of 0 will\n deassert the latest pin write. This can create useful masking/override behaviour\n due to the priority ordering of state machine pin writes (SM0 < SM1 < ...) INLINE_OUT_EN read-write [17:17] Continuously assert the most recent OUT/SET to the pins OUT_STICKY read-write [16:12] After reaching this address, execution is wrapped to wrap_bottom.\n If the instruction is a jump, and the jump condition is true, the jump takes priority. WRAP_TOP read-write [11:7] After reaching wrap_top, execution is wrapped to this address. WRAP_BOTTOM read-write [4:4] Comparison used for the MOV x, STATUS instruction. All-ones if TX FIFO level < N, otherwise all-zeroes TXLEVEL 0 All-ones if RX FIFO level < N, otherwise all-zeroes RXLEVEL 1 STATUS_SEL read-write [3:0] Comparison level for the MOV x, STATUS instruction STATUS_N SM2_EXECCTRL 0x0001f000 0x0100 Control behaviour of the input/output shift registers for state machine 2 read-write [31:31] When 1, RX FIFO steals the TX FIFO's storage, and becomes twice as deep.\n TX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_RX read-write [30:30] When 1, TX FIFO steals the RX FIFO's storage, and becomes twice as deep.\n RX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_TX read-write [29:25] Number of bits shifted out of OSR before autopull, or conditional pull (PULL IFEMPTY), will take place.\n Write 0 for value of 32. PULL_THRESH read-write [24:20] Number of bits shifted into ISR before autopush, or conditional push (PUSH IFFULL), will take place.\n Write 0 for value of 32. PUSH_THRESH read-write [19:19] 1 = shift out of output shift register to right. 0 = to left. OUT_SHIFTDIR read-write [18:18] 1 = shift input shift register to right (data enters from left). 0 = to left. IN_SHIFTDIR read-write [17:17] Pull automatically when the output shift register is emptied, i.e. on or following an OUT instruction which causes the output shift counter to reach or exceed PULL_THRESH. AUTOPULL read-write [16:16] Push automatically when the input shift register is filled, i.e. on an IN instruction which causes the input shift counter to reach or exceed PUSH_THRESH. AUTOPUSH SM2_SHIFTCTRL 0x000c0000 0x0104 Current instruction address of state machine 2 read-only [4:0] SM2_ADDR SM2_ADDR 0x00000000 0x0108 Read to see the instruction currently addressed by state machine 2's program counter\n Write to execute an instruction immediately (including jumps) and then resume execution. read-write [15:0] SM2_INSTR SM2_INSTR 0x00000000 0x010c State machine pin control read-write [31:29] The number of MSBs of the Delay/Side-set instruction field which are used for side-set. Inclusive of the enable bit, if present. Minimum of 0 (all delay bits, no side-set) and maximum of 5 (all side-set, no delay). SIDESET_COUNT read-write [28:26] The number of pins asserted by a SET. In the range 0 to 5 inclusive. SET_COUNT read-write [25:20] The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV PINS instruction. In the range 0 to 32 inclusive. OUT_COUNT read-write [19:15] The pin which is mapped to the least-significant bit of a state machine's IN data bus. Higher-numbered pins are mapped to consecutively more-significant data bits, with a modulo of 32 applied to pin number. IN_BASE read-write [14:10] The lowest-numbered pin that will be affected by a side-set operation. The MSBs of an instruction's side-set/delay field (up to 5, determined by SIDESET_COUNT) are used for side-set data, with the remaining LSBs used for delay. The least-significant bit of the side-set portion is the bit written to this pin, with more-significant bits written to higher-numbered pins. SIDESET_BASE read-write [9:5] The lowest-numbered pin that will be affected by a SET PINS or SET PINDIRS instruction. The data written to this pin is the least-significant bit of the SET data. SET_BASE read-write [4:0] The lowest-numbered pin that will be affected by an OUT PINS, OUT PINDIRS or MOV PINS instruction. The data written to this pin will always be the least-significant bit of the OUT or MOV data. OUT_BASE SM2_PINCTRL 0x14000000 0x0110 Clock divisor register for state machine 3\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) read-write [31:16] Effective frequency is sysclk/(int + frac/256).\n Value of 0 is interpreted as 65536. If INT is 0, FRAC must also be 0. INT read-write [15:8] Fractional part of clock divisor FRAC SM3_CLKDIV 0x00010000 0x0114 Execution/behavioural settings for state machine 3 read-only [31:31] If 1, an instruction written to SMx_INSTR is stalled, and latched by the state machine. Will clear to 0 once this instruction completes. EXEC_STALLED read-write [30:30] If 1, the MSB of the Delay/Side-set instruction field is used as side-set enable, rather than a side-set data bit. This allows instructions to perform side-set optionally, rather than on every instruction, but the maximum possible side-set width is reduced from 5 to 4. Note that the value of PINCTRL_SIDESET_COUNT is inclusive of this enable bit. SIDE_EN read-write [29:29] If 1, side-set data is asserted to pin directions, instead of pin values SIDE_PINDIR read-write [28:24] The GPIO number to use as condition for JMP PIN. Unaffected by input mapping. JMP_PIN read-write [23:19] Which data bit to use for inline OUT enable OUT_EN_SEL read-write [18:18] If 1, use a bit of OUT data as an auxiliary write enable\n When used in conjunction with OUT_STICKY, writes with an enable of 0 will\n deassert the latest pin write. This can create useful masking/override behaviour\n due to the priority ordering of state machine pin writes (SM0 < SM1 < ...) INLINE_OUT_EN read-write [17:17] Continuously assert the most recent OUT/SET to the pins OUT_STICKY read-write [16:12] After reaching this address, execution is wrapped to wrap_bottom.\n If the instruction is a jump, and the jump condition is true, the jump takes priority. WRAP_TOP read-write [11:7] After reaching wrap_top, execution is wrapped to this address. WRAP_BOTTOM read-write [4:4] Comparison used for the MOV x, STATUS instruction. All-ones if TX FIFO level < N, otherwise all-zeroes TXLEVEL 0 All-ones if RX FIFO level < N, otherwise all-zeroes RXLEVEL 1 STATUS_SEL read-write [3:0] Comparison level for the MOV x, STATUS instruction STATUS_N SM3_EXECCTRL 0x0001f000 0x0118 Control behaviour of the input/output shift registers for state machine 3 read-write [31:31] When 1, RX FIFO steals the TX FIFO's storage, and becomes twice as deep.\n TX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_RX read-write [30:30] When 1, TX FIFO steals the RX FIFO's storage, and becomes twice as deep.\n RX FIFO is disabled as a result (always reads as both full and empty).\n FIFOs are flushed when this bit is changed. FJOIN_TX read-write [29:25] Number of bits shifted out of OSR before autopull, or conditional pull (PULL IFEMPTY), will take place.\n Write 0 for value of 32. PULL_THRESH read-write [24:20] Number of bits shifted into ISR before autopush, or conditional push (PUSH IFFULL), will take place.\n Write 0 for value of 32. PUSH_THRESH read-write [19:19] 1 = shift out of output shift register to right. 0 = to left. OUT_SHIFTDIR read-write [18:18] 1 = shift input shift register to right (data enters from left). 0 = to left. IN_SHIFTDIR read-write [17:17] Pull automatically when the output shift register is emptied, i.e. on or following an OUT instruction which causes the output shift counter to reach or exceed PULL_THRESH. AUTOPULL read-write [16:16] Push automatically when the input shift register is filled, i.e. on an IN instruction which causes the input shift counter to reach or exceed PUSH_THRESH. AUTOPUSH SM3_SHIFTCTRL 0x000c0000 0x011c Current instruction address of state machine 3 read-only [4:0] SM3_ADDR SM3_ADDR 0x00000000 0x0120 Read to see the instruction currently addressed by state machine 3's program counter\n Write to execute an instruction immediately (including jumps) and then resume execution. read-write [15:0] SM3_INSTR SM3_INSTR 0x00000000 0x0124 State machine pin control read-write [31:29] The number of MSBs of the Delay/Side-set instruction field which are used for side-set. Inclusive of the enable bit, if present. Minimum of 0 (all delay bits, no side-set) and maximum of 5 (all side-set, no delay). SIDESET_COUNT read-write [28:26] The number of pins asserted by a SET. In the range 0 to 5 inclusive. SET_COUNT read-write [25:20] The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV PINS instruction. In the range 0 to 32 inclusive. OUT_COUNT read-write [19:15] The pin which is mapped to the least-significant bit of a state machine's IN data bus. Higher-numbered pins are mapped to consecutively more-significant data bits, with a modulo of 32 applied to pin number. IN_BASE read-write [14:10] The lowest-numbered pin that will be affected by a side-set operation. The MSBs of an instruction's side-set/delay field (up to 5, determined by SIDESET_COUNT) are used for side-set data, with the remaining LSBs used for delay. The least-significant bit of the side-set portion is the bit written to this pin, with more-significant bits written to higher-numbered pins. SIDESET_BASE read-write [9:5] The lowest-numbered pin that will be affected by a SET PINS or SET PINDIRS instruction. The data written to this pin is the least-significant bit of the SET data. SET_BASE read-write [4:0] The lowest-numbered pin that will be affected by an OUT PINS, OUT PINDIRS or MOV PINS instruction. The data written to this pin will always be the least-significant bit of the OUT or MOV data. OUT_BASE SM3_PINCTRL 0x14000000 0x0128 Raw Interrupts read-only [11:11] SM3 read-only [10:10] SM2 read-only [9:9] SM1 read-only [8:8] SM0 read-only [7:7] SM3_TXNFULL read-only [6:6] SM2_TXNFULL read-only [5:5] SM1_TXNFULL read-only [4:4] SM0_TXNFULL read-only [3:3] SM3_RXNEMPTY read-only [2:2] SM2_RXNEMPTY read-only [1:1] SM1_RXNEMPTY read-only [0:0] SM0_RXNEMPTY INTR 0x00000000 0x012c Interrupt Enable for irq0 read-write [11:11] SM3 read-write [10:10] SM2 read-write [9:9] SM1 read-write [8:8] SM0 read-write [7:7] SM3_TXNFULL read-write [6:6] SM2_TXNFULL read-write [5:5] SM1_TXNFULL read-write [4:4] SM0_TXNFULL read-write [3:3] SM3_RXNEMPTY read-write [2:2] SM2_RXNEMPTY read-write [1:1] SM1_RXNEMPTY read-write [0:0] SM0_RXNEMPTY IRQ0_INTE 0x00000000 0x0130 Interrupt Force for irq0 read-write [11:11] SM3 read-write [10:10] SM2 read-write [9:9] SM1 read-write [8:8] SM0 read-write [7:7] SM3_TXNFULL read-write [6:6] SM2_TXNFULL read-write [5:5] SM1_TXNFULL read-write [4:4] SM0_TXNFULL read-write [3:3] SM3_RXNEMPTY read-write [2:2] SM2_RXNEMPTY read-write [1:1] SM1_RXNEMPTY read-write [0:0] SM0_RXNEMPTY IRQ0_INTF 0x00000000 0x0134 Interrupt status after masking & forcing for irq0 read-only [11:11] SM3 read-only [10:10] SM2 read-only [9:9] SM1 read-only [8:8] SM0 read-only [7:7] SM3_TXNFULL read-only [6:6] SM2_TXNFULL read-only [5:5] SM1_TXNFULL read-only [4:4] SM0_TXNFULL read-only [3:3] SM3_RXNEMPTY read-only [2:2] SM2_RXNEMPTY read-only [1:1] SM1_RXNEMPTY read-only [0:0] SM0_RXNEMPTY IRQ0_INTS 0x00000000 0x0138 Interrupt Enable for irq1 read-write [11:11] SM3 read-write [10:10] SM2 read-write [9:9] SM1 read-write [8:8] SM0 read-write [7:7] SM3_TXNFULL read-write [6:6] SM2_TXNFULL read-write [5:5] SM1_TXNFULL read-write [4:4] SM0_TXNFULL read-write [3:3] SM3_RXNEMPTY read-write [2:2] SM2_RXNEMPTY read-write [1:1] SM1_RXNEMPTY read-write [0:0] SM0_RXNEMPTY IRQ1_INTE 0x00000000 0x013c Interrupt Force for irq1 read-write [11:11] SM3 read-write [10:10] SM2 read-write [9:9] SM1 read-write [8:8] SM0 read-write [7:7] SM3_TXNFULL read-write [6:6] SM2_TXNFULL read-write [5:5] SM1_TXNFULL read-write [4:4] SM0_TXNFULL read-write [3:3] SM3_RXNEMPTY read-write [2:2] SM2_RXNEMPTY read-write [1:1] SM1_RXNEMPTY read-write [0:0] SM0_RXNEMPTY IRQ1_INTF 0x00000000 0x0140 Interrupt status after masking & forcing for irq1 read-only [11:11] SM3 read-only [10:10] SM2 read-only [9:9] SM1 read-only [8:8] SM0 read-only [7:7] SM3_TXNFULL read-only [6:6] SM2_TXNFULL read-only [5:5] SM1_TXNFULL read-only [4:4] SM0_TXNFULL read-only [3:3] SM3_RXNEMPTY read-only [2:2] SM2_RXNEMPTY read-only [1:1] SM1_RXNEMPTY read-only [0:0] SM0_RXNEMPTY IRQ1_INTS 0x00000000 32 1 0x50300000 PIO1_IRQ_0 9 PIO1_IRQ_1 10 PIO1 0 0x0200 registers 0xd0000000 Single-cycle IO block\n Provides core-local and inter-core hardware for the two processors, with single-cycle access. SIO_IRQ_PROC0 15 SIO_IRQ_PROC1 16 SIO read-only 0x0000 Processor core identifier\n Value is 0 when read from processor core 0, and 1 when read from processor core 1. CPUID 0x00000000 0x0004 Input value for GPIO pins read-only [29:0] Input value for GPIO0...29 GPIO_IN GPIO_IN 0x00000000 0x0008 Input value for QSPI pins read-only [5:0] Input value on QSPI IO in order 0..5: SCLK, SSn, SD0, SD1, SD2, SD3 GPIO_HI_IN GPIO_HI_IN 0x00000000 0x0010 GPIO output value read-write [29:0] Set output level (1/0 -> high/low) for GPIO0...29.\n Reading back gives the last value written, NOT the input value from the pins.\n If core 0 and core 1 both write to GPIO_OUT simultaneously (or to a SET/CLR/XOR alias),\n the result is as though the write from core 0 took place first,\n and the write from core 1 was then applied to that intermediate result. GPIO_OUT GPIO_OUT 0x00000000 0x0014 GPIO output value set read-write [29:0] Perform an atomic bit-set on GPIO_OUT, i.e. `GPIO_OUT |= wdata` GPIO_OUT_SET GPIO_OUT_SET 0x00000000 0x0018 GPIO output value clear read-write [29:0] Perform an atomic bit-clear on GPIO_OUT, i.e. `GPIO_OUT &= ~wdata` GPIO_OUT_CLR GPIO_OUT_CLR 0x00000000 0x001c GPIO output value XOR read-write [29:0] Perform an atomic bitwise XOR on GPIO_OUT, i.e. `GPIO_OUT ^= wdata` GPIO_OUT_XOR GPIO_OUT_XOR 0x00000000 0x0020 GPIO output enable read-write [29:0] Set output enable (1/0 -> output/input) for GPIO0...29.\n Reading back gives the last value written.\n If core 0 and core 1 both write to GPIO_OE simultaneously (or to a SET/CLR/XOR alias),\n the result is as though the write from core 0 took place first,\n and the write from core 1 was then applied to that intermediate result. GPIO_OE GPIO_OE 0x00000000 0x0024 GPIO output enable set read-write [29:0] Perform an atomic bit-set on GPIO_OE, i.e. `GPIO_OE |= wdata` GPIO_OE_SET GPIO_OE_SET 0x00000000 0x0028 GPIO output enable clear read-write [29:0] Perform an atomic bit-clear on GPIO_OE, i.e. `GPIO_OE &= ~wdata` GPIO_OE_CLR GPIO_OE_CLR 0x00000000 0x002c GPIO output enable XOR read-write [29:0] Perform an atomic bitwise XOR on GPIO_OE, i.e. `GPIO_OE ^= wdata` GPIO_OE_XOR GPIO_OE_XOR 0x00000000 0x0030 QSPI output value read-write [5:0] Set output level (1/0 -> high/low) for QSPI IO0...5.\n Reading back gives the last value written, NOT the input value from the pins.\n If core 0 and core 1 both write to GPIO_HI_OUT simultaneously (or to a SET/CLR/XOR alias),\n the result is as though the write from core 0 took place first,\n and the write from core 1 was then applied to that intermediate result. GPIO_HI_OUT GPIO_HI_OUT 0x00000000 0x0034 QSPI output value set read-write [5:0] Perform an atomic bit-set on GPIO_HI_OUT, i.e. `GPIO_HI_OUT |= wdata` GPIO_HI_OUT_SET GPIO_HI_OUT_SET 0x00000000 0x0038 QSPI output value clear read-write [5:0] Perform an atomic bit-clear on GPIO_HI_OUT, i.e. `GPIO_HI_OUT &= ~wdata` GPIO_HI_OUT_CLR GPIO_HI_OUT_CLR 0x00000000 0x003c QSPI output value XOR read-write [5:0] Perform an atomic bitwise XOR on GPIO_HI_OUT, i.e. `GPIO_HI_OUT ^= wdata` GPIO_HI_OUT_XOR GPIO_HI_OUT_XOR 0x00000000 0x0040 QSPI output enable read-write [5:0] Set output enable (1/0 -> output/input) for QSPI IO0...5.\n Reading back gives the last value written.\n If core 0 and core 1 both write to GPIO_HI_OE simultaneously (or to a SET/CLR/XOR alias),\n the result is as though the write from core 0 took place first,\n and the write from core 1 was then applied to that intermediate result. GPIO_HI_OE GPIO_HI_OE 0x00000000 0x0044 QSPI output enable set read-write [5:0] Perform an atomic bit-set on GPIO_HI_OE, i.e. `GPIO_HI_OE |= wdata` GPIO_HI_OE_SET GPIO_HI_OE_SET 0x00000000 0x0048 QSPI output enable clear read-write [5:0] Perform an atomic bit-clear on GPIO_HI_OE, i.e. `GPIO_HI_OE &= ~wdata` GPIO_HI_OE_CLR GPIO_HI_OE_CLR 0x00000000 0x004c QSPI output enable XOR read-write [5:0] Perform an atomic bitwise XOR on GPIO_HI_OE, i.e. `GPIO_HI_OE ^= wdata` GPIO_HI_OE_XOR GPIO_HI_OE_XOR 0x00000000 0x0050 Status register for inter-core FIFOs (mailboxes).\n There is one FIFO in the core 0 -> core 1 direction, and one core 1 -> core 0. Both are 32 bits wide and 8 words deep.\n Core 0 can see the read side of the 1->0 FIFO (RX), and the write side of 0->1 FIFO (TX).\n Core 1 can see the read side of the 0->1 FIFO (RX), and the write side of 1->0 FIFO (TX).\n The SIO IRQ for each core is the logical OR of the VLD, WOF and ROE fields of its FIFO_ST register. read-write [3:3] Sticky flag indicating the RX FIFO was read when empty. This read was ignored by the FIFO. oneToClear ROE read-write [2:2] Sticky flag indicating the TX FIFO was written when full. This write was ignored by the FIFO. oneToClear WOF read-only [1:1] Value is 1 if this core's TX FIFO is not full (i.e. if FIFO_WR is ready for more data) RDY read-only [0:0] Value is 1 if this core's RX FIFO is not empty (i.e. if FIFO_RD is valid) VLD FIFO_ST 0x00000002 write-only 0x0054 Write access to this core's TX FIFO FIFO_WR 0x00000000 read-only 0x0058 Read access to this core's RX FIFO FIFO_RD 0x00000000 read-only 0x005c Spinlock state\n A bitmap containing the state of all 32 spinlocks (1=locked).\n Mainly intended for debugging. SPINLOCK_ST 0x00000000 read-write 0x0060 Divider unsigned dividend\n Write to the DIVIDEND operand of the divider, i.e. the p in `p / q`.\n Any operand write starts a new calculation. The results appear in QUOTIENT, REMAINDER.\n UDIVIDEND/SDIVIDEND are aliases of the same internal register. The U alias starts an\n unsigned calculation, and the S alias starts a signed calculation. DIV_UDIVIDEND 0x00000000 read-write 0x0064 Divider unsigned divisor\n Write to the DIVISOR operand of the divider, i.e. the q in `p / q`.\n Any operand write starts a new calculation. The results appear in QUOTIENT, REMAINDER.\n UDIVIDEND/SDIVIDEND are aliases of the same internal register. The U alias starts an\n unsigned calculation, and the S alias starts a signed calculation. DIV_UDIVISOR 0x00000000 read-write 0x0068 Divider signed dividend\n The same as UDIVIDEND, but starts a signed calculation, rather than unsigned. DIV_SDIVIDEND 0x00000000 read-write 0x006c Divider signed divisor\n The same as UDIVISOR, but starts a signed calculation, rather than unsigned. DIV_SDIVISOR 0x00000000 read-write 0x0070 Divider result quotient\n The result of `DIVIDEND / DIVISOR` (division). Contents undefined while CSR_READY is low.\n For signed calculations, QUOTIENT is negative when the signs of DIVIDEND and DIVISOR differ.\n This register can be written to directly, for context save/restore purposes. This halts any\n in-progress calculation and sets the CSR_READY and CSR_DIRTY flags.\n Reading from QUOTIENT clears the CSR_DIRTY flag, so should read results in the order\n REMAINDER, QUOTIENT if CSR_DIRTY is used. DIV_QUOTIENT 0x00000000 read-write 0x0074 Divider result remainder\n The result of `DIVIDEND % DIVISOR` (modulo). Contents undefined while CSR_READY is low.\n For signed calculations, REMAINDER is negative only when DIVIDEND is negative.\n This register can be written to directly, for context save/restore purposes. This halts any\n in-progress calculation and sets the CSR_READY and CSR_DIRTY flags. DIV_REMAINDER 0x00000000 0x0078 Control and status register for divider. read-only [1:1] Changes to 1 when any register is written, and back to 0 when QUOTIENT is read.\n Software can use this flag to make save/restore more efficient (skip if not DIRTY).\n If the flag is used in this way, it's recommended to either read QUOTIENT only,\n or REMAINDER and then QUOTIENT, to prevent data loss on context switch. DIRTY read-only [0:0] Reads as 0 when a calculation is in progress, 1 otherwise.\n Writing an operand (xDIVIDEND, xDIVISOR) will immediately start a new calculation, no\n matter if one is already in progress.\n Writing to a result register will immediately terminate any in-progress calculation\n and set the READY and DIRTY flags. READY DIV_CSR 0x00000001 read-write 0x0080 Read/write access to accumulator 0 INTERP0_ACCUM0 0x00000000 read-write 0x0084 Read/write access to accumulator 1 INTERP0_ACCUM1 0x00000000 read-write 0x0088 Read/write access to BASE0 register. INTERP0_BASE0 0x00000000 read-write 0x008c Read/write access to BASE1 register. INTERP0_BASE1 0x00000000 read-write 0x0090 Read/write access to BASE2 register. INTERP0_BASE2 0x00000000 read-only 0x0094 Read LANE0 result, and simultaneously write lane results to both accumulators (POP). INTERP0_POP_LANE0 0x00000000 read-only 0x0098 Read LANE1 result, and simultaneously write lane results to both accumulators (POP). INTERP0_POP_LANE1 0x00000000 read-only 0x009c Read FULL result, and simultaneously write lane results to both accumulators (POP). INTERP0_POP_FULL 0x00000000 read-only 0x00a0 Read LANE0 result, without altering any internal state (PEEK). INTERP0_PEEK_LANE0 0x00000000 read-only 0x00a4 Read LANE1 result, without altering any internal state (PEEK). INTERP0_PEEK_LANE1 0x00000000 read-only 0x00a8 Read FULL result, without altering any internal state (PEEK). INTERP0_PEEK_FULL 0x00000000 0x00ac Control register for lane 0 read-only [25:25] Set if either OVERF0 or OVERF1 is set. OVERF read-only [24:24] Indicates if any masked-off MSBs in ACCUM1 are set. OVERF1 read-only [23:23] Indicates if any masked-off MSBs in ACCUM0 are set. OVERF0 read-write [21:21] Only present on INTERP0 on each core. If BLEND mode is enabled:\n - LANE1 result is a linear interpolation between BASE0 and BASE1, controlled\n by the 8 LSBs of lane 1 shift and mask value (a fractional number between\n 0 and 255/256ths)\n - LANE0 result does not have BASE0 added (yields only the 8 LSBs of lane 1 shift+mask value)\n - FULL result does not have lane 1 shift+mask value added (BASE2 + lane 0 shift+mask)\n LANE1 SIGNED flag controls whether the interpolation is signed or unsigned. BLEND read-write [20:19] ORed into bits 29:28 of the lane result presented to the processor on the bus.\n No effect on the internal 32-bit datapath. Handy for using a lane to generate sequence\n of pointers into flash or SRAM. FORCE_MSB read-write [18:18] If 1, mask + shift is bypassed for LANE0 result. This does not affect FULL result. ADD_RAW read-write [17:17] If 1, feed the opposite lane's result into this lane's accumulator on POP. CROSS_RESULT read-write [16:16] If 1, feed the opposite lane's accumulator into this lane's shift + mask hardware.\n Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is before the shift+mask bypass) CROSS_INPUT read-write [15:15] If SIGNED is set, the shifted and masked accumulator value is sign-extended to 32 bits\n before adding to BASE0, and LANE0 PEEK/POP appear extended to 32 bits when read by processor. SIGNED read-write [14:10] The most-significant bit allowed to pass by the mask (inclusive)\n Setting MSB < LSB may cause chip to turn inside-out MASK_MSB read-write [9:5] The least-significant bit allowed to pass by the mask (inclusive) MASK_LSB read-write [4:0] Logical right-shift applied to accumulator before masking SHIFT INTERP0_CTRL_LANE0 0x00000000 0x00b0 Control register for lane 1 read-write [20:19] ORed into bits 29:28 of the lane result presented to the processor on the bus.\n No effect on the internal 32-bit datapath. Handy for using a lane to generate sequence\n of pointers into flash or SRAM. FORCE_MSB read-write [18:18] If 1, mask + shift is bypassed for LANE1 result. This does not affect FULL result. ADD_RAW read-write [17:17] If 1, feed the opposite lane's result into this lane's accumulator on POP. CROSS_RESULT read-write [16:16] If 1, feed the opposite lane's accumulator into this lane's shift + mask hardware.\n Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is before the shift+mask bypass) CROSS_INPUT read-write [15:15] If SIGNED is set, the shifted and masked accumulator value is sign-extended to 32 bits\n before adding to BASE1, and LANE1 PEEK/POP appear extended to 32 bits when read by processor. SIGNED read-write [14:10] The most-significant bit allowed to pass by the mask (inclusive)\n Setting MSB < LSB may cause chip to turn inside-out MASK_MSB read-write [9:5] The least-significant bit allowed to pass by the mask (inclusive) MASK_LSB read-write [4:0] Logical right-shift applied to accumulator before masking SHIFT INTERP0_CTRL_LANE1 0x00000000 0x00b4 Values written here are atomically added to ACCUM0\n Reading yields lane 0's raw shift and mask value (BASE0 not added). read-write [23:0] INTERP0_ACCUM0_ADD INTERP0_ACCUM0_ADD 0x00000000 0x00b8 Values written here are atomically added to ACCUM1\n Reading yields lane 1's raw shift and mask value (BASE1 not added). read-write [23:0] INTERP0_ACCUM1_ADD INTERP0_ACCUM1_ADD 0x00000000 read-write 0x00bc On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously.\n Each half is sign-extended to 32 bits if that lane's SIGNED flag is set. INTERP0_BASE_1AND0 0x00000000 read-write 0x00c0 Read/write access to accumulator 0 INTERP1_ACCUM0 0x00000000 read-write 0x00c4 Read/write access to accumulator 1 INTERP1_ACCUM1 0x00000000 read-write 0x00c8 Read/write access to BASE0 register. INTERP1_BASE0 0x00000000 read-write 0x00cc Read/write access to BASE1 register. INTERP1_BASE1 0x00000000 read-write 0x00d0 Read/write access to BASE2 register. INTERP1_BASE2 0x00000000 read-only 0x00d4 Read LANE0 result, and simultaneously write lane results to both accumulators (POP). INTERP1_POP_LANE0 0x00000000 read-only 0x00d8 Read LANE1 result, and simultaneously write lane results to both accumulators (POP). INTERP1_POP_LANE1 0x00000000 read-only 0x00dc Read FULL result, and simultaneously write lane results to both accumulators (POP). INTERP1_POP_FULL 0x00000000 read-only 0x00e0 Read LANE0 result, without altering any internal state (PEEK). INTERP1_PEEK_LANE0 0x00000000 read-only 0x00e4 Read LANE1 result, without altering any internal state (PEEK). INTERP1_PEEK_LANE1 0x00000000 read-only 0x00e8 Read FULL result, without altering any internal state (PEEK). INTERP1_PEEK_FULL 0x00000000 0x00ec Control register for lane 0 read-only [25:25] Set if either OVERF0 or OVERF1 is set. OVERF read-only [24:24] Indicates if any masked-off MSBs in ACCUM1 are set. OVERF1 read-only [23:23] Indicates if any masked-off MSBs in ACCUM0 are set. OVERF0 read-write [22:22] Only present on INTERP1 on each core. If CLAMP mode is enabled:\n - LANE0 result is shifted and masked ACCUM0, clamped by a lower bound of\n BASE0 and an upper bound of BASE1.\n - Signedness of these comparisons is determined by LANE0_CTRL_SIGNED CLAMP read-write [20:19] ORed into bits 29:28 of the lane result presented to the processor on the bus.\n No effect on the internal 32-bit datapath. Handy for using a lane to generate sequence\n of pointers into flash or SRAM. FORCE_MSB read-write [18:18] If 1, mask + shift is bypassed for LANE0 result. This does not affect FULL result. ADD_RAW read-write [17:17] If 1, feed the opposite lane's result into this lane's accumulator on POP. CROSS_RESULT read-write [16:16] If 1, feed the opposite lane's accumulator into this lane's shift + mask hardware.\n Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is before the shift+mask bypass) CROSS_INPUT read-write [15:15] If SIGNED is set, the shifted and masked accumulator value is sign-extended to 32 bits\n before adding to BASE0, and LANE0 PEEK/POP appear extended to 32 bits when read by processor. SIGNED read-write [14:10] The most-significant bit allowed to pass by the mask (inclusive)\n Setting MSB < LSB may cause chip to turn inside-out MASK_MSB read-write [9:5] The least-significant bit allowed to pass by the mask (inclusive) MASK_LSB read-write [4:0] Logical right-shift applied to accumulator before masking SHIFT INTERP1_CTRL_LANE0 0x00000000 0x00f0 Control register for lane 1 read-write [20:19] ORed into bits 29:28 of the lane result presented to the processor on the bus.\n No effect on the internal 32-bit datapath. Handy for using a lane to generate sequence\n of pointers into flash or SRAM. FORCE_MSB read-write [18:18] If 1, mask + shift is bypassed for LANE1 result. This does not affect FULL result. ADD_RAW read-write [17:17] If 1, feed the opposite lane's result into this lane's accumulator on POP. CROSS_RESULT read-write [16:16] If 1, feed the opposite lane's accumulator into this lane's shift + mask hardware.\n Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is before the shift+mask bypass) CROSS_INPUT read-write [15:15] If SIGNED is set, the shifted and masked accumulator value is sign-extended to 32 bits\n before adding to BASE1, and LANE1 PEEK/POP appear extended to 32 bits when read by processor. SIGNED read-write [14:10] The most-significant bit allowed to pass by the mask (inclusive)\n Setting MSB < LSB may cause chip to turn inside-out MASK_MSB read-write [9:5] The least-significant bit allowed to pass by the mask (inclusive) MASK_LSB read-write [4:0] Logical right-shift applied to accumulator before masking SHIFT INTERP1_CTRL_LANE1 0x00000000 0x00f4 Values written here are atomically added to ACCUM0\n Reading yields lane 0's raw shift and mask value (BASE0 not added). read-write [23:0] INTERP1_ACCUM0_ADD INTERP1_ACCUM0_ADD 0x00000000 0x00f8 Values written here are atomically added to ACCUM1\n Reading yields lane 1's raw shift and mask value (BASE1 not added). read-write [23:0] INTERP1_ACCUM1_ADD INTERP1_ACCUM1_ADD 0x00000000 read-write 0x00fc On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously.\n Each half is sign-extended to 32 bits if that lane's SIGNED flag is set. INTERP1_BASE_1AND0 0x00000000 read-only 0x0100 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK0 0x00000000 read-only 0x0104 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK1 0x00000000 read-only 0x0108 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK2 0x00000000 read-only 0x010c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK3 0x00000000 read-only 0x0110 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK4 0x00000000 read-only 0x0114 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK5 0x00000000 read-only 0x0118 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK6 0x00000000 read-only 0x011c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK7 0x00000000 read-only 0x0120 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK8 0x00000000 read-only 0x0124 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK9 0x00000000 read-only 0x0128 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK10 0x00000000 read-only 0x012c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK11 0x00000000 read-only 0x0130 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK12 0x00000000 read-only 0x0134 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK13 0x00000000 read-only 0x0138 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK14 0x00000000 read-only 0x013c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK15 0x00000000 read-only 0x0140 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK16 0x00000000 read-only 0x0144 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK17 0x00000000 read-only 0x0148 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK18 0x00000000 read-only 0x014c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK19 0x00000000 read-only 0x0150 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK20 0x00000000 read-only 0x0154 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK21 0x00000000 read-only 0x0158 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK22 0x00000000 read-only 0x015c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK23 0x00000000 read-only 0x0160 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK24 0x00000000 read-only 0x0164 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK25 0x00000000 read-only 0x0168 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK26 0x00000000 read-only 0x016c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK27 0x00000000 read-only 0x0170 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK28 0x00000000 read-only 0x0174 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK29 0x00000000 read-only 0x0178 Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK30 0x00000000 read-only 0x017c Reading from a spinlock address will:\n - Return 0 if lock is already locked\n - Otherwise return nonzero, and simultaneously claim the lock\n\n Writing (any value) releases the lock.\n If core 0 and core 1 attempt to claim the same lock simultaneously, core 0 wins.\n The value returned on success is 0x1 << lock number. SPINLOCK31 0x00000000 32 1 0 0x10000 registers 0xe0000000 PPB 0xe010 Use the SysTick Control and Status Register to enable the SysTick features. read-only [16:16] Returns 1 if timer counted to 0 since last time this was read. Clears on read by application or debugger. COUNTFLAG read-write [2:2] SysTick clock source. Always reads as one if SYST_CALIB reports NOREF.\n Selects the SysTick timer clock source:\n 0 = External reference clock.\n 1 = Processor clock. CLKSOURCE read-write [1:1] Enables SysTick exception request:\n 0 = Counting down to zero does not assert the SysTick exception request.\n 1 = Counting down to zero to asserts the SysTick exception request. TICKINT read-write [0:0] Enable SysTick counter:\n 0 = Counter disabled.\n 1 = Counter enabled. ENABLE SYST_CSR 0x00000000 0xe014 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.\n 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. read-write [23:0] Value to load into the SysTick Current Value Register when the counter reaches 0. RELOAD SYST_RVR 0x00000000 0xe018 Use the SysTick Current Value Register to find the current value in the register. The reset value of this register is UNKNOWN. read-write [23:0] Reads return the current value of the SysTick counter. This register is write-clear. Writing to it with any value clears the register to 0. Clearing this register also clears the COUNTFLAG bit of the SysTick Control and Status Register. CURRENT SYST_CVR 0x00000000 0xe01c Use the SysTick Calibration Value Register to enable software to scale to any required speed using divide and multiply. read-only [31:31] If reads as 1, the Reference clock is not provided - the CLKSOURCE bit of the SysTick Control and Status register will be forced to 1 and cannot be cleared to 0. NOREF read-only [30:30] If reads as 1, the calibration value for 10ms is inexact (due to clock frequency). SKEW read-only [23:0] An optional Reload value to be used for 10ms (100Hz) timing, subject to system clock skew errors. If the value reads as 0, the calibration value is not known. TENMS SYST_CALIB 0x00000000 0xe100 Use the Interrupt Set-Enable Register to enable interrupts and determine which interrupts are currently enabled.\n If a pending interrupt is enabled, the NVIC activates the interrupt based on its priority. If an interrupt is not enabled, asserting its interrupt signal changes the interrupt state to pending, but the NVIC never activates the interrupt, regardless of its priority. read-write [31:0] Interrupt set-enable bits.\n Write:\n 0 = No effect.\n 1 = Enable interrupt.\n Read:\n 0 = Interrupt disabled.\n 1 = Interrupt enabled. SETENA NVIC_ISER 0x00000000 0xe180 Use the Interrupt Clear-Enable Registers to disable interrupts and determine which interrupts are currently enabled. read-write [31:0] Interrupt clear-enable bits.\n Write:\n 0 = No effect.\n 1 = Disable interrupt.\n Read:\n 0 = Interrupt disabled.\n 1 = Interrupt enabled. CLRENA NVIC_ICER 0x00000000 0xe200 The NVIC_ISPR forces interrupts into the pending state, and shows which interrupts are pending. read-write [31:0] Interrupt set-pending bits.\n Write:\n 0 = No effect.\n 1 = Changes interrupt state to pending.\n Read:\n 0 = Interrupt is not pending.\n 1 = Interrupt is pending.\n Note: Writing 1 to the NVIC_ISPR bit corresponding to:\n An interrupt that is pending has no effect.\n A disabled interrupt sets the state of that interrupt to pending. SETPEND NVIC_ISPR 0x00000000 0xe280 Use the Interrupt Clear-Pending Register to clear pending interrupts and determine which interrupts are currently pending. read-write [31:0] Interrupt clear-pending bits.\n Write:\n 0 = No effect.\n 1 = Removes pending state and interrupt.\n Read:\n 0 = Interrupt is not pending.\n 1 = Interrupt is pending. CLRPEND NVIC_ICPR 0x00000000 0xe400 Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest.\n Note: Writing 1 to an NVIC_ICPR bit does not affect the active state of the corresponding interrupt.\n These registers are only word-accessible read-write [31:30] Priority of interrupt 3 IP_3 read-write [23:22] Priority of interrupt 2 IP_2 read-write [15:14] Priority of interrupt 1 IP_1 read-write [7:6] Priority of interrupt 0 IP_0 NVIC_IPR0 0x00000000 0xe404 Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 7 IP_7 read-write [23:22] Priority of interrupt 6 IP_6 read-write [15:14] Priority of interrupt 5 IP_5 read-write [7:6] Priority of interrupt 4 IP_4 NVIC_IPR1 0x00000000 0xe408 Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 11 IP_11 read-write [23:22] Priority of interrupt 10 IP_10 read-write [15:14] Priority of interrupt 9 IP_9 read-write [7:6] Priority of interrupt 8 IP_8 NVIC_IPR2 0x00000000 0xe40c Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 15 IP_15 read-write [23:22] Priority of interrupt 14 IP_14 read-write [15:14] Priority of interrupt 13 IP_13 read-write [7:6] Priority of interrupt 12 IP_12 NVIC_IPR3 0x00000000 0xe410 Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 19 IP_19 read-write [23:22] Priority of interrupt 18 IP_18 read-write [15:14] Priority of interrupt 17 IP_17 read-write [7:6] Priority of interrupt 16 IP_16 NVIC_IPR4 0x00000000 0xe414 Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 23 IP_23 read-write [23:22] Priority of interrupt 22 IP_22 read-write [15:14] Priority of interrupt 21 IP_21 read-write [7:6] Priority of interrupt 20 IP_20 NVIC_IPR5 0x00000000 0xe418 Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 27 IP_27 read-write [23:22] Priority of interrupt 26 IP_26 read-write [15:14] Priority of interrupt 25 IP_25 read-write [7:6] Priority of interrupt 24 IP_24 NVIC_IPR6 0x00000000 0xe41c Use the Interrupt Priority Registers to assign a priority from 0 to 3 to each of the available interrupts. 0 is the highest priority, and 3 is the lowest. read-write [31:30] Priority of interrupt 31 IP_31 read-write [23:22] Priority of interrupt 30 IP_30 read-write [15:14] Priority of interrupt 29 IP_29 read-write [7:6] Priority of interrupt 28 IP_28 NVIC_IPR7 0x00000000 0xed00 Read the CPU ID Base Register to determine: the ID number of the processor core, the version number of the processor core, the implementation details of the processor core. read-only [31:24] Implementor code: 0x41 = ARM IMPLEMENTER read-only [23:20] Major revision number n in the rnpm revision status:\n 0x0 = Revision 0. VARIANT read-only [19:16] Constant that defines the architecture of the processor:\n 0xC = ARMv6-M architecture. ARCHITECTURE read-only [15:4] Number of processor within family: 0xC60 = Cortex-M0+ PARTNO read-only [3:0] Minor revision number m in the rnpm revision status:\n 0x1 = Patch 1. REVISION CPUID 0x410cc601 0xed04 Use the Interrupt Control State Register to set a pending Non-Maskable Interrupt (NMI), set or clear a pending PendSV, set or clear a pending SysTick, check for pending exceptions, check the vector number of the highest priority pended exception, check the vector number of the active exception. read-write [31:31] Setting this bit will activate an NMI. Since NMI is the highest priority exception, it will activate as soon as it is registered.\n NMI set-pending bit.\n Write:\n 0 = No effect.\n 1 = Changes NMI exception state to pending.\n Read:\n 0 = NMI exception is not pending.\n 1 = NMI exception is pending.\n Because NMI is the highest-priority exception, normally the processor enters the NMI\n exception handler as soon as it detects a write of 1 to this bit. Entering the handler then clears\n this bit to 0. This means a read of this bit by the NMI exception handler returns 1 only if the\n NMI signal is reasserted while the processor is executing that handler. NMIPENDSET read-write [28:28] PendSV set-pending bit.\n Write:\n 0 = No effect.\n 1 = Changes PendSV exception state to pending.\n Read:\n 0 = PendSV exception is not pending.\n 1 = PendSV exception is pending.\n Writing 1 to this bit is the only way to set the PendSV exception state to pending. PENDSVSET read-write [27:27] PendSV clear-pending bit.\n Write:\n 0 = No effect.\n 1 = Removes the pending state from the PendSV exception. PENDSVCLR read-write [26:26] SysTick exception set-pending bit.\n Write:\n 0 = No effect.\n 1 = Changes SysTick exception state to pending.\n Read:\n 0 = SysTick exception is not pending.\n 1 = SysTick exception is pending. PENDSTSET read-write [25:25] SysTick exception clear-pending bit.\n Write:\n 0 = No effect.\n 1 = Removes the pending state from the SysTick exception.\n This bit is WO. On a register read its value is Unknown. PENDSTCLR read-only [23:23] The system can only access this bit when the core is halted. It indicates that a pending interrupt is to be taken in the next running cycle. If C_MASKINTS is clear in the Debug Halting Control and Status Register, the interrupt is serviced. ISRPREEMPT read-only [22:22] External interrupt pending flag ISRPENDING read-only [20:12] Indicates the exception number for the highest priority pending exception: 0 = no pending exceptions. Non zero = The pending state includes the effect of memory-mapped enable and mask registers. It does not include the PRIMASK special-purpose register qualifier. VECTPENDING read-only [8:0] Active exception number field. Reset clears the VECTACTIVE field. VECTACTIVE ICSR 0x00000000 0xed08 The VTOR holds the vector table offset address. read-write [31:8] Bits [31:8] of the indicate the vector table offset address. TBLOFF VTOR 0x00000000 0xed0c 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. read-write [31:16] Register key:\n Reads as Unknown\n On writes, write 0x05FA to VECTKEY, otherwise the write is ignored. VECTKEY read-only [15:15] Data endianness implemented:\n 0 = Little-endian. ENDIANESS read-write [2:2] Writing 1 to this bit causes the SYSRESETREQ signal to the outer system to be asserted to request a reset. The intention is to force a large system reset of all major components except for debug. The C_HALT bit in the DHCSR is cleared as a result of the system reset requested. The debugger does not lose contact with the device. SYSRESETREQ read-write [1:1] Clears all active state information for fixed and configurable exceptions. This bit: is self-clearing, can only be set by the DAP when the core is halted. When set: clears all active exception status of the processor, forces a return to Thread mode, forces an IPSR of 0. A debugger must re-initialize the stack. VECTCLRACTIVE AIRCR 0x00000000 0xed10 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. read-write [4:4] Send Event on Pending bit:\n 0 = Only enabled interrupts or events can wakeup the processor, disabled interrupts are excluded.\n 1 = Enabled events and all interrupts, including disabled interrupts, can wakeup the processor.\n When an event or interrupt becomes pending, the event signal wakes up the processor from WFE. If the\n processor is not waiting for an event, the event is registered and affects the next WFE.\n The processor also wakes up on execution of an SEV instruction or an external event. SEVONPEND read-write [2:2] Controls whether the processor uses sleep or deep sleep as its low power mode:\n 0 = Sleep.\n 1 = Deep sleep. SLEEPDEEP read-write [1:1] Indicates sleep-on-exit when returning from Handler mode to Thread mode:\n 0 = Do not sleep when returning to Thread mode.\n 1 = Enter sleep, or deep sleep, on return from an ISR to Thread mode.\n Setting this bit to 1 enables an interrupt driven application to avoid returning to an empty main application. SLEEPONEXIT SCR 0x00000000 0xed14 The Configuration and Control Register permanently enables stack alignment and causes unaligned accesses to result in a Hard Fault. read-only [9:9] Always reads as one, indicates 8-byte stack alignment on exception entry. On exception entry, the processor uses bit[9] of the stacked PSR to indicate the stack alignment. On return from the exception it uses this stacked bit to restore the correct stack alignment. STKALIGN read-only [3:3] Always reads as one, indicates that all unaligned accesses generate a HardFault. UNALIGN_TRP CCR 0x00000000 0xed1c System handlers are a special class of exception handler that can have their priority set to any of the priority levels. Use the System Handler Priority Register 2 to set the priority of SVCall. read-write [31:30] Priority of system handler 11, SVCall PRI_11 SHPR2 0x00000000 0xed20 System handlers are a special class of exception handler that can have their priority set to any of the priority levels. Use the System Handler Priority Register 3 to set the priority of PendSV and SysTick. read-write [31:30] Priority of system handler 15, SysTick PRI_15 read-write [23:22] Priority of system handler 14, PendSV PRI_14 SHPR3 0x00000000 0xed24 Use the System Handler Control and State Register to determine or clear the pending status of SVCall. read-write [15:15] Reads as 1 if SVCall is Pending. Write 1 to set pending SVCall, write 0 to clear pending SVCall. SVCALLPENDED SHCSR 0x00000000 0xed90 Read the MPU Type Register to determine if the processor implements an MPU, and how many regions the MPU supports. read-only [23:16] Instruction region. Reads as zero as ARMv6-M only supports a unified MPU. IREGION read-only [15:8] Number of regions supported by the MPU. DREGION read-only [0:0] Indicates support for separate instruction and data address maps. Reads as 0 as ARMv6-M only supports a unified MPU. SEPARATE MPU_TYPE 0x00000800 0xed94 Use the MPU Control Register to enable and disable the MPU, and to control whether the default memory map is enabled as a background region for privileged accesses, and whether the MPU is enabled for HardFaults and NMIs. read-write [2:2] Controls whether the default memory map is enabled as a background region for privileged accesses. This bit is ignored when ENABLE is clear.\n 0 = If the MPU is enabled, disables use of the default memory map. Any memory access to a location not\n covered by any enabled region causes a fault.\n 1 = If the MPU is enabled, enables use of the default memory map as a background region for privileged software accesses.\n When enabled, the background region acts as if it is region number -1. Any region that is defined and enabled has priority over this default map. PRIVDEFENA read-write [1:1] Controls the use of the MPU for HardFaults and NMIs. Setting this bit when ENABLE is clear results in UNPREDICTABLE behaviour.\n When the MPU is enabled:\n 0 = MPU is disabled during HardFault and NMI handlers, regardless of the value of the ENABLE bit.\n 1 = the MPU is enabled during HardFault and NMI handlers. HFNMIENA read-write [0:0] Enables the MPU. If the MPU is disabled, privileged and unprivileged accesses use the default memory map.\n 0 = MPU disabled.\n 1 = MPU enabled. ENABLE MPU_CTRL 0x00000000 0xed98 Use the MPU Region Number Register to select the region currently accessed by MPU_RBAR and MPU_RASR. read-write [3:0] Indicates the MPU region referenced by the MPU_RBAR and MPU_RASR registers.\n The MPU supports 8 memory regions, so the permitted values of this field are 0-7. REGION MPU_RNR 0x00000000 0xed9c Read the MPU Region Base Address Register to determine the base address of the region identified by MPU_RNR. Write to update the base address of said region or that of a specified region, with whose number MPU_RNR will also be updated. read-write [31:8] Base address of the region. ADDR read-write [4:4] On writes, indicates whether the write must update the base address of the region identified by the REGION field, updating the MPU_RNR to indicate this new region.\n Write:\n 0 = MPU_RNR not changed, and the processor:\n Updates the base address for the region specified in the MPU_RNR.\n Ignores the value of the REGION field.\n 1 = The processor:\n Updates the value of the MPU_RNR to the value of the REGION field.\n Updates the base address for the region specified in the REGION field.\n Always reads as zero. VALID read-write [3:0] On writes, specifies the number of the region whose base address to update provided VALID is set written as 1. On reads, returns bits [3:0] of MPU_RNR. REGION MPU_RBAR 0x00000000 0xeda0 Use the MPU Region Attribute and Size Register to define the size, access behaviour and memory type of the region identified by MPU_RNR, and enable that region. read-write [31:16] The MPU Region Attribute field. Use to define the region attribute control.\n 28 = XN: Instruction access disable bit:\n 0 = Instruction fetches enabled.\n 1 = Instruction fetches disabled.\n 26:24 = AP: Access permission field\n 18 = S: Shareable bit\n 17 = C: Cacheable bit\n 16 = B: Bufferable bit ATTRS read-write [15:8] Subregion Disable. For regions of 256 bytes or larger, each bit of this field controls whether one of the eight equal subregions is enabled. SRD read-write [5:1] Indicates the region size. Region size in bytes = 2^(SIZE+1). The minimum permitted value is 7 (b00111) = 256Bytes SIZE read-write [0:0] Enables the region. ENABLE MPU_RASR 0x00000000 32 1