# 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
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