- 締切済み
VS1011eについて
<ハード構成> ・CPU:PIC24FJ64GA002 ・デコーダIC:VS1011e ・SDカードからWAVファイル中のデータを、読出し そのデータをSPIインターフェースにて、VS1011eに転送 (転送クロック(SCLK)は、4MHzに設定しています。) <WAVファイル:SIN1K.WAVの記録仕様> ・1536kbps, 16bit, ステレオ, 48kサンプル, PCM ファイルサイズ:576kB, 再生時間:3.0秒 上記に示す構成で、1kHzサイン波のWAVファイルの再生を 試みていますが、再生音が断続的かつノイジーで、 本来の再生時間は、3.0秒のはずが、7秒位かかってしまいます。 また、VS1011e内蔵のサイン・テスト・モードを5kHzに設定して 動かすと、ヘッドフォン出力に5kHzの綺麗なサイン波が出力され ピー音が鳴っています。 今迄この他に試した結果は次の通リです。 (1) SCI(コマンド転送)は、ライト/リードともに問題ないことを 確認しています。(BASS及び、VOLUME設定値をSCIで書込んだ 後、SCI_BASS, SCI_VOLレジスタを読込むと期待通リの値が読める。) (2) SDI(データ転送)は、WAVヘッダ情報の、ライト/リードに関しては 問題ないことを確認しています。 (デコード中に、SCI_AUDATA, SCI_HDAT0, SCI_HDAT1レジスタを 読込むと、それぞれ期待通りの値(AUDATA=0xBB81(48001), HDAT0=0x7761, HDAT1=0x7665)が読める。) (3) VS1011eが破損しているのではと思い新品に交換しましたが 症状は同じです。 私の推定ですが、WAVヘッダは正常にSPI転送できているのに、再生音 がおかしくなるのは、PCMデータ部になると、SCLKとSIの同期が微妙にずれて くるのではないかと考えておりますが、何せ高速オシロが無いのでその辺の 検証は出来ません。(フリーのソフトオシロ2で、SCLKを極端に低速にして SIとのタイミングを見るとちゃんと立ち上がりに同期しているように見えます。 なんとか、オシロ以外でVS1011e側でのPCMデータを見る方法はないのでしょうか?) 以上のような状況なのですが、 同じような現象に遭遇された方がいらっしゃいましたら ご一報いただければ幸いに存じます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- teretou3
- ベストアンサー率100% (2/2)
使用マイコンのリビジョンを確認したところ3043でした。 参考のサイトの方は3043ではMP3ファイルを再生出来ない。 当方はMP3は再生できるがWAVファイルは再生出来ない。 ロット違い等によってもバグが違うのかもしれません。 そんなことがあるのかは疑問ですが... お手あげです。 ピン配置の同じマイコンへ変更を検討されたらいかがでしょうか。 24HJ12GPへの移植が可能で容易なら助かります。
- teretou3
- ベストアンサー率100% (2/2)
列記された状態での当方の症状です。 (1) WAVファイルの再生時間が本来より長く・・・ (2) 問題のWAVファイル:16bit, ステレオ, 48kサンプルは・・・ <当方> CD-DAフォーマットしかテストをしていませんが、SCLKを125kHzから4MHzまで設定しても楽音再生はできず(音は鳴るが再生時間が冗長)。 (3) MP3ファイルは再生できません。・・・ <当方> MP3ファイルの楽音再生はSCLKが4MHzでは出来ず。 2MHz以下250kHz以上ではノイズや途切れは発生せず、再生速度も耳による確認ですが、他の再生機と遜色は無しです。
お礼
2回目のご回答ありがとうございます。 MP3ファイルは問題なく再生できているんですね。 当方は肝心のMP3ファイルの再生ができません。 2Mでも250Kでも駄目で前にも書きましたが 166kHzまで下げると突発ノイズが激しいですが 楽音が姿を現します。 再生できているWAVファイルをWAV→MP3変換ソフトで ビットレートの指定をいろいろ変えながらMP3ファイル に変換し試してみましたが変換後のどのファイル 再生でも状況は変わりませんでした。 またWEBサイトの電子工作プログなど検索してみると PIC24FJ64GA002のバージョンによってSPIのバグが あり旧バージョン(2008年版)だと問題ないのに 新バージョン(2009年以降)だとこの手の問題が 発生する旨の記事がありましたが旧バージョンのPICは 持ち合わせしていないしロット指定の注文も出来ない といわれ試してはいませんが... 尚、参照先のURLは以下です http://sfukuda.at.webry.info/201008/article_14.html
- teretou3
- ベストアンサー率100% (2/2)
同じCPUとデコーダICでプレーヤを作製した者です。 同じ症状がでました。WAVファイルのヘッダ情報は読書きできるが再生は不可。 MP3ファイルは再生できます。 自分なりに調べましたが原因は分かりませんでした。 私も原因を教えていただきたいです。
お礼
ご回答ありがとうございました。 同じ症状が出た件、了解しました。 質問を投稿した後も、自分なりに調べましたが未だに原因は不明です。 ただ次のことが新たに判ったので列記しておきます。 (1) WAVファイルの再生時間が本来より長くなってしまうのは、SCLK 周波数が高かったのが原因していたようです。 (4MHzを1MHzに落したらOKになった。) (2) 問題のWAVファイル:16bit, ステレオ, 48kサンプルは再生不可 ですが、以下のフォーマットのWAVファイルは再生できます。 ・8bit, モノラル, 44.1kサンプル(時々波形崩れ確認) ・8bit, モノラル, 48kサンプル(時々波形崩れ確認) ・16bit, モノラル, 22kサンプル(楽音再生) ・8it, ステレオ, 22kサンプル(楽音再生) (3) MP3ファイルは再生できません。 ただし、SCLKを4MHzから166kHzまで下げると、それまで早送りの ように聞こえていた楽音が正しい再生時間になり楽音として判別 できるようになりますが、突発ノイズや途切れが発生しとても実用 にならない状態です。 以上の通り現在も上手く行ってませんが、何かお気付の点があったら 教えていただきたいです。 最後に返事が送れて大変申し訳なかったです。
お礼
3回目のご回答ありがとうございます。 私も紹介した例の記事には、矛盾があり半信半疑です。 試せるのであればと思ったのですが... teretou3さんの言うように、ピン配置の同じマイコンが あるようなら、移植して試すというのも1つの手段かなとも 思います。
補足
CPUを変更しての実験はしてませんが自分なりに原因を調査し、 全てではないですが解明しましたので今までの問題点と原因等を 以下の通りまとめてみました。 1. 問題点と、その原因、対策を解明した順に列記 (1) 問題点1: SIN_TESTとWAV再生で、時々音が鳴らない 原因: PIC24Fの、SPIタイミングがきわどい為の誤動作 SCLKのSIに対するセットアップ時間が規格上 ギリギリ (VS側の要求-26nSminに対し、PIC側の SCLKの立上がりからSDOデータ出力有効までの 時間規格は、30nSmaxなので要求を満たさない) 対策: SCLKラインに22pFのコンデンサを入れSIに対し SCLKエッジの位置を遅らせた Cだけだと波形が鈍るだけなので、安定化のため 波形整形も兼ねHC4050のバッファICを挿入 尚、他のSPI信号(SO,SI)にもタイミングバランスを 取る為、バッファICを挿入する (Cだけでも動くことは動く) (2) 問題点2:SCLK=4MHzでは、WAV, MP3ともに再生時間が 合わない 具体的には、WAVは再生時間が長くなり、逆に MP3は短くなって早送りのような音になる (WAVに関しては、SCLKをIMHzまで下げると 再生時間があうようになり再生音も正常になるが MP3はさらに166kHzまで下げないと再生時間が 合わず 突発ノイズがひどく実用にならない 原因: 回路図CADの、新規シンボル作成時、VS1011eの シンボルに32pinのTESTpinが抜けていたことに気 が付かず、配線もしておらずTESTpinがオープン になっていたため外部ノイズでこの端子に割り込み が入り突発ノイズが発生していた模様 またTESTピンがオープン時に VS1011eの初期設定が終了した後、DREQをテスター で測定すると1.48V(また周波数レンジでは何故か 6.14MHzを示す)しかなくDREQが正しく出力されて なかったせいでDREQの状態を正しく判断できず PICからのデータ転送タイミングがずれていたため 再生時間が合わなかったと考えられる 対策: VS1011eのマニュアルに従いTESTピンをDVDDに 接続した その結果 (1) SPI転送速度4MHzで、MP3ファイルが再生できた (2) SPI転送速度4MHzで、WAVファイルが再生できた(16bit*2*48k除く) (3) アイドル時の、DREQのレベルが正常に3.23Vまで上がった (3) 問題点3:アイドル時のノイズが多い 原因: DGNDと、AGNDの配線に問題(両者分離されておらず 結果1点接続になっていなかった) 対策: 配線引回しを修正しデバイス直近で1点接続 その結果アイドル時のノイズは殆ど気にならないほど 減少した (4) 問題点4:16bit, ステレオ, 48kサンプルのようにデータ量の 多いWAVファイル再生が断続的になる 原因: ビットレートが増えるほど、1cycle当りのバイト数が 増えるのでPIC側のBufferサイズ:256Byteの容量で 1度に転送できる1kサイン波のサイクル数が減少する ためにVS1011e側への新規データの転送が間に合わ なくなって途切れが発生すると思われる 試しに、現在のハード+ファームで再生できるWAV ファイルの限界ビットレートはいったいどの位なのか 様々なビットレートの1kHzを発生するWAVファイルを作り実験してみた → 結果、限界は512Kbps(8bit,ステレオ,32k)であった 対策: 直列処理でなくダブルバッファ等による並列処理を検討する 例えばバックグランドでSDリードしフォアグランドでSPI転送 するイメージを考えているが次期テーマにしようと思っ