Raspberry Pi Picoとtinyusbを使ったマスタークロック付きのi2sを出力するUSB DDCです。 uac2_speaker_fbをベースに、ハイレゾ(96kHz 24bit)に対応しました。 USBスタックには、tinyusbを使用しています。
RP2350のDSPを使用したインターポレーション(オーバーサンプリング)機能を実装しています。 本機能はinterpolationブランチで利用可能です。 インターポレーション処理は、usb_sound_card_hiresのものを使用しています。
- 44.1/48kHz: 8倍
- 88.2/96kHz: 4倍
- Passband: 20.5kHz
- Passband Ripple: 0.001dB
- Stopband: 22.05kHz
- Stopband Attenuation: -140dB
pico-i2s-pioを使っています。RP2040/RP2350のシステムクロックをMCLKの整数倍に設定し、pioのフラクショナル分周を使わないlowジッタモードを搭載しています。
i2s、PT8211の16bit右詰め、AK449XのEXDF、i2sのスレーブモードに対応しています。また、i2sとPT8211をデュアルモノで動作させることも可能です。
lowジッタ、i2sモード
| name | pin |
|---|---|
| DATA | GPIO18 |
| LRCLK | GPIO20 |
| BCLK | GPIO21 |
| MCLK | GPIO22 |
git clone https://github.com/BambooMaster/pico_usb_i2s_speaker.git
cd pico_usb_i2s_speaker
git submodule update --init
を実行した後、vscodeの拡張機能(Raspberry Pi Pico)でインポートし、ビルドしてください。
git clone https://github.com/BambooMaster/pico_usb_i2s_speaker.git
cd pico_usb_i2s_speaker
git submodule update --init
mkdir build && cd build
cmke .. && make -j4
Windows11とAndroid (Pixel6a Android16)、Ubuntu 24.04で動作確認をしています。