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
◦
The debug host (which initiated the rescue) will provide further instruction.
•
If watchdog scratch registers set to indicate pre-loaded code exists in SRAM, jump to that code
•
Check if SPI CS pin is tied low ("bootrom button"), and skip flash boot if so.
•
Set up IO muxing, pad controls on QSPI pins, and initialise Synopsys SSI for standard SPI mode
•
Issue XIP exit sequence, in case flash is still in an XIP mode and has not been power-cycled
•
Copy 256 bytes from SPI to internal SRAM (SRAM5) and check for valid CRC32 checksum
•
If checksum passes, assume what we have loaded is a valid flash second stage
•
Start executing the loaded code from SRAM (SRAM5)
•
If no valid image found in SPI after 0.5 seconds of attempting to boot, drop to USB device boot
•
USB device boot: appear as a USB Mass Storage Device
◦
Can program the SPI flash, or load directly into SRAM and run, by dragging and dropping an image in UF2
format.
◦
Also supports an extended PICOBOOT interface
2.8.1.1. Watchdog Boot
Watchdog boot allows users to install their own boot handler, and divert control away from the main boot sequence on
non-POR/BOR resets. It also simplifies running code over the JTAG test interface. It recognises the following values
written to the watchdog’s upper scratch registers:
•
Scratch 4: magic number 0xb007c0d3
•
Scratch 5: Entry point XORed with magic -0xb007c0d3 (0x4ff83f2d)
•
Scratch 6: Stack pointer
•
Scratch 7: Entry point
If either of the magic numbers mismatch, watchdog boot does not take place. If the numbers match, the Bootrom
zeroes scratch 4 before transferring control, so that the behaviour does not persist over subsequent reboots.
2.8.1.2. Flash Boot Sequence
One of the main challenges of a warm flash boot is forcing the external flash from XIP mode to a mode where it will
accept standard SPI commands. There is no standard method to discontinue XIP on an unknown flash. The Bootrom
provides a best-effort sequence with broad compatibility, which is as follows:
•
CSn=1, IO[3:0]=4’b0000 (via pull downs to avoid contention), issue x32 clocks
•
CSn=0, IO[3:0]=4’b1111 (via pull ups to avoid contention), issue x32 clocks
•
CSn=1
•
CSn=0, MOSI=1’b1 (driven low-Z, all other IOs Hi-Z), issue x16 clocks
This is designed to miss the XIP continuation codes on Cypress, Micron and Winbond parts. If the device is already in
SPI mode, it interprets this sequence as two FFh NOP instructions, which should be ignored.
As this is best effort only, there may be some devices which obstinately remain in XIP mode. There are then two
options:
•
Use a less efficient XIP mode where each transfer has an SPI instruction prefix, so the flash device remains
communicative in SPI mode.
•
Boot code installs a compatible XIP exit sequence in SRAM, and configures the watchdog such that a warm boot
will jump straight into this sequence, foregoing our canned sequence.
RP2040 Datasheet
2.8. Bootrom 158