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
2.15.1. Overview
The Crystal Oscillator (XOSC) uses an external crystal to produce an accurate reference clock. The RP2040 supports 1-
15MHz crystals and the reference design uses a 12MHz crystal. The reference clock is distributed to the PLLs, which can
be used to multiply the XOSC frequency (for example, to provide a 48MHz USB clock and a 133MHz system clock). The
XOSC clock is also a clock source for the clock generators, so can be used directly if required. It is also possible to drive
an external clock directly into the XIN pin, and disable the oscillator circuit.
XI
XO
E[1..2]
XCLK
EN
2
OSC
Clock
Figure 31. XOSC
overview
2.15.2. Usage
The XOSC is disabled on boot and RP2040 boots using the Ring Oscillator (ROSC). To start the XOSC, the programmer
must set the enable bit then wait for the output clock to be stable. The XOSC is not immediately usable because it takes
time for the oscillations to build to sufficient amplitude. This time will be dependent on the chosen crystal but will be of
the order of a few milliseconds. The 12MHz crystal on the RP2040 reference design requires 1ms. On initial chip start-up
the programmer can time this in software or configure the start-up delay which will set a flag when the XOSC clock is
ready to use. If a software timer is used then the programmer must allow for the variation in frequency of the ROSC which
is clocking the cores on power-up. If the DORMANT feature is used then the start-up delay must be configured.
2.15.3. Startup Delay
There is a startup delay register which specifies how many clock cycles must be seen from the crystal before it can be
used. This is specified in multiples of 256. The Pico SDK xosc_init function sets this value. The 1ms default is sufficient
for the RP2040 reference design.
The desired value can be calculated by:
So with a 12MHz crystal and a 1ms wait time, the calculation is:
NOTE
the value is rounded up to the nearest integer so the wait time will be just over 1ms
2.15.4. DORMANT mode
In DORMANT mode all of the on-chip clocks can be stopped to save power. This is particularly useful in battery-powered
applications. The RP2040 is woken from DORMANT mode by an interrupt either from an external event such as an edge
on a GPIO pin or from the on-chip RTC. If the RTC is being used to trigger wake-up then it must be clocked from an
external source. To enter DORMANT mode the programmer must first switch all internal clocks to be driven from XOSC or
ROSC then stop the PLLs. If XOSC is chosen then the frequency will be more precise but the restart time is longer
(aaproximately 1ms on the reference design). If ROSC is chosen then the frequency is less precise but the start-up time is
very short (approximately 1 usec). Then a specific 32-bit code must be written to the dormant register in the XOSC or
RP2040 Datasheet
2.15. Crystal Oscillator (XOSC) 192