【投稿する】
折りたたむ
毎度同じ写真で恐縮です。SD WAVプレイヤーに、予定していたすべての動作を盛り込むことができました\(^o^)/一曲戻し、一曲送り、現在曲リピート、一時停止。出力I/Vバッファはオペアンプ(NJM3403)とトランス(ST-71)の2系統選択可。PIC32MX230F064B+PCM1795です。次回の三土会にもっていきます。
遂に完成しましたね!おめでとうございます。では、手作りSDプレーヤーを聞きに次回三土会に参加したいと思いま〜す。
ありがとうございます。秋葉原でお会いしましょう。
続報です。DAC出力のI/Vに、オペアンプの代わりにトランスをつけてみました。入力センタータップ付きのST-71です。低域がちょっと痩せてしまいますがまあ良好です。20Hzでおよそ-2dBです。
電流出力DACのI/V変換にオペアンプを使わな方式はオペアンプ嫌いな私にピッタリです!トライしてみたいです。
そうなんです。トランスにするとオペアンプをつかわないので片電源で済みますし、DACの中身まではわかりませんが見える部分はぜんぶ無帰還でいけます!フィルタ用のコンデンサもいりません。PCM1794のUSB-DACをもっているのですが、製品に手を入れるのはちょっともったいない感じがするので今回のようなSDプレイヤーをPICでゼロからという長旅を選びました。11月の三土会では、オペアンプとトランス出力の聴き比べを発表しようかと思っています(^-^)
いまだにやっています。SDだけではなくUSBも使いたいと思いあれこれやっていましたが、USB2.0のフルスピードではWAVの転送が間に合わないようで、遅くてぼろぼろの音になってしまいました。USB2.0ハイスピードならいけると思うのですが、現在使用中のPIC32MXでは対応していません。USBと44.1のWAVの両立はなかなかやっかいで、44.1には11.2896のxtalを使うところですがUSBは48MHzを要求するので、12MHzのxtalを使用してPICのPLLで近似値の11.28893を生成して使います。この場合は0.006%の誤差が出るので気持ちよくありません。今回はUSBはあきらめて、11.2896のxtalに戻してスッキリしたいと思います。
音は出たものの、再生するたびにL/Rがランダムに入れ替わるという現象が出て、解決に4日もかかりました(^-^;FIFOへの送り出しをタイマー割り込みでやっていたのですが、曲の先送りとのタイミングが悪いとLRのデータがLRCKに対して逆になることがあるみたいです。そこで曲のあたまの最初のデータをFIFOしてる間は割り込み禁止にしてみたところ解決したようです。
数年前に入手してあった、ステレオ誌の付属USBヘッドフォンアンプですが、裸ではかわいそうなので、こちらもケーシングタカチのYM−100がピッタリです。(ちょっと窮屈かな)ネットで検索して、コンデンサとかは小改造しておきました。
裸では実験も試聴も進まないので、ケースに入れました。タカチのYM−200で、赤く塗装し液晶も赤をチョイス電源は、アンプ側はDC24Vのスイッチング電源、制御マイコンはトランスで、AMPICとの間は、I2Cのアイソレータ経由でつながってます。I2Sも、アイソレーター入りソフトは半完成状態です。50MHzのMCLKも測定できてましたので、LRCLKとMCLKから、fsの計算もできて、自動で内部を設定できるようにできました。
APGEEで音でました。まだまだ、マイコン側での処理が必要なことが判明してます。入力周波数と、fs監視して、内部の定数を自動で弄るような機能もないとお手軽には鳴らせません。
音が出ましたか〜おめでとうございます!DDXはやたらレジスタが多くてマイコン側でする事が多くて面倒ですよね。普通のDACみたいにハードモードが有れば普及したのでしょうね。スピーカーからのノイズはどんな感じですか?
ぜーんぜーーーーん聞こえません。大音量で鳴らし続けておりますが、気になりませんねぇ!周波数を特定する、ソフトを作成中です。PIC単体では、50MHzまでの、周波数測定は無理かなぁ?192KHzの384fsは73MHz超えになるので、外部にプリスケーラーを投入する予定です。
やはり基板にすると出ませんか〜良いですね!私はDDXをDACに使う事を諦めましてDSP機能だけ使う事にしまてDDXに付けるDACを検討中です。え〜周波数カウンタを作りますか!レートの判別なら周期を測れば十分かと・・・
追加のプリスケーラなしで、PICのみで、80MHz程度まで計測できました。これで、LRクロックの32,44.1,48,88.2,96,176,192KHzの判定とMCLKも判定ができたので、自動でDDXiの内部設定レジスタを更新できそうです。なせば成る、なんとかなるもんです。
1KHz sin波を録音したSDメモリーのwavファイル再生ができました\(^o^)/PIC32MX230F064B+PCM1795
自作SDメモリープレーヤーに少しづつでも確実に近づいていますね!PICは4,5年前に使ったのを最後に使っていませんが最近のPICは随分進化したみたいですね、AVRの環境がどうにも使えないのでまたPICを使ってみようかと思い始めています。
>内田さんPIC1個と発振用と同期用の汎用ロジック2個、それにD/Aのチップでできることがわかったのでデジタルオーディオの楽しみが広がりそうです。岩野さんからご指摘がありましたが、FIFOへの送り出しにコツがいりますね。さきほど2チャンネル分のI/V出力バッファをつけて無帰還電流ヘッドホンアンプで時間の国のアリスを聴きました。感動。
PCM1795へのI2Cのコマンドが通ったようで、サンプル音源の時間分のノイズが出るようになりました(^-^;FIFOがうまく送れていないようです。DAC差動出力直結のクリスタル(セラミック)イヤホンでモニタしているので、遠い昔のゲルマラジオを思い出します。
PIC32MX230を使ってSDカードから時間の国のアリスのデータを読み出すところまで来ました。次はPCM1795の設定とデータ送りです。
私も、PICで、SDカードから、WAVEファイルを読みだして、内蔵のD/Aで再生する機器を作ったことがあります。肝は、SDからまずはPIC内臓のメモリをFIFOとして、なるべく多くバッファリングして、タイマー起動でD/Aに送り出を途切れさせないようにしないと、SDの読み出しがまにあいませんでした。赤いPICKIT3は、もどきですね(爆)、私も数個輸入してあります。赤いPICKIT2もてにいれてあります・・・(超爆)
あ、やっぱり転送速度を注意しないとダメなんですね。今回はPICをLチカから始めて、C言語も初めてなのでとうぶん楽しめそうです。PICKITは3の上を行くKIT3.5です(笑)安くてちゃんと使える中華製品はとてもたすかります。
?削除方法
閉じる
不適切動画の報告