Raspberry Pi Pico Discussion

** Adafruit Trinkey QT2040 - RP2040 USB Key with Stemma QT - coming soon**


  • Main body is same size/mounting holes as most of our Stemma QT boards (1.0" x 0.7" with M2.5 holes)
  • USB Type A connector with extra-thick PCB to fit into a USB host port
  • RP2040 32-bit Cortex M0+ dual-core running at ~125 MHz @ 3.3V logic and power
  • 264 KB RAM
  • 8 MB SPI FLASH chip for storing files and CircuitPython/MicroPython code storage. No EEPROM
  • Native USB supported by every OS - can be used as USB serial console, MIDI, Keyboard/Mouse HID, even a little disk drive for storing Python scripts.
  • Can be used with MicroPython or CircuitPython
  • Built-in RGB NeoPixel LED
  • STEMMA QT / Qwiic port for I2C connectivity
  • 3.3V regulator with 600mA peak output
  • 12 MHz crystal
  • Both Reset button and Bootloader select buttons for quick restarts (no unplugging-replugging to relaunch code)
  • Bootloader button can also be safely used in ‘user’ code

Ah, this WaveShare’s US$20, SPI, 3.5", 65k colour, resistive touch screen module looks attractive. I might get one when I have finished the first phase of my Pico 2WD.


(1) Waveshare Pico SPI, IPS, 3.5", 480x320, 65k colour, Resistive Touch (ILI9488, XPT2046) Display Module, US$20

This pico board is also super tiny, but out of stock. :sweat:

Seeed Studio’s New Seeed XIAO RP2040 is Super Tiny - Ash Hill 2021jul23

I’m planning to use the pico in a project and have a question about the I2C engine. I will write the project’s code in C using the pico-SDK. The RP2040 data sheet says I2C has a 16-element transmit and receive buffer. My question: what is an element? Is it a bit, a byte, a 32-bit word, what?

Just a quick reply. Usually a datasheet specifies a buffer by its data type and size, eg a 16 byte buffer. If no such thing is said, then my guess is that they want to make it very flexible. Eg, the “element” might be a pointer, statically or dynamically linked to an object, which can be any type and size of data structure.

I have been using python for some time, and I like its feature of when defining a function, you don’t need to declare the parameters as 32 bit byte etc, as in static typed language C. It is only at run time then the interpreter “guesses” that it should be, eg, an array, say, and do the dynamical (at run time) object creation and/or linking.

[Function} Parameter (computer programming) - Wikipedia

Thanks for the comment. The reason I need to know is that I am planning to sample an analogue signal at 20 Ksample/s and I need to know how big, in bits, the buffers are when the I2C data, to a peripheral, is only being transferred a maximum of 1 MBaud; at that rate, only 50 bits can be sent in the 50 uS between samples. So, will the 16 ‘element’ buffer hold 50 bits or not?
By the way, it is more than somewhat disappointing that the RP2040 cannot send/receive data faster than this limit. I would hope for 5 MBaud from a modern processor.

Yet another quick reply. (1) For ADC, 20k sps is usual. (2) So I think 400kHz SPI or I2C should handle it. But I am not so sure. Perhaps I can check it out later. (3) My feeling is that SPI ADC is faster than I2C ADC. Have you also consider SPI? (4) Even you can use 5MHz SPI or I2C, the distance between device and MCU is very short, perhaps on the same PCB, and even external, should be longer than 30cm. (5) All above are just casual, random ideas. Need to verify myself later. Cheers. PS - I am just a toy hobbyist, nothing industrial or professional. :slight_smile:

Update: Just now I searched my old posts and found the follow:

… There is one constraint though. If your SPI speed is 4MHz, then you can at most do about 200ksps. And if you don’t need to use 4Mhz SPI, if your sample rate is lower. For example, if your sample rate is 20ksps, then your SPI speed can be roughly 400kHz., …

Ref: https://raspberrypi.stackexchange.com/questions/96143/how-can-i-get-a-fixed-sampling-rate-of-1-ksps-when-interfacing-mcp3008-10-bit-a/96285#96285

Yet another old post you might be interested.

What is Rpi’s I2C Maximum Speed? - RpiSE, Asked 1 year, 7 months ago Active 7 months ago Viewed 6k times

So my feeling is that for Rpi4B, I2C 400kHz is practical, over 1MHz (which is the max speed of Pico, which uses the weak M0 chip) is not reliable.

You might like to let me know what ADC you are playing with, so I can check out its datasheet.

Hi…SDK isn’t quite so extraordinary as I anticipated. Parcel of models however tricky when you begin utilizing all component at same time.

I delighted in utilizing their VGA library anyway I had some peculiar conduct. SD card support on that gadget was ideally tended to by another person. Numerous DMA IRQ struggle from the different drivers. For sound I decreased it to PWM hinder based sound.

I saw that Arduino SDK was currently accessible for the pico however VGA was not yet part of it . At any rate, I don’t have more arrangement on the gadget.

It is quite modest. Presumably the least expensive MCU that can convey VGA with such quality for 4 euros.

I have seen other intriguing emulators on the gadget however the code must be changed for exhibitions.

So quite modest gadget however Teensy MCU are to be sure another classification!