Introduction
- What this Book is About
- The SDK functions
- The Examples
- Whom this Book is For
- Acknowledgments
- Updates
- How to Send Feedback
The RP2040 Architecture
- Processor Subsystem
- Bus Fabric
- Address Map
- Clock Generation
- Memory
- PIO
- Peripherals
- IOs
- Future RP Microcontrollers?
The Cortex-M0+ Processor Cores
- Unprivileged and Privileged Execution
- Debugger Support
- Memory Protection Unit (MPU)
- Instruction Set
- SIO
- Systick Timer
- Selected SDK Functions
- Example
Reset, Interrupts and Power Control
- Reset
- Interrupts
- Power Control
Memory, Addresses and DMA
- Memory in the RP2040
- Addresses
- Direct Memory Access (DMA)
- DMA Usage Examples
Clock Generation, Timer, Watchdog and RTC
- Clock Generation
- Timer
- Watchdog
- RTC
GPIO, Pad and PWM
- GPIO Overview
- Function Select
- PADs
- Digital Input and Output
- GPIO Interrupts
- PWM
The Programmable I/O (PIO)
- The PIO State Machines
- The FIFOs
- Programmer’s Model
- PIO Configuration
- Interrupt (IRQ) Flags
- The Instructions
- Flow Control
- Coding, Compiling and Running PIO Programs
- PIO Assembly Language
- Selected SDK Functions
- Examples
Asynchronous Serial Communication: the UARTs
- Framing
- FIFOs
- Control Signals and Hardware Flow Control
- Baud Rate Generation
- UART Status and Interrupts
- Pins Options
- Selected SDK Functions
- Using the UART Registers
- Example
Communication Using I2C
- I2C Basics
- I2C in the RP2040
- Selected SDK Functions
- Slave Library
- Examples
Communication Using SPI
- SPI Basics
- SPI in the RP2040
- Selected SDK Functions
- Example
Analog Input: the ADC
- Overview
- Modes of Operation
- Accuracy of the ADC
- Temperature Sensor
- Selected SDK Functions
- Example
A Brief Introduction to the USB Controller
- USB Basics
- Hardware
- Device Classes
- TinyUSB
- Using the USB
- The HID Device Class
- Example - Emulating a PC Keyboard
- Example - Connecting a PC Keyboard to the Pi Pico
- Example - Serial USB Adapter
Conclusion
Appendix A - CMake Files for RP2040 Programs
Appendix B - Using stdio
- Selected pico_stdio Functions
- Selected pico_stdio_uart Functions
- Selected pico_stdio_usb Functions
- The printf Function
Appendix C - Debugging Using the SWD Port
- Picoprobe Connections
- Software Installation
- Debugging from the Command Line
- Debugging from inside Visual Code
Appendix D - Accessing the RP2040 Registers
- Registers Addresses and Basic Access
- Special Write Operations
- Using the SDK Functions for GPIO Output