Adafruit's Feather RP2040 SCORPIO Drives Eight Channels of RGB LEDs From a PIO State Machine
Driving eight channels of NeoPixels from the RP2040's Programmable Input/Output (PIO) blocks, the SCORPIO frees the CPU up for other tasks.
Adafruit has launched a new development board built around the Raspberry Pi RP2040 microcontroller, and this one has a very specific use case in mind: driving as many WS2812 RGB LED strips as possible across eight channels, with the Feather RP2040 SCORPIO.
"If there is one thing Adafruit is known for, it's mega-blinky-fun-rainbow-LEDs," the company writes by way of introduction. "We just love sticking NeoPixels anywhere and everywhere. When we saw the new 'PIO' peripheral on the RP2040 from Raspberry Pi, we just knew it would be perfect for driving large quantities of NeoPixels. So we created this board, the Adafruit Feather RP2040 SCORPIO, designed specifically for NeoPixel (WS2812) driving but also good for various other PIO-based projects that want to take advantage of the Feather pinout with 8 separate consecutive outputs (or inputs)."
The Feather-format board is built around the Raspberry Pi RP2040 microcontroller, which offers two Arm Cortex-M0+ cores running at a stock 125MHz and 264kB of RAM. To this, Adafruit has added 8MB of external SPI flash and a level shifter to take the standard 3.3V output of the chip to 5V — or the reverse, if you'd like to use the board's eight level-shifted channels as inputs rather than outputs.
It's not the microcontroller cores that are the star of the show, here, but the RP2040's Programmable Input/Output (PIO) blocks. Here, Adafruit has loaded a state machine designed purely for generating perfect waveforms across eight concurrent outputs through direct memory access (DMA) — meaning the LEDs can be driven without tying up precious CPU cycles.
In addition to the 5V LED outputs, the board also offers four 12-bit analog to digital converters (ADCs), 16 pulse-width modulation (PWM) outputs, an on-board RGB LED, a Stemma QT connector for solder-free expansion, and a 200mA+ lithium-polymer charging circuit with charging status indicator LED — plus two each of I2C, SPI, and UART buses.
The board has been listed for sale on the Adafruit shop at $14.50, though at the time of writing was showing as out-of-stock and unavailable to order.
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.