Abhishek recently posted an overview of Raspberry Pi RP2040’s two PIO blocks with examples in C and Micropython using some PIO assembler code. He used some basic examples like blinking an LED, but the Raspberry Pi Foundation also mentioned the programmable IO could be used to drive a VGA display, read and write data from a MicroSD card at reasonable speeds, and so on.
However, the Raspberry Pi Pico does not have any of those interfaces, and it would be nice to have a board that does. It turns out there’s such a board in “Chapter 3. The VGA, SD Card & Audio Demo board for Raspberry Pi Pico” of “Hardware Design with RP2040.pdf” document. It will be sold as the “Pimoroni Pico VGA Demo Base” board for 19.50 GBP inc. VAT (about $22 US ex. VAT), but since the KiCad hardware files are open-source, I’d assume other companies may also sell the board (not sure about the license though).
VGA, SD Card & Audio Demo board for Raspberry Pi Pico (RPI-PVSA) hardware specifications:
- Support MCU board – Raspberry Pi Pico board
- Storage – MicroSD card slot
- Video Output – 16-bit RGB565 VGA output up to 640×360
- Audio – 3.5mm audio jacks for
- USB – 1x Micro USB port in device or host mode (selected by jumper)
- Misc – A, B, and C user buttons, 8-pin UART, SWD and SD card mode selection header
- Power Supply – 5V via Micro USB port or Vbus pin, or 1.8 to 5V via Vsys pin
As mentioned in the introduction, the VGA, SD card and audio demo board is open-source hardware, and you’ll find KiCad hardware design files here. Some of the design choices are interesting as for example, the board is not using a video DAC for VGA output, but instead, several resistors with different values for R, G, and B, that also happens to be shared with the user buttons due to the limited number of I/Os. This is all explained in the hardware design document.
The software appears to still be a work in progress, which may explain why the board is not available yet, with example provides in “pico-playground” Github repository. There are several C examples for VGA output, audio, miro SD card, USB server, but the program that stands out is “Popcorn”. It is a movie player capable of playing 320×240 30fps videos with 44,100Hz stereo audio read in a custom format from the MicroSD card with both PIO blocks used for respectively VGA output and the MicroSD card.