Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。
無料ブログはココログ

スポンサー

« efuさんのWaveSpectraが公開停止していた | トップページ | RaspberryPi Pico USB-DDC化 I2SとMSBファースト後詰め出力対応 »

2022年3月20日 (日)

RaspberryPi Pico USB-DDC化? I2S出力調査

ラズパイ全般が売切れで購入しにくい状況が続いていますが、昨年登場したRaspberryPi Picoもオーディオ系の遊びに使えそうな雰囲気を感じましたのでちょっとテストしてみました。

Picoは潤沢に在庫があるようで、今現在でも手に入ります。というか不人気??

Pico_00

公式のpico基板ではなく、サイズが小さいSeeed社のXIAO RP2040という基板を使ってみました。秋月電子で690円です。公式のpicoはIOを沢山使う場合には良いと思いますが、I2Sなどシリアル通信を使うだけならIO5~10本あれば十分です。

 

 

ラズパイ公式のgithubには、picoをUSBオーディオとして認識させるソフトウェアが公開されています。16bitのI2S出力で44.1kHzと48kHzに対応していることになっています。

 

I2S-DACとして、SabreberryDAC ZEROを使ってテストしてみました。この基板はMCLK無しで44.1kHz~384kHzまでの信号を受け付けますのでお手軽です。

 

 

ソフトウェアは以下の構成で、すべて揃えてからusb_sound_cardをビルドします。(Examplesは入れなくても良いかもしれません)

 

ビルドツールSDK

https://github.com/raspberrypi/pico-sdk

 

Examples

https://github.com/raspberrypi/pico-examples

 

I2Sなどオーディオ系のソースコード

https://github.com/raspberrypi/pico-extras

pico-extras/src/rp2_common/pico_audio_i2s)と(pico-extras/src/common/pico_audio

その他、SPDIFもあるみたい。そのうちテストしてみようかな。。。

 

USB-AUDIOのソースコード

https://github.com/raspberrypi/pico-playground

pico-playground/apps/usb_sound_card

 

usb_sound_card.c のピンアサインを変えてXIAO RP2040でI2Sを出せるようにしました。

struct audio_i2s_config config = {
    //.data_pin = PICO_AUDIO_I2S_DATA_PIN,
    //.clock_pin_base = PICO_AUDIO_I2S_CLOCK_PIN_BASE,
    .data_pin = 26,
    .clock_pin_base = 27,
    .dma_channel = 0,
    .pio_sm = 0,
};

ちょっと無理やり感がありますね。とりあえずのテストです。

 DATAをGPIO 26

 BCKをGPIO 27

 LRCKをGPIO 28

というアサインです。

side_setという特殊な命令を使ってBCKとLRCKを制御しているため、この2つは連続したGPIO配置になります。

Pico_01

Pico_02

HAT基板側はこんなアサインで接続します。5VとGNDも忘れずに。

 BCK -> PCM_CLK

 LRCK -> PCM_FS

 DATA -> PCM_OUT

 

ビルドする環境を構築するのが面倒なので、コンパイルしたデータを置いておきます。(私はVirtualBOX内のubuntuでコンパイルしました)

ダウンロード - usb_sound_card.uf2

 

XIAO RP2040の「BOOT-SW」を押しながらPCにUSBを接続するとフォルダが見えますので、そこにドラッグ&ドロップで入れるだけです。

 

USBの接続はUAC1.0ですのでWindowsでもmacでも繋がると思います。

 

 

 

ただ、

 

何となく時々音が途切れているような気もしますので、解析・改良の余地はありそうです。

Pico_03

昨年のインターフェース誌に掲載されたこの基板も秋月電子で売っていたため購入してみました。素朴な音で懐かしさを感じます。

音よりも技術的な内容の方に興味を惹かれます。

こちらもUAC1.0仕様。

 

たしかWinodws10の標準ドライバのUAC1.0では、asynchronous&フィードバックが働かなかったような気がするのですが。。。

この辺も調査する必要がありそうです。

 

インターフェース誌2022年4月号では、picoで96kHz24bitハイレゾ化したUSB-DACを公開しているので、それなりに可能性はあるかと思います。安くできるという部分で、お手軽さも魅力ですね。

 

 

 

秋月で売っているR2R DACにもI2S部分を改造することで適応できそうな気もしています。

Pico_04

I2Sではなく、昔、SONYフォーマットと言われていたMSBファースト後詰め16bitです。

 

 

というか、pio勉強中にあれこれやっていて、I2S/MSBファースト後詰め両対応できました。 近日中に公開いたします。

Pico_05

 

 

 


参考にしたサイト様

Raspberry Pi Pico 開発環境セットアップ

Raspberry Pi Picoの開発環境構築 (Ubuntu PC)

https://docs.microsoft.com/ja-jp/windows-hardware/drivers/audio/usb-2-0-audio-drivers

参考になる書籍

インターフェース2021年8月号

 

 

« efuさんのWaveSpectraが公開停止していた | トップページ | RaspberryPi Pico USB-DDC化 I2SとMSBファースト後詰め出力対応 »

PCオーディオ」カテゴリの記事

Raspberry Pi pico」カテゴリの記事

コメント

ちょっと気になったのですが、これI2S側の信号は1bit消えてませんか?

d さん

消えてませんよ。大丈夫です。

そうなんですか、失礼しました。てっきりI2Sの信号は先頭に空のデータが送られて、16bitだと17クロック分以上あるものだと思っていました。I2Sでは先頭のデータが最後にLSBとして読みだされるんですね。

d さん

32fsのBCKで16bitデータを送る時は、空きスロットがなくなります。 前詰めでも後詰めでも違いがないフォーマットに見えますね。

コメントを書く

(ウェブ上には掲載しません)

« efuさんのWaveSpectraが公開停止していた | トップページ | RaspberryPi Pico USB-DDC化 I2SとMSBファースト後詰め出力対応 »

サイト内検索(new)

2024年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30