• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2015年11月10日

RaspberryPiでi2s接続

RaspberryPiでi2s接続 紆余曲折ありましたが、めでたくカーナビを中心としたどこにでもあるカーオーディオにDACをポン付けした簡易システムに成り下がったシエンタです。

このシステムの弄りはこの辺りにしておいてそろそろ次期システムの開発に乗り出します。
といっても今までどおり小規模でお金をかけずのんびり楽しむコンセプトは変わりませんが...

ということでカーオーディオに最適化したシステムを妄想して自作する訳ですが、再生制御はとりあえずRaspberry Pi2で検討してます。
以前さらっとビルドしたCarMPDでi2S出力をさせたいと思い適当にいじってみました。
まずconfig.txtでメジャーなi2sDACの設定します。
ありがたいことにそれだけで必要な設定ができる模様で、起動後alsaでデバイスが追加されていることを確認後、mpd.confにHWを使う設定を追加してみました。

こんな感じでコントロールアプリでもi2s出力を選択できるようになりました。



問題は信号が出ているかですが...
ラズパイはこんな感じのピン配置で出るようです↓



手持ちのオシロで測定したところ一応波形が出ているようでしたので、PCMとDSD音源をそれぞれ用意してどんな信号が出ているか調べてみました。

【PCM44.1KHz】
・LRCK上とBCK下



・SDATA上とBCK下



纏めてみるとこんな感じでしょうか?
PIN12 BCK 1.411MHzぐらい?(理論値)
PIN35 LRCK 44.1KHz(理論値)
PIN40 SDATA 705KHzぐらい?(理論値)

オシロの性能が良く無いので波形も正しく出ず周期も手動なので大体しかわかりませんが理論値ぐらいは出ていそうです。



【DSD2.8MHz】
・SDATA上とLRCK下


一応LRCKに同期してデータが入ってる模様です。
測定値から推測するにLRCKは192KHzのサンプルリングレートを使っているのかもしれません。

・SDATA上とBCK下

↑性能限界でこのレンジより細かく出来ません...(~_~;)

纏めてみるとこんな感じですかね?
PIN12 BCK 6.7MHz ?
PIN35 LRCK 190KHz ぐらい
PIN40 DATA 6.7MHz ??読めない...


またBCKの電圧がかなり低い様です。
測ってみたら1.4Vぐらいでした。



あと気になるのが、LRCKとSDATAの波形が点滅します。

こんな感じで消えたり...ついたり




わけがわからんのでシングルショットで粗めに測定してみました。

・SDATA上とLRCK下


なんか定期的に空白期間が入っている模様です。

更に拡大してみます。
・SDATA上とLRCK下


BCKが6.7MHzぐらい出ていそうなのですが0.3秒ぐらいのデータ欠落期間があります。
データが足りているのでお休みしてるのか、そもそも欠落しているのかがよくわかりません...(^_^;)

