Is RP2040 5V tolerant?
No. RP2040 microcontrollers use 3.3V for GPIO.
I've accidentally connected +5V to my Raspberry Pi Pico or other RP2040-based microcontroller. Is the pin dead ?
It depends; often RP2040 will survive, but it is not recommended, and can reduce the life of the microcontroller.
Can I buy the RP2040 chip?
Not yet; we hope to make the RP2040 broadly available in the second quarter of 2021.
Can I solder it myself?
For the RP2040 itself, yes; it’s not easy, and you will need magnification of some sort and a very good soldering iron to go with a very steady hand, but it can be hand soldered. The Raspberry Pi Pico board on the other hand has been designed so that it can be easily soldered down to another PCB, it's why it has castellated contacts on each edge.
What OS does it run?
Like other microcontrollers, it doesn't run an OS by default, but we supply a SDK which provides a rich library of functions for using the hardware/features of the chip, along with higher-level functionality often found in an OS. You can use this to write “bare metal” C/C++ applications easily, or you can use MicroPython, which is even simpler for beginners.
What is the maximum flash size?
16 MiB of flash (2^24 bytes)
Is it open-source?
The Raspberry Pi Pico board design files are open-source, along with all the provided software, examples, and documentation. The internal design of the RP2040 microcontroller itself is not open-source.
Should I buy a Raspberry Pi Pico or a Raspberry Pi Zero?
These are two very different devices, a microcontroller and a microcomputer, intended for different purposes. Pico is a great device for dedicating to a very specific task, whereas Zero is a multipurpose device. Raspberry Pi Zero has HDMI out, a camera interface, etc; Raspberry Pi Pico does not. However, Pico has an on-board ADC as well as other peripherals not present on Raspberry Pi Zero, and consumes considerably less power; it is therefore much more suited to embedded applications than Raspberry Pi Zero.
Can I overclock?
The maximum clk_sys clock speed is 133MHz at normal core voltage (1.1V ±10%), but it can be overclocked. However, this requires more power and a higher core voltage, and may affect the life expectancy of your device. No warranties are given when running outside of the limits specified in the datasheet.
Does it support Arduino/Blockly/other programming
No, but we do expect third parties to port their own development systems to RP2040/Pico over time. For launch, alongside the very comprehensive C/C++ SDK, there is an official port of MicroPython. Adafruit has also ported CircuitPython to RP2040.
What low-power modes are there?
There is no specific low-power mode, but you can do various things to reduce power consumption: slow the system clock, power down some of the memories, gate the clock to peripherals, reduce the core supply voltage, etc.
There are two specific modes for turning off parts of the device when not being used:
SLEEP mode is when processors are in wfi/wfe and DMA is inactive, so you can shut off most system clocks, including things like bus fabric.
DORMANT mode is when you shut down all oscillators, and so is lower power still, but then you have fewer options for waking.
I’m using VSCode. How do I set a breakpoint on the second core?
At the moment you need to use the command window in VSCode to set a gdb breakpoint.
GCC 10.2 is available. Why aren’t you using it by default?
Our development work has been using the more common versions of GCC as supplied with various distributions. We have checked builds using major gcc versions from 6.3.1 to 10.2, so all of those should work.
What is the maximum source impedance required for the ADC inputs to achieve the 9-bit resolution ?
We are currently working on characterising this, and will update the datasheet.
Where do I get technical support?
For help on the Pico C/C++ SDK and RP2040 you can use our forums. For all other things, for example MicroPython, CircuitPython or Arduino, please contact the appropriate vendors.
Adafruit’s launch blog, with references to CircuitPython, can be found here: https://blog.adafruit.com/2021/01/21/ra ... -of-boards
https://blog.arduino.cc/2021/01/20/welc ... ntrollers/
Can I run machine learning tools?
Yes. TensorFlow Lite for Microcontrollers has been ported to Raspberry Pi Pico by Google, and is available in our repos. It is an early version so there is lots of optimisation still to do.
I don't want to use C or Python, can I write assembler?
Of course; check out the SDK which has some library functions written in assembler.
The processor (Twin core M0+) implements the ARMv6-M Thumb instruction set, including a number of 32-bit instructions that use
Thumb-2 technology. The ARMv6-M instruction set comprises all of the 16-bit Thumb instructions from ARMv7-M excluding CBZ, CBNZ and IT and the 32-bit Thumb instructions BL, DMB, DSB, ISB, MRS and MSR.
Can I use an RTOS?
Yes, we will be working on porting an RTOS soon.
That MicroPython book looks cool, is there a downloadable version?
Yes!! https://hackspace.raspberrypi.org/books ... ython-pico
What is an UF2 file
It's a file format for flashing microcontrollers, developed by Microsoft. https://github.com/microsoft/uf2
It doesn't support my communications protocol, what can I do?
There are inbuilt HW blocks to support UART, SPI and I2C, but there is also a unique and very specialised HW block call the PIO which can be programmed to implement all sorts of different digital protocol, both input and output. For example you can program it to be a UART, (in fact, with 8 channels, it can implement another 4 TX/RX UARTS, or 8 RX or 8 TX's, or combinations thereof!), RS485, and almost any other protocol you can think of. See the databook for more information on the PIO, and pico-examples for some examples of the PIO in action.
Why use micro-USB instead of USB-C on the Raspberry Pi Pico board?
Cost! USB-C connectors are still more expensive than micro-USB, and when you are making millions of devices, even a few cents more per connector really adds up. We also believe that, especially in the educational arena, that micro-USB is still much more common than USB-C. If you must have it, RP2040 boards with USB-C are available from our partners .
Why is there no reset button? Constantly unplugging and plugging in is a pain!
Cost is the main reason, adding an extra button can make a big difference. But we also expect that if you are making a lot of changes during development, you will have set up the SWD (Single Wire Debug) system, which allows you to download code the board via the debugger. This means you don't need to power off or use the BOOTSEL button at all. There are other options as well.
Can I use my Raspberry Pi to develop for the Pico?
Of course. Although any model of Pi would be able to communicate with the Pico, we recommended more recent models for development, especially if using the VSCode IDE as that requires a strong CPU and at least 2GB of RAM. So the Pi4 and Pi400 are best when using an IDE, but if you are using the command line, the Raspberry Pi3 or even 2B should be OK. Compile times will be a bit longer though, and we do recommend a 16GB card to ensure you have enough space for all the code trees.
How do I completely clear the Flash on my Pico?
If you are moving between MicroPython and C programs, you might find you have problems with certain applications, and need to clear the Flash completely to start again. We provide a special uf2 program that can do this for you called nuke.uf2. It can be found here https://www.raspberrypi.org/documentati ... h_nuke.uf2 and the source code for it can be found here https://github.com/raspberrypi/pico-exa ... uke/nuke.c
How can I find out when SDK or similar releases happen?
Every now and then we will update the SDK or any of the other Pico repositories. You can easily be informed when this happens using github. Login in to you github account, and subscribe to the repro - Watch (top right) -> Custom -> Releases. You can also Star a repository if you like it!
What are GPIO 23,24,25 and 29 used for on the Pico board?
These GPIO's are used on the Pico board for the following purposes.
GPIO23 goes to the PS pin of the voltage regulator, to adjust it between PFM and PWM mode.
GPIO24 is the centre of a 5k6/10k voltage divider off the VBUS from USB, on the USB side of a diode, so it detects if USB is supplying voltage
GPIO 25 is the on board LED
GPIO29/ADC3 is another voltage divider to measure VSYS, but with an extra FET in place so the divider cant leak into the ADC and 3.3v rail, when the 3.3v rail is off
What is the maximum current rating of the GPIO's?
In total (adding up all the individual GPIO demands), the current for the IOVDD must be <=50mA.
Can I use USB serial when debugging using SWD?
No, you need to use a UART based console when debugging using SWD. This is because the USB stack will be paused when the RP2040 cores are stopped during debugging, which will cause any attached devices to disconnect.
What caches does the RP2040 have?
There is just one, an execute in place (XIP) cache on the flash (because flash memory is quite slow). There are otherwise no instruction or data caches.
Can I make my code run from RAM?
Yes, you can. Add the following line to CMakeLists.txt and it will force the program to be loaded in to RAM instead of flash when you download it. This means your program will be gone if you power cycle, but it does reduce the number of rewrite cycles on the flash, so is useful during development.
Code: Select all