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.4.1. Features
- 2.4.2. Functional Description
- 2.4.3. Programmer’s model
- 2.4.4. System control
- 2.4.5. NVIC
- 2.4.6. MPU
- 2.4.7. Debug
- 2.4.8. List of Registers
- 2.5. Memory
- 2.6. Boot Sequence
- 2.7. Bootrom
- 2.7.1. Bootrom Source
- 2.7.2. Processor Controlled Boot Sequence
- 2.7.3. Bootrom Contents
- 2.7.4. USB Mass Storage Interface
- 2.7.5. USB PICOBOOT Interface
- 2.8. Power Supplies
- 2.9. On-Chip Voltage Regulator
- 2.10. Power Control
- 2.11. Chip-Level Reset
- 2.12. Power-On State Machine
- 2.13. Subsystem Resets
- 2.14. Clocks
- 2.14.1. Overview
- 2.14.2. Clock sources
- 2.14.2.1. Ring Oscillator
- 2.14.2.1.1. Mitigating ROSC frequency variation due to process
- 2.14.2.1.2. Mitigating ROSC frequency variation due to voltage
- 2.14.2.1.3. Mitigating ROSC frequency variation due to temperature
- 2.14.2.1.4. Automatic mitigation of ROSC frequency variation due to PVT
- 2.14.2.1.5. Automatic overclocking using the ROSC
- 2.14.2.2. Crystal Oscillator
- 2.14.2.3. External Clocks
- 2.14.2.4. Relaxation Oscillators
- 2.14.2.5. PLLs
- 2.14.2.1. Ring Oscillator
- 2.14.3. Clock Generators
- 2.14.4. Frequency Counter
- 2.14.5. Resus
- 2.14.6. Programmer’s Model
- 2.14.7. List of registers
- 2.15. Crystal Oscillator (XOSC)
- 2.16. Ring Oscillator (ROSC)
- 2.17. PLL
- 2.18. GPIO
- 2.19. Sysinfo
- 2.20. Syscfg
- Chapter 3. PIO
- Chapter 4. Peripherals
- 4.1. USB
- 4.2. DMA
- 4.3. UART
- 4.4. I2C
- 4.4.1. Features
- 4.4.2. IP Configuration
- 4.4.3. I2C Overview
- 4.4.4. I2C Terminology
- 4.4.5. I2C Behaviour
- 4.4.6. I2C Protocols
- 4.4.7. Tx FIFO Management and START, STOP and RESTART Generation
- 4.4.8. Multiple Master Arbitration
- 4.4.9. Clock Synchronization
- 4.4.10. Operation Modes
- 4.4.11. Spike Suppression
- 4.4.12. Fast Mode Plus Operation
- 4.4.13. Bus Clear Feature
- 4.4.14. IC_CLK Frequency Configuration
- 4.4.15. DMA Controller Interface
- 4.4.16. List of Registers
- 4.5. SPI
- 4.5.1. Overview
- 4.5.2. Functional Description
- 4.5.3. Operation
- 4.5.3.1. Interface reset
- 4.5.3.2. Configuring the SSP
- 4.5.3.3. Enable PrimeCell SSP operation
- 4.5.3.4. Clock ratios
- 4.5.3.5. Programming the SSPCR0 Control Register
- 4.5.3.6. Programming the SSPCR1 Control Register
- 4.5.3.7. Frame format
- 4.5.3.8. Texas Instruments synchronous serial frame format
- 4.5.3.9. Motorola SPI frame format
- 4.5.3.10. Motorola SPI Format with SPO=0, SPH=0
- 4.5.3.11. Motorola SPI Format with SPO=0, SPH=1
- 4.5.3.12. Motorola SPI Format with SPO=1, SPH=0
- 4.5.3.13. Motorola SPI Format with SPO=1, SPH=1
- 4.5.3.14. National Semiconductor Microwire frame format
- 4.5.3.15. Examples of master and slave configurations
- 4.5.3.16. PrimeCell DMA interface
- 4.5.4. List of Registers
- 4.6. PWM
- 4.7. Timer
- 4.8. Watchdog
- 4.9. RTC
- 4.10. ADC and Temperature Sensor
- 4.11. SSI
- 4.11.1. Overview
- 4.11.2. Features
- 4.11.3. IP Modifications
- 4.11.4. Clock Ratios
- 4.11.5. Transmit and Receive FIFO Buffers
- 4.11.6. 32-Bit Frame Size Support
- 4.11.7. SSI Interrupts
- 4.11.8. Transfer Modes
- 4.11.9. Operation Modes
- 4.11.10. Partner Connection Interfaces
- 4.11.11. DMA Controller Interface
- 4.11.12. APB Interface
- 4.11.13. List of Registers
- Chapter 5. Electrical and Mechanical
- Appendix A: Register Field Types
- Appendix B: Errata
•
Ring Oscillator is started. rst_done is asserted once the ripple counter has seen a sufficient number of clock edges to
indicate the ring oscillator is stable
•
Crystal Oscillator reset is deasserted. The crystal oscillator is not started at this point, so rst_done is asserted
instantly.
•
clk_ref and clk_sys clock generators are taken out of reset. In the initial configuration clk_ref is running from the ring
oscillator with no divider. clk_sys is running from clk_ref. These clocks are needed for the rest of the sequence to
progress.
The rest of the sequence is fairly simple, with the following coming out of reset in order one by one:
•
Reset Controller - used to reset all non-boot peripherals
•
Chip-Level Reset and Voltage Regulator registers - used by the bootrom to check the boot state of the chip. In
particular, the PSM_RESTART_FLAG flag in the CHIP_RESET register can be set via SWD to indicate to the boot code that
there is bad code in flash and it should stop executing. The reset state of the CHIP_RESET register is determined by
the Chip-Level Reset subsystem and is not affected by reset coming from the power-on state machine
•
XIP (Execute-In-Place) - used by the bootrom to execute code from an external SPI flash
•
ROM and SRAM - Boot code is executed from the ROM. SRAM is used by processors and Bus Fabric.
•
Bus Fabric - Allows the processors to communicate with peripherals
•
Processor complex - Finally the processors can start running
The final thing to come out of reset is the processor complex. This includes both proc0 and proc1. Both processors will
start executing the bootcode from ROM. One of the first things the bootrom does is read the core id. At this point, proc1
will go to sleep leaving proc0 to continue with the bootrom execution. The processor complex has its own reset control
and various low-power modes which is why both the proc0 and proc1 resets come off at start of day, despite proc0 only
being needed for the bootrom.
2.12.3. Register Control
The power-on state machine is a fully automated piece of hardware. It requires no input from the user to work. There are
register controls that can be used to override and see the status of the power-on state machine for debugging. For
example, if a peripheral was stuck in reset and never asserted its rst_done signal the resets for all peripherals after it could
still be deasserted using the FRCE_ON register. There is also a WDSEL register which is used to decide what should be reset by
a Watchdog reset.
2.12.4. Interaction with Watchdog
The power-on state machine can be restarted from a software-programmable position if the Watchdog fires. For example,
in the case the processor is stuck in an infinite loop, or the programmer has somehow misconfigured the chip. It is
important to note that if a peripheral in the power-on state machine has the WDSEL bit set, every peripheral after it in the
power-on sequence will also be reset because the rst_done of the selected peripheral will be deasserted, asserting rst_n
for the remaining peripherals.
2.12.5. List of registers
Table 190. List of PSM
registers
Offset Name Info
0x0 FRCE_ON Force block out of reset (i.e. power it on)
0x4 FRCE_OFF Force into reset (i.e. power it off)
0x8 WDSEL Set to 1 if the watchdog should reset this
0xc DONE Is the subsystem ready?
RP2040 Datasheet
2.12. Power-On State Machine 153