ホームページ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(ウィキ)

 ところが、いくつかの不具合に見舞われてしまいました。
  1. 自作ソフト(Mac-H8IDE)で、シリアル通信がハングアップする。
  2. (以前動いていたアプリを含め)標準出力が文字化けする。
  3. SDカードを認識しない。
 このうち、上2項目は、
  1. シリアル書き出し時、1バイト転送ごとに80msec程のディレイを設ける。(それでも時々不可解な動きをしますが、まずまず実用範囲内)
  2. コンパイル時に「スタック」オプションを追加する。
で解決できましたが、SDカードについてはどうもダメなようです。(OS側の不具合らしい。)
 SDカードは使えなくても今回は何とかなるので、とりあえず先送り状態です。


 動作テスト(失敗)

 VS1011Eは製作例も多く、ソフトウェアも公開されています。

 参考サイト(5):電子工作室
 参考サイト(6):電子マスカット【電子工作・エレクトロニクス工作】MP3プレーヤー_1/12
 参考サイト(7):電子工作: Network Appliance 2 rev.b

 それらを参考に、まずは内蔵のSine波出力機能を使って音を出すテストプログラムを書いてみました。
 ですが、音が出ません。

 VS1011Eに対しては、制御用の「コマンド」とMP3等の「データ」を送り込むことになるのですが、コマンドの方は、レジスタの値を読み出せるので、書いた後に読んでみると、書いた値が戻ってくるので、正しく書き込めているようです。
 一方、データ(Sine波出力の指示はデータとして扱われる)の方は読み出せないので、どうなっているかは直接調べられません。ただし、正しいデータを処理すると、対応するレジスタの値が変化するようなのですが、データ書き込み後のレジスタを調べてみると、変化していません。

 データの転送は、然るべきチップセレクト信号を操作してから行うのですが、信号のオン/オフを繰り返すテストプログラムを書いて、チップの当該ピンにテスターを当てて調べてみると、期待通り動作しています。
 このことと、コマンド系が正常動作していることから、どうも、チップ内部でデータを受け取れていない感じです。
(イヤホンからは軽いノイズが聞こえるので、出力側が死んでるということでもなさそう。)
 こうなると、導通チェックが気になります。あのときに、チップ内部が死んでしまったのだろうか…

 動かない原因として、考えられることは、
  1. VS1011Eが壊れた?
  2. ソフトウェアが正しくない?
  3. I/Oボードとの相性(入出力ポートのバッティング)?
  4. OSとの相性?
 感触としては、チップが壊れた、が一番可能性が高そうですが、何せ要因が多すぎます。
 ということで、手っ取り早く要因を減らすため、もっと確度の高いハードで実験を継続した方がよさそうです。


 EasyMP3 モジュール

 EasyMP3 モジュールは、ストロベリー・リナックスが発売している、VS1011Eを採用したキットです。

 参考サイト(8):EasyMp3 Module - VS1001/VS1001K

 内容的には自作したものと殆ど変わりませんが、専用基板を起こしているだけあって、ずっとコンパクトです。
 なんといっても、VS1011EがSOP(ピンのピッチが1.27mm)タイプなので、ハンダ付けの不安がありません。
 注文した翌日には届き、組み立ても2時間程で完了しました。

 早速動作テストです。
 このモジュールは(最初の版がVS1001を採用していたからか)VS1011Eの互換モードで動作するので、上述のSine波出力プログラムを互換モード用に書き換えて走らせてみたところ、…、動きました。
 次いで、Webで公開されているサンプルソフトに同梱のMP3ファイルも再生してみましたが、ちゃんと鳴りました。
最初、音が途切れ途切れになってしまったのですが、原因は以下の二つでした。
・DREQのチェックをデータ転送前にしか行っていなかった。(転送中、随時チェックする必要あり。)
・OSの割り込みを抑止していなかった。
 これらから言えることは、
  1. VS1011Eが壊れた? >?
  2. ソフトウェアが正しくない? >問題なし
  3. I/Oボードとの相性(入出力ポートのバッティング)? >問題なし
  4. 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]