I like both the Raspberry Pi Pico and my STM32F411. I often hop backwards and forwards between them.
Although I like both, the Pico edges out over my blackpill for the following reasons:
- It’s cheaper. I mean, holy crud, at less than 4 quid, it’s difficult to go far wrong. ST seems to have jacked up their prices – at least under COVID – to about 10 quid (from reputable sources)
- The community is better. I’ve asked questions on the Pi forums and have received responses that solved my problems
- Documentation is a little better for the Pico
- The SDK is a little better. I’m ambivalent about the STM32 Cube thing. On the one hand it takes some of the misery out of configuring the MCU. On the other, I’m not really keen on the big glob of goo that it generates. I also haven’t really fathomed out how to make it play nice with Git. The HAL is no speed demon. I have been playing with audio, and that HAL can eat up precious CPU cycles. The saving grace is that you can use the LL (low-level) incrementally. Their LL code actually looks pretty good from what I’ve seen at it. I’d say that it actually beats out libopencm3, although I have said elsewhere that I liked the libopencm3 code. Perhaps one could then convert from LL code to just using CMSIS. I do like my code to be nice and tight. I can also create my projects the way I like them: vim and Makefiles. Easy to put under source control.
- The real kicker, though is: the Pico implements SPI correctly! Some slaves require that the CS is raised high after each transfer. With the Pico acting as a master, you can arrange to have that happen. With an STM32, you can’t. That means that there’s no good way for the STM32 to do transmits under DMA. Urgh. I think that some STM32’s implement the SPI correctly, but you’ll require a lot of due diligence. The popular blue and black pills don’t.
The Pico has good maths functions too, including sine. I did some timings, and I came to the conclusion that it calculated sines about as fast, and more accurately, than a low-precision algo that I used.
People pooh-pooh the Pico because it “only” uses a Cortex-M0+. It seems to give the STM32F411 a good run for its money, though. I was only using one core, too. It’s exciting that the Pico can be used for real-time audio work, which is what I’m experimenting with at the moment. It would be cool to make a synth out of it. One thing I was thinking about was “wave-folding”. A module like that might cost 95 quid + VAT. From what I’ve experimented with so far, wave-folding should be within the realm of the Pico. I’m thinking about doing it as a cool project, and I reckon I’ve got most of the groundwork laid.
The Pico. It’s a nice chip. It deserves more respect than just being a hobbyists chip.