Peripherals#
RP2040Sharp emulates the RP2040 peripheral set with enough fidelity to boot real firmware.
Most peripherals are accessed through RP2040Machine (e.g. machine.Uart0,
machine.Sio, machine.Dma) and observed in tests via TestKit probes.
Coverage#
Peripheral |
Status |
Notes |
|---|---|---|
GPIO / SIO |
✅ |
Per-pin API, spinlocks, interpolators, hardware divider |
UART0 / UART1 |
✅ |
FIFO, baud config, DREQ for DMA |
SPI0 / SPI1 |
✅ |
Master mode, FIFO, DREQ |
I2C0 / I2C1 |
✅ |
Master + slave-mode simulation |
ADC |
✅ |
5 channels incl. temperature sensor, FIFO |
PWM |
✅ |
All 8 slices |
PIO0 / PIO1 |
✅ |
4 state machines each, GPIO integration |
DMA |
✅ |
All channels, DREQ sources |
Timer / Watchdog / RTC |
✅ |
Alarms, microsecond counter |
USB |
✅ |
CDC-ACM host (MicroPython REPL) |
Clocks / Resets |
✅ |
Clock mux, per-peripheral reset |
XOSC / ROSC / PLL / PSM / VREG |
🟡 |
Register stubs (report stable/locked; no frequency model) |
SSI flash (XIP hardware path) |
⛔ |
Flash program/erase via C# hooks instead |
Note
Per-peripheral reference pages are being filled in. For now, the API surface is documented via XML-doc comments in the source; see Reference.