ず~っと母島

小笠原旅行と趣味(オーディオ,カメラ,自転車)

Seeed XIAO RP2040(pico互換)で64fs I2S出力成功

2022-06-29 22:32:00 | オーディオ
Seeed XIAO RP2040(ラズパイpico互換)にてI2Sを出力する件
無理矢理64fs化して出力成功

具体的にはaudio_i2s.pioで16回繰り返すとこを32回繰り返すようにし、受け取ったデータの16個以降はsetコマンドでゼロを埋めるようにしました
あと、audio_i2s.cで、周波数を倍にするためにdividerを0.5掛け



さて、何が悪かったのか
ヘッドホンでモニタしても音が聴こえず、TDA1543がI2Sを認識していないと思い込みました
しかし、ふと最大ボリュームにしたらかすかに音が聴こえます!
ん? ボリュームミニマムにコントロールされてね? とソースを疑います

追いかけるとUSBパケットでボリューム制御信号を拾ってビット演算してる様子


ふとM1をみるとボリュームがゼロだったので最大の100にする



音が出たー!
ということで、音源設定のせいでした m(__)m

従い、オリジナルソースもたかじんさんソースもきちんと動作し、音が出ています

しかしながら、ときたま途切れるような挙動がありますので実用まではまだまだ
多分クロックの分周計算あたりで無理があるんじゃないかな?と推測
そして、TDA1543には64fs不要なので無駄なことをしました

32fsでいいなら、たかじんさんソースを少しいじってみることにしましょう


bckが途切れる件で対策したエレホビカさんのページを参考にしてみましょう


というわけで、続く!
コメント

ラズパイ初代のI2S波形

2022-06-29 19:51:00 | オーディオ
ラズパイ初代P5端子からの電源取り出しの変更をしました

I2S出力信号は3.3Vです
ADUM130E1BRZの仕様をよく読むと、電源電圧でスレッショルドが変わります



電源電圧×0.7以上がハイ
5V電源だと3.5Vがスレッショルドです
3.3Vの信号を扱うためには電源電圧を3.3Vにすべきでしょう

青が3.3V電源、黄色がbck
これで正しいレベル合わせができているはず
でも電源がbckに揺らされてる?
これは測定系の問題かもしれないので、とりあえず見なかったことにしましょう



 ではADUM130E1BRZを介してTDA1543に入れます



設定変更してあったと思ったですが、うまくできてなかった様子
ロジアナで見ると32fsですね
これでもTDA1543は働いています
以前にpicoで32fsだったからTDA1543が働かないというのは誤りですね



おまじないを書き込んで再起動したら、64fsになりました
もちろんTDA1543は働いています




さて、なんでこんな実験したかといえば、picoから吐いたI2SをTDA1543が喰ってくれないからです
色々修正して64fsの信号を出せたのですが、TDA1543は働きません
でも元々の32fsでも働かなかったんですよ
そもそもpicoが吐いたI2SはまだTDA1543で動作させられてないわけです
後日、picoのI2Sを喰うことを確認しました

TDA1543は
 32fsでも64fsでも動く
 3.3V信号でも5V信号でも動く
という事は実験から判明
実績ある音源は
 ラズパイ初代 32fs、64fs
 CS8414  64fs
 PCM2706  64fs
 pico 32fs、64fs
です
直結でもデジタルアイソレータADUM130E1BRZを介しても大丈夫

意外となんでも喰いそうですが、picoだけ喰いません
後日、picoのI2Sを喰うことを確認しました


コメント

ラズパイI2SをADUM130E1BRZでデジタルアイソレート

2022-06-26 17:18:00 | オーディオ
ラズパイ初代からI2S引き出して、ADUM130E1BRZでI2Sをアイソレートしてみましょう
こんなこともあろうかと(笑)ラズパイから5Vを引き出してありますからね
後日3.3V引き出しに変更しました



ADUM130E1BRZで、電源、グランド、信号を分離します

気のせいレベルでしょうが、静かになったかな?
次の機会にはノイズを測定してみましょう
コメント

ラズパイ1 typeBにてI2S接続

2022-06-26 16:29:00 | オーディオ
自宅にあるのはシングルコアの初代ラズパイです
typeBです

写真は予備品です
何故か2台あるのです
2台目は黒ケース





初代ラズパイはスイッチング電源が載っていないやつですね
ラズパイ3が出荷されていた時期に初代を探して買っていたような記憶があります
音質重視



P5ヘッダピンをハンダ付け
ピン配置は以下を参照


はい「今更」「初代」でやっていますよ(笑)
ありがとうございます



私はヘッダピンを立てますよ



アルミケースの通気口からワイヤーを引き出してます
擦り切れちゃうのが怖い



TDA1543に直結



volumio2で再生
最新は3みたいです
初代には重いと思うのでこのままで行きます



一発で動作です
NASから再生できています

ちなみに32fs問題は事前に対処済み
コメント

M1 Macでのラズパイpicoの開発環境について

2022-06-26 09:42:00 | オーディオ
ラズパイpicoをUSB-DDCにした記事がありました
ここのバイナリをコピペしたのですが、32fsだったため、TDA1543では使えなかったです
※後日、32fsでも動作を確認、音源側ボリューム設定のせいでした

無謀にも改造してbuildしたくなりました


GUIでやれると楽だね、と思ってvscodeを使ってみましたが、include  path設定がうまくいかずお手上げ

そこで、同じ方の書いた開発環境整備の記事を見てvirtualboxをインストールしようとしました


なんと、M1 Macではvirtualboxが動かない!
インストール時に拒否されました (ノД`)

気を取り直し、検索しました
目的はUbuntuであってvirtualboxじゃないですからね
見つけたのはmultipath


・Mac側にpicoフォルダを作成し、Ubuntuにマウント

mkdir -p ~/pico
multipass mount ~/pico ubuntu:/pico

・Ubuntu shell起動

multipass shell ubuntu


以降は最初の記事のコマンドを叩きますが、フォルダ構成がhomeじゃなくマウントした/picoなのでそこだけ変えています

・ソースDL

cd /pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
git clone -b master https://github.com/raspberrypi/pico-examples.git
git clone -b master https://github.com/raspberrypi/pico-playground.git
git clone -b master https://github.com/raspberrypi/pico-extras.git

・Pico用のコンパイラ導入

sudo apt update
sudo apt install -y cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

・pico-sdkとpico-extrasのパスを設定

export PICO_SDK_PATH=/pico/pico-sdk
export PICO_EXTRAS_PATH=/pico/pico-extras

・cmake

cd pico/pico-playground/
mkdir build
cd build/
cmake ..

・make

cd apps/usb_sound_card
make



改造ソースは3本あって、以下フォルダにコピペし、makeしたらuf2ファイルが出来上がります

/pico-playground/apps/usb_sound_card/usb_sound_card.c
/pico-extras/src/rp2_common/pico_audio_i2s/audio_i2s.c
/pico-extras/src/rp2_common/pico_audio_i2s/audio_i2s.pio




このuf2ファイルをpicoにコピペしてやるわけです


vscodeで2週間悩んだのが馬鹿みたいですよ…

コメント