1.. _sparkfun_pro_micro_rp2040:
2
3SparkFun Pro Micro RP2040
4#########################
5
6Overview
7********
8
9The SparkFun Pro Micro RP2040 is a small, low-cost, versatile board from
10SparkFun. It is equipped with an RP2040 SoC, an on-board WS2812 addressable
11LED, a USB connector, and a Qwiic connector. The USB bootloader allows it
12to be flashed without any adapter, in a drag-and-drop manner.
13
14Hardware
15********
16- Dual core Arm Cortex-M0+ processor running up to 133MHz
17- 264KB on-chip SRAM
18- 16MB on-board QSPI flash with XIP capabilities
19- 18 GPIO pins
20- 4 Analog inputs
21- 1 UART peripherals
22- 1 SPI controllers
23- 2 I2C controllers (one via Qwiic connector)
24- 16 PWM channels
25- USB 1.1 controller (host/device)
26- 8 Programmable I/O (PIO) for custom peripherals
27- On-board RGB LED
28- 1 Watchdog timer peripheral
29
30
31.. figure:: img/sparkfun_pro_micro_rp2040.jpg
32     :align: center
33     :alt: SparkFun Pro Micro RP2040
34
35     SparkFun Pro Micro RP2040 (Image courtesy of SparkFun)
36
37Supported Features
38==================
39
40The sparkfun_pro_micro_rp2040 board configuration supports the following
41hardware features:
42
43.. list-table::
44   :header-rows: 1
45
46   * - Peripheral
47     - Kconfig option
48     - Devicetree compatible
49   * - NVIC
50     - N/A
51     - :dtcompatible:`arm,v6m-nvic`
52   * - UART
53     - :kconfig:option:`CONFIG_SERIAL`
54     - :dtcompatible:`raspberrypi,pico-uart`
55   * - GPIO
56     - :kconfig:option:`CONFIG_GPIO`
57     - :dtcompatible:`raspberrypi,pico-gpio`
58   * - ADC
59     - :kconfig:option:`CONFIG_ADC`
60     - :dtcompatible:`raspberrypi,pico-adc`
61   * - I2C
62     - :kconfig:option:`CONFIG_I2C`
63     - :dtcompatible:`snps,designware-i2c`
64   * - SPI
65     - :kconfig:option:`CONFIG_SPI`
66     - :dtcompatible:`raspberrypi,pico-spi`
67   * - USB Device
68     - :kconfig:option:`CONFIG_USB_DEVICE_STACK`
69     - :dtcompatible:`raspberrypi,pico-usbd`
70   * - HWINFO
71     - :kconfig:option:`CONFIG_HWINFO`
72     - N/A
73   * - Watchdog Timer (WDT)
74     - :kconfig:option:`CONFIG_WATCHDOG`
75     - :dtcompatible:`raspberrypi,pico-watchdog`
76   * - PWM
77     - :kconfig:option:`CONFIG_PWM`
78     - :dtcompatible:`raspberrypi,pico-pwm`
79   * - Flash
80     - :kconfig:option:`CONFIG_FLASH`
81     - :dtcompatible:`raspberrypi,pico-flash`
82   * - Clock controller
83     - :kconfig:option:`CONFIG_CLOCK_CONTROL`
84     - :dtcompatible:`raspberrypi,pico-clock-controller`
85   * - UART (PIO)
86     - :kconfig:option:`CONFIG_SERIAL`
87     - :dtcompatible:`raspberrypi,pico-uart-pio`
88
89Pin Mapping
90===========
91
92The peripherals of the RP2040 SoC can be routed to various pins on the board.
93The configuration of these routes can be modified through DTS. Please refer to
94the datasheet to see the possible routings for each peripheral.
95
96Default Zephyr Peripheral Mapping:
97----------------------------------
98
99.. rst-class:: rst-columns
100
101- UART0_TX : P0
102- UART0_RX : P1
103- I2C1_SDA : P2
104- I2C1_SCL : P3
105- SPI0_RX : P20
106- SPI0_SCK : P18
107- SPI0_TX : P19
108
109Programming and Debugging
110*************************
111
112Flashing
113========
114
115Using UF2
116---------
117
118The Pro Micro board does make the SWD pins available on pads on the
119underside of the board. You can solder to these pins, and use a JTag
120debugger. You can also flash the SparkFun ProMicro RP2040 with a UF2 file.
121By default, building an app for this board will generate a
122:file:`build/zephyr/zephyr.uf2` file. If the Pro Micro RP2040 is powered on with
123the ``BOOTSEL`` button pressed, it will appear on the host as a mass storage
124device. The UF2 file should be copied to the device, which will
125flash the Pro Micro RP2040.
126
127.. target-notes::
128
129.. _Getting Started with Raspberry Pi Pico:
130  https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
131
132.. _Graphical Datasheet:
133  https://cdn.sparkfun.com/assets/e/2/7/6/b/ProMicroRP2040_Graphical_Datasheet.pdf
134