Sigma-delta ADC demo for Raspberry Pi Pico using PIO
Find a file
2025-06-21 13:30:26 +02:00
etc Initial import - audio output 2025-06-15 22:02:02 +02:00
grc Improve GRC demo 2025-06-21 13:30:26 +02:00
images Add noise floor images with on-board regulator 2025-06-20 22:53:00 +02:00
src Add missing byte swap 2025-06-21 12:47:43 +02:00
.gitignore Initial import - audio output 2025-06-15 22:02:02 +02:00
.gitmodules Initial import - audio output 2025-06-15 22:02:02 +02:00
LICENSE Rename to pico-pio-adc and clean up 2025-06-19 23:33:45 +02:00
README.md Add noise floor images with on-board regulator 2025-06-20 22:53:00 +02:00

Pico PIO ADC

Sigma-delta ADC demo for Raspberry Pi Pico using PIO.

Building

  1. Clone with git clone --recursive to get the alternative stdio.
  2. You need to have PICO_SDK_PATH set.
  3. Just run cmake -B build src to configure the project.
  4. And then cmake --build build to build it.
  5. Flash the firmware via picotool load -f build/pico-pio-adc.uf2.

GNU Radio Companion

The GNU Radio Companion examples work with a FIFO that receives the stream from the serial. Build creates a simple tool to move the bytes around, so you can do this:

mkfifo samples.fifo
build/tools/serial /dev/ttyACM1 >samples.fifo

Then GRC can grab the samples.

If you tire of having to start the serial tool manually, you can do this:

watch -n1 'build/tools/serial /dev/ttyACM1 >samples.fifo'

This restarts it in a second once it quits.

Circuit

Circuit Schema

Click the image to open interactive version in Paul Falstad's excellent online simulator.

Screenshots

Please note that screenshots are with AMS-1117 linear voltage regulator bypassing the Picos RT6150 on-board switching regulator unless the caption says otherwise. This is done by jumpering 3V3_EN pin to GND, feeding VSYS to the regulator input and passing the regulator output to 3V3 pin. The 3V3 rail is then decoupled with 10uF ceramic capacitor to GND on the analog board.

Noise floor with external AMS-1117 linear regulator
Noise floor with on-board RT6150 SMPS in PWM mode
Noise floor with on-board RT6150 SMPS in PFM mode
IR Blast, full rate
IR Blast, tuned at 38 kHz