LoginSignup
1
0

vs1053bをスタンドアロンで使ってみた

Last updated at Posted at 2023-12-30

qiitaを眺めていたところ、以下の記事を見つけました。

以前秋月の処分品でvs1053bのDIP化基板モジュールを購入して部品箱にしまってあって、使い道を考えていたのですが、手持ちの部品で作れて、ちょうどいい感じです。

2023年暮れの時点でこの処分品は在庫がまだあり、チップのみが700円に対してDIP化基板モジュールが420円ととってもお徳です。

Amazonでもvs1053bを使ったモジュールは千円以上します。

ブレークアウト基板より単体チップのほうが配線は面倒ですが、融通がききます。

いろいろ思案して両面のユニバーサル基板を使うことも考えたのですが、表面にジャンパーを張るためには片面のほうが都合がよいです。また変換基板が大きく、部品も多いので、秋月のC基板では無理で大きなユニバーサル基板にしました。

vs1053bの電源は1.8v+2.8vが標準ですが、1.8v+3.3vでも動作可能です。SDカードが3.3vなので、この組み合わせにします。1.8vをLM317(100mA)で作り、3.3vをXC6202(150mA)で作る事にします。LM317は220Ω,100Ωにしました。

電源は5Vにしました。これはこれまで作ったDACのI2Sにそのまま送り出せるからです。

Adafruitのブレークアウト基板を参考にして、AVCCとIOVCCの間と、AGNDとGNDの間にはおまじないにフェライトビーズを入れてあります。

ストックしてあったSDカードソケットは裏にボッチが二つあり、一つは基板の穴に入れて、片方が入るようにユニバーサル基板に穴を開けてはめ込み、四隅をジャンパーにハンダ付けして固定しています。

DIP化基板モジュールは交換することなどないためソケットなどは使わず、直にユニバーサル基板にハンダ付けしました。足が邪魔にならないように少し浮かせた状態で付けてあります。

ピンヘッダーを短く切ってもいいかもしれませんが太いやつを48本もきるのはちょっと面倒です。

vs1053bにはI2S出力があり、スタンドアロンでも使えるので、いつものI2Sコネクタも用意しておきます。

12.288MHzの水晶は部品取りしたものを使いました。パッケージには12.2EF7Nとしか書いてありませんが、周波数カウンターでI2Sのマスタークロックを見たところちゃんんと12.288MHz近くになっていました。

SPI flashはたくさんストックがあるのですが、なにかのジャンクから発掘され1MバイトとFreeBSDでは使い道のなかったMX25L8005を変換基板に貼り付けて、基板用リードフレームで足を生やします。チップが汚れていて、間違えて逆につけてしまいました。

IMG_20231230_094902.jpg

flashは当初ファイルをコピーしてMacのflashromで焼いていたのですが、なかなかうまくいかなかったので、VSIDEから焼くようにしました。

VSIDEから焼く時は、bootのジャンパーを外してSDカードを抜いて電源を入れてVSIDEのPrommer/Flash Utilityを開きます。

1Mバイトも必要ないので、128KバイトのST 25P10VPに変えました。

VSIDEでCOMポートを変更するダイアログはstartした後にターゲットが見つからないと開けるのですが、COMポートは8までしか設定できず、USB FTDIのチップはCOM23になっていたので、solutionファイルを秀丸で開いて編集しました。

image.png

デバッグログは9600bpsで確認できます。

ヘッドフォン端子はつけないつもりだったのですが、確認を簡単にできるようにつけました。

再生が出来るようになったのですが、音がおかしいです。

VSDSPの掲示板に書き込んだところ、もうお休みにも関わらずコメントをもらえました。SCI_CLOCKFがおかしいということのようです。

なんからの理由で、SCI_CLOCKFが正常に設定されないようです。

またMyMain()の中で強制的に設定する方法を試したところ、最初はうまくいきませんでした。

これはplayer.imgを指定して焼いていても実際に焼かれるのはeeprom.imgでこれがrecoder.imgから作られた物が残っていて、変更が反映されないためでした。

当初チップのバグなどを疑いましたが、VSIDEのビルドに起因する問題のようです。VSIDEはv2.48でした。

どうにかちゃんと鳴るようになりました。

I2S接続のFN1242,PCM5102は鳴りましたが、PCM1795はだめでした。DAC側の問題でしょうか?

UIを作れるほどメモリなどに余裕はないと思われ、UI部分だけ外部で処理するのがよさそうです。方法を考えてみたいと思います。

ちょっと古いですが、データシートを翻訳された方がいました。

MP3のプレーヤーであればESP32単体でも作れるようですがESP32のI2Sにはマスタークロックがなく、FN1242などのDACが使えないので、マスタークロックがあるvs1053bは貴重です。

FreeBSDのAtherosでもmpg123を動かしてmp3を再生できますが、vs1053bの方がお手軽です。ネットのストリームはmpg123でメディア(SDカード)はvs1053bと使い分けるのが良さそうです。

9600bpsのシリアル接続で制御可能でstandalon.pdfにはPlaying modeとFile modeというの書いてあります。通常はPlaying modeでfキーを入力した後、曲が終了したところでFile modeになります。File modeのプロンプト>になり、^jを入れたところで処理されます。Playing modeはPlayCurrentFile()の実行中にUserHook()で処理され、File modeはMyMain()の中で処理されています。

消費電流はSDカードにもよるのかもしれませんが、単体で40mA以下で、FN1242をつないだ時に60mAくらいでした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0