Datasheet
Table Of Contents
- RP2040 Datasheet
- Colophon
- Chapter 1. Introduction
- Chapter 2. System Description
- 2.1. Bus Fabric
- 2.2. Address Map
- 2.3. Processor subsystem
- 2.4. Cortex-M0+
- 2.5. DMA
- 2.6. Memory
- 2.7. Boot Sequence
- 2.8. Bootrom
- 2.9. Power Supplies
- 2.10. Core Supply Regulator
- 2.11. Power Control
- 2.12. Chip-Level Reset
- 2.13. Power-On State Machine
- 2.14. Subsystem Resets
- 2.15. Clocks
- 2.16. Crystal Oscillator (XOSC)
- 2.17. Ring Oscillator (ROSC)
- 2.18. PLL
- 2.19. GPIO
- 2.20. Sysinfo
- 2.21. Syscfg
- 2.22. TBMAN
- Chapter 3. PIO
- Chapter 4. Peripherals
- 4.1. USB
- 4.2. UART
- 4.3. I2C
- 4.3.1. Features
- 4.3.2. IP Configuration
- 4.3.3. I2C Overview
- 4.3.4. I2C Terminology
- 4.3.5. I2C Behaviour
- 4.3.6. I2C Protocols
- 4.3.7. Tx FIFO Management and START, STOP and RESTART Generation
- 4.3.8. Multiple Master Arbitration
- 4.3.9. Clock Synchronization
- 4.3.10. Operation Modes
- 4.3.11. Spike Suppression
- 4.3.12. Fast Mode Plus Operation
- 4.3.13. Bus Clear Feature
- 4.3.14. IC_CLK Frequency Configuration
- 4.3.15. DMA Controller Interface
- 4.3.16. Operation of Interrupt Registers
- 4.3.17. List of Registers
- 4.4. SPI
- 4.5. PWM
- 4.6. Timer
- 4.7. Watchdog
- 4.8. RTC
- 4.9. ADC and Temperature Sensor
- 4.10. SSI
- 4.10.1. Overview
- 4.10.2. Features
- 4.10.3. IP Modifications
- 4.10.4. Clock Ratios
- 4.10.5. Transmit and Receive FIFO Buffers
- 4.10.6. 32-Bit Frame Size Support
- 4.10.7. SSI Interrupts
- 4.10.8. Transfer Modes
- 4.10.9. Operation Modes
- 4.10.10. Partner Connection Interfaces
- 4.10.11. DMA Controller Interface
- 4.10.12. APB Interface
- 4.10.13. List of Registers
- Chapter 5. Electrical and Mechanical
- Appendix A: Register Field Types
- Appendix B: Errata
- Appendix C: Documentation Release History
Figure 14. Flash
execute-in-place (XIP)
subsystem. System
accesses via the main
AHB-Lite slave are
decoded to determine
if they are XIP
accesses, direct
accesses to the SSI
e.g. for configuration,
or accesses to various
other hardware and
control registers in the
XIP subsystem. XIP
accesses are first
looked up in the
cache, to accelerate
accesses to recently-
used data. If the data
is not found in the
cache, an external
serial access is
generated via the SSI,
and the resulting data
is stored in the cache
and forwarded on to
the system bus.
NOTE
The serial flash interface is configured by the flash second stage when using the SDK to run at an integer divider of
the system clock. All the included second stage boot implementations support a PICO_FLASH_SPI_CLKDIV setting (e.g.
defaulted to 4 in https://github.com/raspberrypi/pico-sdk/tree/master/src/rp2_common/boot_stage2/
boot2_w25q080.S to make the default interface speed 125/4 = 31.25 MHz). This divider can be overridden by
specifying PICO_FLASH_SPI_CLKDIV in the particular board config header used with the SDK.
2.6.3.1. XIP Cache
The cache is 16 kB, two way set-associative, 1 cycle hit. It is internal to the XIP subsystem, and only affects accesses to
XIP flash, so software does not have to consider cache coherence, unless performing flash programming operations. It
caches reads from a 24-bit flash address space, which is mirrored multiple times in the RP2040 address space, each
alias having different caching behaviour. The eight MSBs of the system address are used for segment decode, leaving
24 bits for flash addressing, so the maximum supported flash size (for XIP operation) is 16MB. The available mirrors
are:
•
0x10… XIP access, cacheable, allocating - Normal cache operation
•
0x11… XIP access, cacheable, non-allocating - Check for hit, don’t update cache on miss
•
0x12… XIP access, non-cacheable, allocating - Don’t check for hit, always update cache
•
0x13… XIP access, non-cacheable, non-allocating - Bypass cache completely
•
0x15… Use XIP cache as SRAM bank, mirrored across entire segment
If the cache is disabled, via the CTRL.EN register bit, then all four of the XIP aliases (0x10 to 0x13) will bypass the cache,
and access the flash directly. This has a significant impact on XIP code execution performance.
Access to the 0x15… segment produces a bus error unless the cache is disabled by clearing CTRL.EN. Once the cache is
disabled, this region behaves as an additional 16 kB SRAM bank. Reads and writes are one cycle, but there is a wait
state on consecutive write-read sequences, i.e. there is no write forwarding buffer.
RP2040 Datasheet
2.6. Memory 150