Raspberry Silicon update: RP2040 on sale now at $1
raspberrypi.org
raspberrypi.org
The quality of the documentation is phenomenal. Very competent people clearly put serious effort into making it great.
Another stand out is the Programmable I/O feature. Basically, you have eight separate, programmable state machines that can manipulate I/O pins and do DMA. This lets you offload bit banging from the main cores. Details are in Chapter 3 of the C API docs: https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-...
I'm a total amateur when it comes to embedded development, so I have no idea how the RP2040 sits in the competitive landscape.
I'm guessing that lots of Picos will see use as enhanced GPIOs for Pi "motherships," which provide backhaul to multiple wired-in Picos.
In fact I have a project which could use a decidedly non-wireless USB GPIO, for use on an airplane imaging system.
It can replace many IC and will make a very good addition to ESP32 which lacks pins for many projects. And, sometimes you want external chip so output is not affected by ESP32 reboots or freezes.
If you need wifi, by all means, go integrated. But not everybody does.
On the other hand I often find myself missing USB-related features on the ESP32, such as being able to act as HID device or even a USB host. The ESP32-S2 fixes that, although software support for that is still relatively immature.
For instance: https://launch.arduino.cc/nano-rp2040
It's also clearly going to have a great developer community building up around it, which has great value in itself.
It's also great value as a "easy to integrate cheap module" which is what they initially pitched it as.
Of course these days many applications need a wireless interface (wifi/BLE) and you can get competitive parts at similar prices to the RP2040 (ESP32 or a BLE MCU).
Either way it's no longer cost effective.
I love this comment.
Anyone old enough to have coded for 8 and 16 bit home computers, or older mainframes knows how this is true, but it feels quite funny on the day and age of multi-GB heap sizes.
This definitely isn't the sort of programming where you can just wastefully allocate ram for a full uncompressed frame buffer, but that also opens the door to sub-frame latencies.
(which would allow using the screen at high resolution for, say, game graphics -- actual video is a different story)
- https://excamera.com/sphinx/store.html#gameduino-3x-dazzler-... - https://www.adafruit.com/product/4984
Some will object that none of this is the best hardware or that there are cheaper solutions but it doesn't really matter because basically none of the alternatives have such breadth of support.
You can get and Orange Pi or Banana Pi or cheap arduino clone for cheaper and some have better spec but invariably you will end up with a partially implemented SDK, linux images that won't be updated and drivers that often don't really work.
There are exceptions but with things like the Compute Module 4, you get all the advantage of a widely supported platform with the flexibility of building it in your product and knowing it will be supported for many years (if you can get your hands on it though).
The Pico is in the same vein: it has some innovative aspects, like the PIO and lots of RAM but it's basically a dual core Cortex M0+, just like another gazillion micros.
The difference is that it's extremely well documented out of the box; it took years for the ESP chips to get any decent documentation. It also comes with a boot loader and has support for at least C SDK, CircuitPython and MicroPython and there is basically no limit to implement other interpreted language platforms. Switching from one system the other is as easy as copying a file onto a USB drive and rebooting the pico.
Most small projects don't need Wifi. The ESP32 is great for that if you need it.
The RP2040 is also cheap. The Rpi foundation doesn't make a profit and they work hard at ensuring the hardware is as cheap as it can be. At USD1 it's a very competitive offering for something so versatile.
Now the main issue is going to be availability. They only make 40,000 units available for the next 3 months. It's basically a box of a few dozen rolls. A drop in the ocean.
With their usual success and the current supply chain issues, it's going to take months before it becomes widely available. Pretty sure we'll still be struggling to by more than 10 units at a time at this time next year...
To me, that just makes things so much more complicated than most of the competition, since any board has to go multi-chip in order to add external flash.
What am I missing?
Having one chip, with the RaspberryPi branding, and great documentation, should allow for development of families of development / educational boards.
I'm pretty happy with the nRF ecosystem, it has to be said.
I've ordered my first pico, and am really looking forward to playing with it (having done a lot of ARM work commercially lately), and from a maker's point, I think the foundation have it absolutely nailed feature-wise. In fact, I'm considering using the pico for a (potentially commercial) side project I've been wanting to do for years, but haven't found a cheap, powerful platform to do it on.
However, for anything that wants to transition to a commercial product, lack of CRP is a major roadblock. Yes, I know we all should/want to make our code open source, and have a support model for revenue. For most embedded sellable products, the core IP is the code that runs on the micro, the development of which will be the main driver for product cost. If someone can easily lift that, hardware is easy(ish) to copy, and can potentially significantly undercut your product cost (and your ability to run a viable business).
Here is a recently announced board: https://www.cnx-software.com/2021/05/28/rv-debugger-plus-uar...
The QFN package is slightly painful for prototyping, but certainly isn't an issue for automated production. I will definitely add the RP4020 to my drawer of dev kits and microcontrollers!
Doable to solve on an STM32 by bitbanging, but PIO makes more elegant solution (start the PIO program, read acquired samples via DMA).
It would also be great for making into RS232 driven GPIO boards using a simple protocol.
Actually I'd love to see someone develop a daisy-chainable automation IO board using these. Auto-sense the neighbors, assign registers to I/O pins, and make a protocol based on Msgpack or a subset.
https://www.raspberrypi.org/blog/how-to-add-ethernet-to-rasp...
And DVI:
https://hackaday.com/2021/02/12/bitbanged-dvi-on-a-raspberry...
https://www.kubii.fr/raspberry-pi-microbit/3328-microcontrol...
It is kind of a bummer that it seems to be 0.1" wider than a DIP socket.
So, have you?
If you want to be more specific, AVR has no exceptions/faults and the interrupt priority is hardwired.
Edit: And AVR has only one encoding for instructions, not a big and a small one.
Compare that to an Atmel SAM-L that draws ~400uA (0.4mA) at the same 16MHz, and is on a 32-bit Arm Cortex platform.
Isn't it 8-bit?
And there is plenty of modern C++ one can even put inside an obsolete C64, let alone an Arduino.