[Dprglist] New Raspberry Pi RP2040 boards

Murray Altheim murray18 at altheim.com
Thu Jan 21 12:12:05 PST 2021

One of the things I didn't highlight was that the Pi RP2040 boards
don't have the overhead or complexity of a Linux OS, just a single
C/C++, MicroPython or CircuitPython program running, i.e., the new
boards are microcontrollers rather than single board computers.
Based on our discussions, to some of the DPRG members this would
be a distinct advantage. [I myself prefer the full Linux OS as I
generally ssh into my robot to program and control it, but the
RP2040 (as I mentioned previously) still looks appealing to me as
a slave processor.]

Two other highlights:

# Low Power, Sleep & Dormant Modes

The RP2040 uses about 100mA when active, and supporting two low
power modes: a SLEEP and DORMANT state> The latter puts the device
into a true zero-dynamic-power sleep state, where all clocks (and
all oscillators) are disabled. It can be awakened from that state
by activity on a GPIO pin or an RTC interrupt.

# PIO (Programmable I/O)

Another of the more important things I failed to mention about the
RP2040 is a new hardware feature called PIO or Programmable I/O.
The RP2040 has two PIO blocks, each with 4 state machines. Each of
these is actually a processor core:

   PIO is programmable in the same sense as a processor. There are
   two PIO blocks with four state machines each, that can
   independently execute sequential programs to manipulate GPIOs
   and transfer data.

   PIO is highly performant as well as flexible, thanks to a
   carefully selected set of fixed-function hardware inside each
   state machine. When outputting DPI, PIO can sustain 360 Mb/s
   during the active scanline period when running from a 48 MHz
   system clock. In this example, one state machine is handling
   frame/scanline timing and generating the pixel clock, while
   another is handling the pixel data, and unpacking run-length-
   encoded scanlines.

   State machines' inputs and outputs are mapped to up to 32 GPIOs
   (limited to 30 GPIOs for RP2040), and all state machines have
   independent, simultaneous access to any GPIO.

Here's several articles and the Pico SDK docs about the PIO:

   What is Programmable I/O on Raspberry Pi Pico?

   Section 9 of the Raspberry Pi Python SDK is on PIO Support

   Hands-On with the RP2040 and Pico, the First In-House Silicon
   and Microcontroller From Raspberry Pi

While not the same thing, I think the RP2040 is perhaps trying to
compete in this space with the Arduino MKR Vidor 4000, which is
their first implementation containing a FPGA or Field Programmable
Gate Array. There's a video on the product page by Massimo Banzi
(co-founder/CTO of Arduino) describing FPGAs:



On a side note, on Google I searched for "pico pio" and found Pío
Pico, who was the last governor of California under Mexican rule. He
visited Los Angeles in 1845 when it had about 250 people. There's a
California state park near Whittier named after him. In 2017 a wildfire
in Whittier lasted twenty days and burned 18,430 acres (75 square km)
before it was contained.



Murray Altheim <murray18 at altheim dot com>                       = =  ===
http://www.altheim.com/murray/                                     ===  ===
                                                                    = =  ===
     In the evening
     The rice leaves in the garden
     Rustle in the autumn wind
     That blows through my reed hut.
            -- Minamoto no Tsunenobu

More information about the DPRGlist mailing list