|
実験1
インターフェース誌2014年12月号の特集第8章の記事に従い、PICからUSBメモリの読み書きができることを確認した。
|
|
実験2
上記記事にマイコン用ファイルシステムFatFsを組み合わせてUSBメモリ上のMP3ファイルを再生できるかテストした。
MP3デコーダはSparkfunのVS1033ボード(SFE-BOB-10608。残念ながらこのボードは廃番になっている)。
|
|
方針とブロック図
- 実験2で再生できるのは低ビットレート(32kなど)のMP3だけで、中ビットレート(128kなど)では無理だった
- しかしMP3ファイルを空読みするだけならば十分な速度で可能である。
- USBメモリの読み出しとMP3デコーダの制御を1個のPICで実行するのは負荷が大きすぎるようだ。
- そこでPICを2個使い負荷分散してみることにした。(実験なしで製作するのは賭だった)
結果的に最も苦労したのはPIC間のSPI通信だった。
|
|
回路図
|
|
プログラム
- PIC18部分のプログラムはCCS社のPIC18用コンパイラ(PCH)で開発した。
- PIC24部分のプログラムはXC16で開発した。
- 両者を含んだMPLABX IDEのプロジェクトファイルはこちら。雑誌記事から取ったソースコードを勝手にアレンジして公開しちゃってますが。
- 左図はPICのピン割り当て。
|
|
仕様
- ランダム再生ではディレクトリをランダムに選択して、その中のMP3ファイルをファイル名の順に再生する。
- 選択再生ではディレクトリツリーをたどっていき、MP3ファイルの存在するディレクトリを選択するか、
その中のMP3ファイルを選択して再生する。
- ディレクトリツリーをたどるのにUSBメモリ中のファイルシステムを直にたどるのではなく、ディレクトリ構造を記述したファイルを使う。
- FatFsは 8.3形式ファイル名で使う。LCDに表示する名前などはアプリケーションで管理する。
- ディレクトリ名・ファイル名を整形し、ディレクトリ構造ファイルなどのデータファイルを生成するプログラムをWindows上で作成した。
(VC++2010で作成。USBメモリのルートディレクトリでDIRMP304.exeを実行する。実行後のディレクトリ構造のイメージ。データファイルのファイル構造。)
- USBメモリはTOSHIBAの64GB(TNU-B064GK)の場合だけ動作確認した。EPはIN=1, OUT=2をハードコードしている。
|
|
実装
|
|
インプレッション
- USBに関してほとんど理解しないまま完成してしまいました。インターフェース誌に感謝です。
- SDカードと比べてUSBメモリはどのPCでも読み書きできるので便利です。
|