Two comments. First, I also hate Arduino for all but the simplest projects. I use PlatformIO https://platformio.org with VSCode. It supports the Arduino framework but with more advanced features such as library management, multiple source files, configuration per project, hardware debugging, etc. PlatformIO also supports the mbed framework with Teensy which provides a free RTOS, many library functions similar to Arduino, and drivers for common sensors and other hardware. If you don’t like platformio you can use mbed directly as a web-based graphical IDE or as a full command line toolset.
Second, while the Pico does not have dedicated I2S hardware, it does offer 4 programmable logic blocks called PIOs. Each PIO can be configured for fast IO operations such as I2S, driving neopixel LEDs, VGA or DVI display output, etc. The data is provided via DMA and the PIOs operate independently of the MCU and thus do not slow it down. many PIO blocks are available now unfortunately I2S is not one of them. But Pimorini has the PIM544 I2S DAC audio board available for pre-order so there will be an I2S PIO module available soon. The other available PIO modules can be viewed at https://github.com/raspberrypi/pico-examples#pio
Thanks for this tip and I got VSCode with PlatformIO working on Linux Mint and uploaded the Blink programt using Teensy Loader (for Linux).
However, the PlatformIO for Teensy3.0 is also Arduino based and I really want a blank C development environment where I have full control. I know it's a little crazy but I just dislike the feel of something being "beneath" my code.
For Teensy 2 (AVR) I merely used Notepad++ plus a Make file to do development.
I don't mind a library of some sort but I want to be in control of everything that runs on the microcontroller.
Last edited: