DAI CS8416 と DAC PCM1716

Raspberry Pi でI2Sを出力する際、PCM1716を使おうとしたんだけど
システムクロックが出力されないので使えませんでした。

そのことに気付く前に CS8416 と組み合わせて鳴らしてたので
ちょろっと紹介~(´―`)

まずは CS8416 のSPI、I2Cモードの選択についてです。
これ、よくわかってなかったのですが
どうも電源投入直後は不安定な状態で、リセットすると I2C モードになり、
さらに、AD0/CS ピンをHighからLowにしてやると SPI モードになるみたい。
データシート読むとそんなことが書いている気がします...タブン...(;´д`)
データシートが英語なのでよくわかんないのよねぇ~ヽ( ´ー`)ノ

CS8416 にコンデンサーとダイオードでリセット回路を追加しました。
これで電源スイッチ入れれば、ほぼI2Cモードになってくれます。
たまに失敗していますが...その時は手で線を抜き挿しして
手動リセットしちゃいます。


オーディオデータはPCからUSB経由で送ります。
秋月電子でPCM2704を買ってきて、SPDIF を取り出していたのですが
結構、必要な部品が多くてブレッドボードがゴチャゴチャに(;´д`)
ので、Aitendoで売っている以下の物を買ってきました。





秋月だと PCM2704 だけで400円。
写真のはAitendoで666円。
ブレッドボードに自分で組んでて思いました...
SPDIFを取り出すだけなら、これを買った方が楽ですな。(´・ω・`)


次は Raspberry Pi で I2C についてです。
Rev.2だと i2cdetect、i2cdump、i2cset などのコマンドの引数が変わったようですね。
i2cdetect -y 0
i2cdetect -y 1
上がRev.1の時、下がRev.2です。
引数が0から1になっただけですね。


PCM1716は直接ブレッドボードに刺せない小さなICなので、
ピッチ変換基板を使います。
いつも通り1回じゃうまくいきません...(´・ω・`)
でもまぁ、写真のようになってもハンダ吸取り線で取り除きつつ
ピッチ変換基板にハンダ付けしていきます。



以前は CS8416 で標準フォーマットを出力していましたが、今回はI2Sを出してみました。
データシートを見て、Serial Audio Data Format (05h)をそれっぽい設定値を
設定していったのですが SODEL と SOSPOL がよくわからず...
でも、それぞれ1ビットなので総当りで4回試せばどれかうまくいくはず!(´―`)
で、結局以下のようにするとI2Sフォーマットで出力されました。
i2cset -y 1 0x13 0x04 0x80
i2cset -y 1 0x13 0x05 0xa8  # 標準フォーマット、右詰、16bit
i2cset -y 1 0x13 0x05 0xa5  # I2Sフォーマット、16bit
で、ヘッドホンを繋いで聞いて見ると...ノイズだらけ( ̄~ ̄;)
いろいろいじってみましたが素人にはすぐ解決できませんでした。
なぜかオシロスコープのワニ口クリップを電源ラインに繋ぐとノイズが消えます。
もぅすぎ~(>_<)
仕方なく、USBのデジタル出力から調べてきましたが
おかしなところはありませんでした。
で、もう一度繋ぎなおすと...アレ~クリアになった!(;´д`)
最初との違いは机の上のケーブルをかたづけたくらいですかね。
ふ~む、ケーブルが散乱している上で回路組むとダメなのかもしれません。


PCM1716の音ですが...BU9480Fと比べると音質いいですね。
密度の濃い音って感じでした。








0 件のコメント:

コメントを投稿