アットウィキロゴ
javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。

解説

VS1011e VS1053b どちらも秋月で700円くらいで手に入る
MP3などなどのデコーダICです。IC名でググれば仕様書の翻訳を
してくださっている方のページにたどり着くので参考にしてください。
今回はVS1011eを利用したEASY MP3という基板を利用しています。
僕も参考にしまくりました。最終的には、先輩にまるなげして動かしてもらって
教えてもらった形ですが、とりあえず解説をまとめます。

使い方

解説にも書いたように仕様書の翻訳があるのでそれの分かりにくかったところ
をまとめることにします。
  • 通信方式が2つ!?
    SCIとSDIという二つの通信がでてきます。
    大まかにいえば
    SCI→コマンド用通信
    SDI→音楽データ用通信
    なのですが、SDIは使わなくても良いという設定もできます。
  • VS1002ネイティブ・モード(Newモード)とVS1001互換モード
    どちらのモードを使うかSCIでコマンドを送って決めます。
    どちらのモードでもSCIは同じ端子なので、リセットをかけたら
    そのあとSCIコマンドを送りどちらのモードを使うか決めます。
  • 初期化手順
    SPI2_Write()はSCK SI SOの端子と接続しています。
    
XCS = 1 //1はhigh XCSをhighへ
XRESET = 1
//MP3と関係の無い初期化をここに書く

XRESET = 0
delay_ms(50);//50ミリ秒待つ
XRESET = 1
while(!DREQ)//DREQがhighになるのを待つ(highになったら初期化成功)

XCS = 0;//SPI2_Writeは16bitのSPI通信(書き込み)です
SPI2_Write(0x0002);	// writeコマンド
SPI2_Write(0x0000);	// address 0
SPI2_Write(0x000c);	// data1
SPI2_Write(0x0000);	//VS1002ネイティブ・モード(Newモード)へ
XCS = 1;
while(!DREQ)

// mp3クロック切替
//EasyMp3に対応するクロックに切り替えます
XCS = 0;
SPI2_Write(0x0002);	// write
SPI2_Write(0x0003);	// address
SPI2_Write(0x009B);	// data1
SPI2_Write(0x00F7);	// data2
XCS = 1;
while(!DREQ)

 

// mp3ボリューム変更
//デフォルトではボリュームMAXなので変更
XCS = 0;
SPI2_Write(0x0002);	// write
SPI2_Write(0x000B);	// address
SPI2_Write(0x0055);	// data1
SPI2_Write(0x0055);	// data2
XCS = 1;
while(!DREQ)

 

XCS = 0;
XCS = 1;

 

while(1){//あとはMP3のデータを送るだけ
    while(!DREQ) ;
    SPI2_Write(MP3のデータをSDから読んでそのまま送る);
}

ぶち当たった問題点

  • 自分で作ったのが動かなかった理由
  1. SPI通信をソフトウェアで作っていたため速度が遅すぎたこと
  2. データを送る順番が、逆だったこと

  • 接続線
    ちょっと白と黒が見ずらい~
    
  • EASY MP3基板 ”先生いわく、5Vを入力しても壊れないようにかませているIC”が
    曲者で、ビットレートの高いMP3データを送ると止まってしまう。
    このICを取り除いて、基板を再構成したらビットレートの高い音楽データも
    流せました。
    後でその写真を載せます。まぁ、自慢げにこんなこと書いていますが、この問題
    発見したのも解決したのも先輩です。
    大感謝
    下にこのICとの初対決の時の写真を載せておきます。
    見ればわかると思いますが、初対決は完全にKO負けでした。

戻る

最終更新:2010年01月28日 10:05