放課後の電子工作 HOME > SDカード・トランスポートを作ってみました > Timpy Rev7.0"改" |
2009年7月19日 更新 |
SDカード・トランスポートを作ってみました −その1−
Timpy Rev7.0"改"
|
SDカード・トランスポートを 作ってみました −その1− Timpy Rev7.0"改" 2009年4月 完成 |
Timpy Rev7.0を改造し、VS1053bのI2S出力機能を利用したSDカード・トランスポートです。 |
*記録メディア : microSDカード(SDHC非対応)
*対応フォーマット : FAT16
*対応ファイル形式 : RIFF WAVファイル
*対応サンプルレート : 48KHz
*対応ワードサイズ : 16ビット
*出力信号形式 : I2S
動作しました
中央の小さな基板がTimpy Rev7.0"改"です。 |
|
Timpy Rev7.0"改"
改造前のTimpy Rev7.0はこちらです。 |
|
ヘッドフォンアンプ
I2S信号のモニタ用に簡単なヘッドフォンアンプも作ってみました。 |
*VS1053bでのI2S信号出力
データシートにしたがってレジスタを設定したところ、何の問題も無くすんなりとI2S信号が出力されました。すばらしい。
ところが、やはり油断は禁物です。スイッチの操作時にノイズが出るのですが、その直接の原因がわかりません。
・・・いろいろ調べた結果、VS1053bのバグと判明しました。ソフトウェアリセットをかけるとGPIO_DDRレジスタがクリアされるため、I2S信号出力が一時的に途切れてしまうことが原因でした。和訳の時に見ていたはずなのですが・・・すっかり忘れてました。(汗)
幸いなことにVS1053bはVS1011eと違って曲間でのソフトウェアリセットが不要です。起動直後の1回を除きソフトウェアリセットが実行されないようにファームウェアを改修しました。同時にソフトウェアリセットを必要とするビープ音生成機能を削除しました。でもビープ音が無いと操作モードが確認できなくなるので、モニタLEDの点滅パターンを変化させることでそれの代替とするようにしました。
*サンプリング周波数48KHzの無圧縮PCMデータ(WAVファイル)再生
上の写真の通りハードウェアを製作し、Rev7.0のファームウェアに若干手を入れたものを作って書き込んで、ワクワクしながら48KHzサンプルのWAVファイルを再生してみたところ・・・見事に音が出ません。撃沈です。なんとこの時点のファームウェアでは、サンプルレート16KHz程度のデータ転送能力しか無いことがわかりました。MP3やOgg
Vorbisなどの圧縮データなら余裕で再生できるのですが・・・無圧縮PCMデータ恐るべしです。そういえば昔作ったプレーヤの時、カードとマイコンはワードサイズのパラレル接続でしたし、マイコンにSPIなんて付いてなかったんでシフトレジスタでパラシリ変換してたような気がします・・・これはピンチです。
転送レートを3倍以上上げる必要が出てきました。3割ではなく3倍です。24.5MIPSのC8051F316で果たして転送可能なのか?と思いながらファームウェアのソースを眺めていたところ・・・改善の余地があることに気がつきました。
アセンブラを駆使してマイコンの能力を引き出すのは、難しいパズルを解くような楽しい作業です - 仕事でなければ。早速処理方法を変更し、何とか48KHzサンプルのWAVファイルが再生できるようになりました。
*果たして結果は・・・
Bunpeiさんのお知り合いの方によるブログをご紹介します。
・Feastrexスピーカー、キノコと健康・ひとり言 : 高音質MicroSDプレーヤ
・西野和馬のオーディオ西方浄土 : 酒仙坊さんのデジタルオーディオ研究 bunpeiさんとの共同レポート
残念ながら、私自身"耳が雑"なので自分で評価ができないのです。Bunpeiさんにお渡しする前、もしかしたら"なんだこりゃ"という感じの箸にも棒にもかからない代物に仕上がっているのではないかとひやひやしていたのですが、なんと、予想をはるかに超えた高評価で驚きました。Bunpeiさんの目論見が見事的中です。
(準備中)
(準備中)
Copyright 2009 Chiaki Nakajima.
All rights reserved.