オシロの性能に限界があるのでDSD信号の解析はキツイです...(汗

教えてくださいエロい人...じゃなかった偉い人m(_ _)m


----------------------------------------
【追記】
出勤前にぎっちさんのご質問を受けて思い当たる節がありmpd.confにaudio_output_format "*:32:2"という行を追記してみました。


44.1KHzの音源でBCKを確認すると64fsぐらい出ていそうな出力になりました。
・SDATA上とBCK下


オーバーサンプリングされているといけないのでLRCKとSDATAを比較してみます。

・SDATA上とLRCK下


ちゃんとビットが詰められてますね。
ぎっちさんこれどうでしょう?

ちなみにDSDのBCKを測ってみたところ10.5MHzぐらい出ていそうでした。

・SDATA上とBCK下


ぎっちさんへその2↓
・44.1KのBCK上とLRCK下


・44.1KのBCK上とLRCK下レンジ拡大



DoPオプションを付けてDSDのLRCKも出してみました。
・SDATA上とLRCK下



LRCKサンプリング周波数は192KHz程と変わらなさそうですがSDATAの先頭にヘッダの様なものが付くようになりました。DoPオプションの有無でデータの出方が違う様です。

もう少しmpd.confの設定を見直してみても良さそうです。

続く


ブログ一覧
Posted at 2015/11/10 20:46:07

イイね!0件



今、あなたにおすすめ

ブログ人気記事

お疲れ様!
Tom君さん

準備万端パート2・・・
シュールさん

ロードスター完成‼️
nobunobu33さん

モエ活【35】~ 開門した第1Pへ
九壱 里美さん

【シェアスタイル】モニター募集🎁 ...
株式会社シェアスタイルさん

知床遊覧船事故から3年
どんみみさん

この記事へのコメント

2015年11月10日 22:20
自分も良く解らないまま、調べてまして…
本来はLRCLKにDSD-LかR。SDATAに反対のDSDデータが乗ってないと駄目らしく…LRCLKに混合で乗っているのは…?らしいんですよね…

ラズパイのI2sドライバーが、DSDに対応して無い為にこの様になるらしいです。(漏れてる?)
色々調べてますが、14年の春以降の記載されたサイトも無いんですよね…。
あるのは、DDCのCOMBO384のI2s信号を、I2sDACに入力する記事しか無いんてすよね…
コメントへの返答
2015年11月10日 22:40
DACに入力するDSD信号としてはその出力が正しいと思いますが、i2sがDSDをサポートする仕様自体が無いので、特に正解は無い様に思います。例えば他のピンから残りがでるなど独自フォーマットでdsd over i2sになっていても不思議ではありません。
i2sdriverのソースが見れそうなので時間がある時に試しに覗いてみようかと思います。
でも対応してなさそうですけどね....
2015年11月10日 22:44
チンプンカンプン…

難しくて頭からケムリ出てきそう(笑)
コメントへの返答
2015年11月10日 23:12
9割の人はそうなると思います(^^;;
煙が出てちゃんと信号がでるなら私頑張りますw
2015年11月10日 23:28
このBCKが32fsなのがいろいろとネックなんすよ。
64fsに出来ると良いのですが・・
コメントへの返答
2015年11月11日 8:41
やっと追いつきましたwww
64fsについて追記してみましたがいかがでしょう?
2015年11月11日 2:59
PCMのSDATAは、BCKの1周期を1bitとして、そこがONかOFFかでデーターを送っているのでHzでは表せないかと。モヤッとして見えるのは常に変化したデーターがランダムに流れてきているからです。

DSDは、ちゃきさんも言っている通りに、I2Sライン上で送る場合はSDATAにDSD-L、LRCKにDSD-R(逆の場合もあります)を乗っけるのが一応正解なんですよね。独自フォーマットになったらDAC ICが動きませんし・・・。DoPをI2Sに流すって事もありますが、DSD2.8MならLRCKが176.4Kになるはずだしねぇ。DSDの時はちゃんと動作してない感じですかね。
コメントへの返答
2015年11月11日 8:55
待ってました!
SDATAがちゃんと出てるのを伝えるのは難しいです。2bit表現ができる間隔を1周期として計算してみましたが、そうなるとDSDのSDATAはBCKの半分が正しいですね(^^;;

測定結果からRaspberryPiのi2sドライバは仕様通りにPCMしか送ってくれなさそうです...(汗
なぜ192Kなのかも謎ですがDoPがドライバの更に上流で制御しているようでi2sかUSBかを判断しておらずDoPオプションを付与するとi2sも同様にマーカーのようなものが付くみたいです、強引にDSD over I2Sで強引に送れさえすればFPGAでDSD信号に戻してあげると言った事が十分可能な気もしてますが難しいですね(^^;;
2015年11月11日 23:44
ありがとうございます。
audio_output_format ってアップサンプリング弄る時のかと思ってたけど
解説お願いします(_ _)
64fはLRCKとBCKを並べてもらえると(^_^;)
コメントへの返答
2015年11月12日 7:07
このオプション自体は出力フォーマットの上限値を設定するもので、samplerate_converterを組み合わせることで指定したサンプリングレートにアップコンバートします。(一応心配だったとのでLRCKとSDATAを並べましたw)
設定内容は"最大サンプリングレート:最大ビット:チャネル数"になります。
*をいれると再生するファイルに準じるという意味になります。

LRCKとBCKの画像を追加しましたがちょっと見にくいですよ(^^;;
先日のSDATAとBCKの画像でBCKの1周期分をΔtとして測定してますので画面右上の0.36μsから1/0.36=2.77MHzで大体2.8MHzと読んでもらえばと思いますm(_ _)m
2015年11月12日 2:03
DSDをPCMデーターとして扱ってますね。現状はPCMデーターしか扱えない・・・なら、DSDを事前にWAVパックしてやれば、I2SにDoPデーターが流れてきそうですね。それをDoP/I2Sと識別できるFPGAや、SRC(AK4137とか)で、DSDデーターに戻してやるしかないのかなと。わざわざラズパイ用にDSDをWAVパックするのは面倒ですが(汗)強者はさらに、それをFLAC化して圧縮&タグ管理と・・・

DoPオプションは、DSD(2.8M)をDoPマーカー無しで、WAVパックした際に、176.4k/16bitに8bitマーカーを付ける為のオプションなのかな?と。
コメントへの返答
2015年11月12日 7:20
やっぱりそう見えますよね...(^^;;
DoPマーカーの制御がドライバの外なのが垣間見えますw
完全独自フォーマット確定です。
これからDAC入力ができるようにちょっとFPGAで遊んでみますwww
2015年11月12日 8:29
これを使ったらDSD-PCM変換せずにDSD出力してくれるとかはないですかね?

https://aur.archlinux.org/packages/mpd-dsd/
コメントへの返答
2015年11月12日 8:38
ありがとうございます。
今度試してみますね(^^)
引越してからネットワーク構築ができていないのでまずラズパイをインターネットに繋げるところからなのですがIPのセグメントが違うので時間がかかりそうです...(汗

プロフィール

「@tomii さん>欲しいけど高い><」
何シテル?   03/21 21:21
灰道三です。よろしくお願いします。 グレー(灰)のストリートトリプル(道三)というバイクに乗ってます。 カーオーディオはハイレゾシステムの車載を進めてますが、...
みんカラ新規会員登録

ユーザー内検索

<< 2025/4 >>

  12345
6789101112
13141516171819
20212223242526
27282930   

リンク・クリップ

ハイブリッド車の「整備モード」移行方法 
カテゴリ:その他(カテゴリ未設定)
2024/08/03 20:48:58
【デッドニング】天井の施工 
カテゴリ:その他(カテゴリ未設定)
2023/12/19 19:48:22
CAR MATE / カーメイト クロスライド Xride セーフティガード NS107 
カテゴリ:その他(カテゴリ未設定)
2023/10/25 14:08:50

愛車一覧

トヨタ シエンタ トヨタ シエンタ
P80系からの乗り換えです。 スッと曲がるし、滑らかに加速するし、欲しい機能は付いている ...
トライアンフ ストリートトリプル トライアンフ ストリートトリプル
愛車です。 トライアンフは始めてですが、三気筒のエンジンフィーリングが素晴らしいです。 ...
トヨタ シエンタ トヨタ シエンタ
子供と妻の為にコンパクトでスライドドアのシエンタにしました。 前車も丸目インプレッサでバ ...
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation