ホームページ>H8をMacで>その6・インターネットラジオを聴きたい(前編)
その6・インターネットラジオを聴きたい(前編)
目次
目的と経緯
以下は、マイコンボードでインターネットラジオを再生することを模索した際の覚書です。
暫く前ですが、Mac上のiTunesでインターネットラジオを聴いていたときに、できることならスタンドアロンで鳴らしたい(注1)と思い、専用ハードを探してみたのですが、意外と無くて、引っかかったのが、BBShoutというキットでした。
注1:理由は、iTunesをずっと動かしっぱなしにしておくのが邪魔臭いことと、それなりのステレオセットで音を出したいということです。
これの仕様を見ると、H8/3069Fマイコン+カニ(LAN)チップ+MP3デコーダで、ウチのH8ボードにMP3デコーダを追加しただけの物のように見えます。
調べてみると、秋月で(上記製品でも採用している)MP3デコーダのVS1011Eが¥600と、初期投資もそれほど掛からずに実現できるんじゃない?と安易に考えたのが、運の尽き。
結局、えらい目(と散財)に遭うこととなりました。
(まぁ、お陰でマイコンと周辺ハードの動作について、少しは理解が進んだ?ようですが…)
回路図と部品を入手する
VS1011EはVLSI Solution社の製品で、仕様書は以下の公式サイトからダウンロードできます。
参考サイト(1):VLSI Solution-Download
また、同仕様書の日本語訳が、以下のサイトで公開されています。(物凄く助かりました。)
参考サイト(2):VS1011E日本語データシート私家版
回路図は、仕様書の中にサンプルが記載されていますので、これに従いました。
また、VS1011Eには動作モードとして「ネイティブモード」と「互換モード」の2種類がありますが、サンプルが「ネイティブモード」なので、ウチでも「ネイティブモード」を採用しました。
なお、VS1011Eの動作電圧は2.5〜3.6Vですが、以前製作したSDカード用の3.3Vを流用しています。
以下は部品のリストです。
品名 |
規格(型番) |
個数 |
購入店 |
備考 |
MP3デコーダ |
VS1011E |
1 |
秋月電子通商 |
QFP48 |
ロジックIC |
TC74VHC244F |
1 |
秋月電子通商 |
5個入 |
水晶振動子 |
HC49/U |
1 |
千石電商B1F |
12.288MHz |
電解コンデンサ |
10μF |
2 |
千石電商B1F |
|
積層セラミックコンデンサ |
33pF |
2 |
千石電商B1F |
|
積層セラミックコンデンサ |
0.1μF |
3 |
千石電商B1F |
|
マイラコンデンサ |
0.01μF |
3 |
千石電商B1F |
出力用 |
カーボン抵抗 |
100KΩ |
5 |
千石電商B1F |
1/4W 品 |
カーボン抵抗 |
1MΩ |
1 |
千石電商B1F |
1/4W 品 |
金属皮膜抵抗 |
20Ω |
3 |
千石電商B1F |
1/4W 品 出力用 |
IC変換基板 |
Q048 |
1 |
千石電商1F |
VS1011E用 ダイセン電子工業製 |
ユニバーサル基板 |
ICB-293 |
1 |
千石電商1F |
サンハヤト製 |
信号伝達コネクタ用ピン |
2550-10GT |
6 |
千石電商1F |
ピン4個で1セット |
ピンヘッダ |
1x40 |
1 |
千石電商1F |
ボード - 変換基板 接続用 |
ピンヘッダ |
1x24 |
2 |
千石電商1F |
ボード - QFP48 接続用(標準/細口) |
3.5φミニジャック |
- |
1 |
門田無線電機 |
ステレオ |
足 |
15mm |
4 |
門田無線電機 |
|
注2)ロジックICの変換基板は、SDカード組み立て時に余ったものを流用した。
組み立てる
部品の取り付けは、ユニバーサル基板に行いました。
VS1011EとTC74VHC244Fは表面実装用なので、変換基板に取り付けます。変換基板と基板は、ピンヘッダで接続しました。
また、マイコンボードとの接続はI/Oボード側のピンを利用し、信号伝達コネクタピンにて行いました。
ここで、最大の難関は、VS1011Eを変換基板にハンダ付けする行程です。
秋月のVS1011Eは、QFP48という、ピンのピッチが0.5mmの表面実装用パッケージです。
(以前は変換基板に取り付け済の物も扱っていたようですが、購入時点ではありませんでした。)
今までこんな狭いのは経験がないため、まずはネットで調べてみましたが、個人でQFPをハンダ付けしている方はたくさんいらして、そのノウハウを公開している方もいらっしゃいます。
なかで、自分でも出来そうなのは「ベタ付け後、吸い取り線で余分なハンダを吸い取る」というものでした。
実際やってみると、思ったよりはスムースに出来た感じです。(あくまで、思ったよりは、ですが。)
ただ、以下のサイトでも解説されていますが、フラックス成分が抜けてしまうと、どうやっても吸い取れなくなり、もう一度ハンダを盛ってからやりなおし、となりました。
参考サイト(3):ELM - MP3プレーヤキットTIPS(QFPの半田付けのコツ)
ハンダ付け終了後はブリッジや未接続がないか、チェックする必要があります。
さすがに目視だけでは心もとないので、ここはテスターの導通チェック機能を使って行いました。
結果、2箇所程ブリッジがあったのですが、偶然(笑)にもVDD同士,GND同士だったため、そのままにしておきました。
チェック後に気づいた(先に気づけよ>私)のですが、手持ちのテスターの、導通テスト時の電圧を調べてみたところ、3V出ていました。
慌てて調べた結果、これだけ出てしまうと、チップにダメージを与えることがあるようです。
LSIのチェックには0.5V程度のテスターか、専用の導通チェッカーを用いるべし、ということのようですが、完全に後の祭り。
(実際、後々、このことが不確定要因の一つになってしまったし…トホホ…)
ここを過ぎれば、後は標準的な作業なので、特に問題なく完了しました。
マイコンボードと接続する
VS1011Eとマイコンとの接続ですが、当初は軽く考えていたものの、実は結構厄介です。
というのも、秋月のH8/3069Fボードは「モード5」で使うことが推奨されています。
仕様書で調べてみると、モード5では純粋な入出力ポートとして使えるのが「ポート4」ぐらいしかない、ということが分かりました。
しかも、ポート4には既にI/OボードのLEDとLCDが接続されています。(というか、上述の制約から、必然的にこのポートに割り当てられたと思われる。)
試しに、いくつかのポートについて、信号のオン/オフを繰り返すテストプログラムを用い、ボード上の当該ピンにテスターを当てて調べてみましたが、いずれも期待通りに動作しませんでした。(注:あくまで私の理解と手持ちの(貧弱な)機材の範囲内の話であり、間違っている可能性もあります。)
ということで、とりあえずポート4を使うことにし、問題が起きれば(モード7で使うことも含め)考えることにしました。
(ただし念のため、I/Oボードのジャンパーは全て外しておきました。)
余談ですが、当初、汎用の入出力ポートで、どうやってクロックを実現するんだろうと思っていたのですが、これはクロックに割り当てたレジスタの値をソフトでオン/オフすることで、自前でクロック(に相当する信号)を生成するんですね。組み込みの世界では一般的なことなんでしょうか。
(ソフトで実現する以上、厳密にはオンとオフの時間が同一にならない気もしますが、要はエッジが形成されればいい、ということなのでしょうか。)
追記:その後、ポートAも入出力ポートとして使えることが分かりました。こちらの方が良さそうです。
(サンプルソースは、P4をPAにReplace AllすればOKの筈です。)
MESのアップデート
MESのバージョンは、従来2.2r4でしたが、今回の実験では外部サーバに対してTCPアクセスするので、以下のサイトの警告に従い、最新版(2.3r18)にアップデートしました。
(注:ROMへの書き込みはWindows環境で行いました。)
参考サイト(4):TCPクライアント - やまねこのマイコン実験室 - livedoor Wiki(ウィキ)
ところが、いくつかの不具合に見舞われてしまいました。
- 自作ソフト(Mac-H8IDE)で、シリアル通信がハングアップする。
- (以前動いていたアプリを含め)標準出力が文字化けする。
- SDカードを認識しない。
このうち、上2項目は、
- シリアル書き出し時、1バイト転送ごとに80msec程のディレイを設ける。(それでも時々不可解な動きをしますが、まずまず実用範囲内)
- コンパイル時に「スタック」オプションを追加する。
で解決できましたが、SDカードについてはどうもダメなようです。(OS側の不具合らしい。)
SDカードは使えなくても今回は何とかなるので、とりあえず先送り状態です。
動作テスト(失敗)
VS1011Eは製作例も多く、ソフトウェアも公開されています。
参考サイト(5):電子工作室
参考サイト(6):電子マスカット【電子工作・エレクトロニクス工作】(MP3プレーヤー_1/12)
参考サイト(7):電子工作: Network Appliance 2 rev.b
それらを参考に、まずは内蔵のSine波出力機能を使って音を出すテストプログラムを書いてみました。
ですが、音が出ません。
VS1011Eに対しては、制御用の「コマンド」とMP3等の「データ」を送り込むことになるのですが、コマンドの方は、レジスタの値を読み出せるので、書いた後に読んでみると、書いた値が戻ってくるので、正しく書き込めているようです。
一方、データ(Sine波出力の指示はデータとして扱われる)の方は読み出せないので、どうなっているかは直接調べられません。ただし、正しいデータを処理すると、対応するレジスタの値が変化するようなのですが、データ書き込み後のレジスタを調べてみると、変化していません。
データの転送は、然るべきチップセレクト信号を操作してから行うのですが、信号のオン/オフを繰り返すテストプログラムを書いて、チップの当該ピンにテスターを当てて調べてみると、期待通り動作しています。
このことと、コマンド系が正常動作していることから、どうも、チップ内部でデータを受け取れていない感じです。
(イヤホンからは軽いノイズが聞こえるので、出力側が死んでるということでもなさそう。)
こうなると、導通チェックが気になります。あのときに、チップ内部が死んでしまったのだろうか…
動かない原因として、考えられることは、
- VS1011Eが壊れた?
- ソフトウェアが正しくない?
- I/Oボードとの相性(入出力ポートのバッティング)?
- OSとの相性?
感触としては、チップが壊れた、が一番可能性が高そうですが、何せ要因が多すぎます。
ということで、手っ取り早く要因を減らすため、もっと確度の高いハードで実験を継続した方がよさそうです。
EasyMP3 モジュール
EasyMP3 モジュールは、ストロベリー・リナックスが発売している、VS1011Eを採用したキットです。
参考サイト(8):EasyMp3 Module - VS1001/VS1001K
内容的には自作したものと殆ど変わりませんが、専用基板を起こしているだけあって、ずっとコンパクトです。
なんといっても、VS1011EがSOP(ピンのピッチが1.27mm)タイプなので、ハンダ付けの不安がありません。
注文した翌日には届き、組み立ても2時間程で完了しました。
早速動作テストです。
このモジュールは(最初の版がVS1001を採用していたからか)VS1011Eの互換モードで動作するので、上述のSine波出力プログラムを互換モード用に書き換えて走らせてみたところ、…、動きました。
次いで、Webで公開されているサンプルソフトに同梱のMP3ファイルも再生してみましたが、ちゃんと鳴りました。
最初、音が途切れ途切れになってしまったのですが、原因は以下の二つでした。
・DREQのチェックをデータ転送前にしか行っていなかった。(転送中、随時チェックする必要あり。)
・OSの割り込みを抑止していなかった。
これらから言えることは、
- VS1011Eが壊れた? >?
- ソフトウェアが正しくない? >問題なし
- I/Oボードとの相性(入出力ポートのバッティング)? >問題なし
- OSとの相性? >問題なし(ただし、割り込み抑止は必要)
で、動かなかった原因は自作のMP3モジュールにあると見て間違いなさそうです。
ということで、以後の実験には、このEasyMP3 モジュールを使うこととしました。
ついでにEasyMP3 モジュールをネイティブモードでも試してみましたが、とりあえず動くようです。(厳密には一部の配線を変更する必要があるとは思いますが。)
今後の課題
以上、Mac開発環境 + H8/3069F + MP3モジュールで、音が出せる環境は整いました。
次のステップとして、本来の目的であるインターネットラジオに挑戦したいと思います。
「その6a・インターネットラジオを再生する(中編)」へ続く
お世話になったサイト
有用なソフトウェアおよび貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)
参考サイト(1):VLSI Solution-Download
参考サイト(2):VS1011E日本語データシート私家版
参考サイト(3):ELM - MP3プレーヤキットTIPS(QFPの半田付けのコツ)
参考サイト(4):TCPクライアント - やまねこのマイコン実験室 - livedoor Wiki(ウィキ)
参考サイト(5):電子工作室
参考サイト(6):電子マスカット【電子工作・エレクトロニクス工作】(MP3プレーヤー_1/12)
参考サイト(7):電子工作: Network Appliance 2 rev.b
参考サイト(8):EasyMp3 Module - VS1001/VS1001K
更新履歴
2008.12.16 マイコンボードと接続する、に追記を追加
2008.12.01 新規作成
[Home]
[MacSoft]
[Donation]
[History]