○USBホストコントローラについて
USBホストコントローラとして、Cypress社製のSL811-HSTを使用しました。
このホストコントローラを選択した理由は、以下の通りです。
- 入手性が良い (秋月電子の店頭/通販で購入可能)
- MESやLinux用のドライバが用意されている
ただ、組み込み用途としてのマイクロコントローラへの接続を前提としたLSIであり、PCのUSBホスト機能のような、高いスループットを望むのは非常に厳しいと思います。また、互換性の問題もかなりキツいようです。
感じとしては、いきなり実用性を求めるのは酷だけど、お遊びで制作して試してみる程度ならば、まあ良いかなというところです。その後は、チューニング次第ということになるでしょう。
○回路図
USBホストコントローラ回路図を以下に示します。(クリックで拡大表示します)
※0.047uFは誤記で、0.0047uF(472)です m(_ _)m
○部品表
部品は以下の通りです。
部品名 数 単価
(参考) 入手先(参考)/
備考ユニバーサル基板 (155×114mm) 1 400 片面タイプでOK IC変換基板 48ピンQFP変換基板 DAISEN Q047 1 300 マルツパーツ館 2.1mm標準DCジャック(基板取り付けタイプ) 2 40 2.1mm標準DCプラグ 2 30 ピンヘッダ(オス) 40P(2列×20) …T-SH7706用 2 50 ピンヘッダ(オス) 12P(2列×6) … SL811-HST用 4 12.5 48ピンを4つに折る ピンソケット(メス) 40P(2列×20) …T-SH7706用 2 80 ピンソケット(メス) 12P(2列×6) … SL811-HST用 4 150 マルツパーツ館 USBコネクタ(Aタイプ、メス、基板取り付け用) 1 50 Cypress SL811-HST (水晶発振器12MHz付き) 1 800 秋月電子 ロジックIC 74AC14P 1 105 千石電商 電源用インダクタ(コイル) 22uH 1 25 22uH 〜 1mHでOK 電解コンデンサ 10V 47uF 1 11 積層セラミックコンデンサ 0.1uF 3 32 積層セラミックコンデンサ 0.0047uF 4 32 セラミックコンデンサ 15pF 2 32 カーボン抵抗器 1/4W 33Ω 2 6 カーボン抵抗器 1/4W 15KΩ 2 6 カーボン抵抗器 1/4W 1MΩ 1 6 ポリスイッチ(ヒューズ 0.5A) 050XF 1 50 フェライトビーズ MURATA BLM11P600SPT 1 10 鈴商 フェライトビーズ MARUWA CFM10C241NC 2 10 鈴商、240Ω程度
※合計3,139円(参考)
※入手先は参考まで。通販で入手可能な店舗のみ掲載。○必要な道具等
まず最初に、ピッチ変換基板にSL811-HSTを半田付けするのですが…
SL811-HSTの足ピンは0.5mmピッチですので、最初にして最大の難関です。ここは、サラッと流す訳には行かないと思うので、 私の採っている方法を紹介しておきたいと思います。
USBポートを増設したくても、ここで尻込みしている方も多いと思いますので、後押しという意味で。。まず、SL811-HSTをQFP変換基板にハンダ付けするために使用した工具は以下の通りです。
工具 型番 入手先・備考ハンダゴテ 太陽電機産業 CXR-40 千石電商 糸ハンダ (φ0.3mm) ホーザン株式会社 H-712 千石電商 無洗浄フラックス 太陽電機産業 BS-75B 千石電商 レンズ付き作業台 太陽電機産業 ST-92 ITプラザ ルーペ (×10倍) HAKUBA カメラのキタムラ 余りに細かい作業なので、レンズ付き作業台とルーペは必需品だと思います。
レンズ付き作業台を使わないと、顔を近付けすぎて、ヤニの飛散物が目に入る危険がありますし、頬にハンダゴテが触れると大変です。○SL811-HSTの半田付けのポイント
- まず最初に、QFP変換基板のパッド(ICの足ピンを載せる所)にハンダメッキする
経験上、ICを載せた後にハンダを盛ると、ブリッジし易いので、最初にハンダメッキすると良いようです。
ただ、素材的にハンダメッキしやすい基板と、そうでない基板とがあります。
幸い、Q048はハンダメッキしやすいです。
- 一連の作業の中では、このハンダメッキの作業が一番難しい
均等にメッキするためには、ハンダの量のコツを掴む必要があるため、QFP変換基板を2枚は用意し、1枚目はハンダメッキの練習用にすると良いと思います。
今回のQ048の場合は、両面基板ですので、使用しない面で練習しても良いと思います。
- ハンダ付けする足ピンの順番に注意
SL811-HSTのハンダ付けでは、ICの向かい合う辺にある端のピン(2本×2辺)を半田付けし、ICを仮止めした後、残りのピンを半田付けします。足ピンを片っ端からハンダ付けすると、いつの間にかICの位置がズレてしまっている事があります。(まず復旧は不能ですヨ)
- ICの足ピンは、基本的には1ピンづつ半田付けする
数ピンをまとめてハンダ付けするのは、コツを掴めてからでないと、足ピンの裏側でブリッジするなどのトラブルを起こし、取り除くことができずに失敗してしまいますので、最初のうちは面倒ですが、1ピンづつ半田付けしましょう。
- ハンダは少なめに
ハンダが足りないような気がして追加すると、今度は多すぎてブリッジ…という事は、慣れた積もりでもよくやります。
ここでは、ハンダメッキした分量以上に追加しないことが原則です。
- フラックスの使い方
今回のような微細な半田付け作業では、フラックスの使い方が非常に重要です。
フラックスは、ハンダの表面張力を抑制してダマになるのを抑えるのと、半田付け面の油脂皮膜を洗浄し、ハンダの乗りを良くする効果があります。
使い方を間違えると、基板が汚くなるだけで効果は殆どありませんが、正しく使うと、スムーズに半田付けができるはずです。
フラックスの使い方については、この後の説明の中で、逐次説明していきたいと思います。
- 半田付けの方法は、実は人それぞれ
今回の例が必ずしも正しい方法とは限りません。手が震える人、遠視の人…様々です。
結局のところ、不良ハンダを出さないように、いかにコツを掴むかが重要です。#説明用の写真では、SL811-HSTではなく別のICを使っていますが、内容は全く変わりません。
○SL811-HSTの半田付け方法
ここでは、SL811-HSTをQFP変換基板(ダイセン工業 Q048)に半田付けする手順を説明します。
1) ハンダメッキする
まずは、ハンダメッキの作業をやり易いように、QFP変換基板を机にテープで固定します。
作業し易い角度で基板を固定すると良いです。
私の場合には、左の写真のように45度で固定しています。
パッド(ICの足ピンが乗る端子)にフラックスを塗ります。
フラックスは、ハンダゴテの熱で蒸発します。従って、作業を続けるうちに段々と効果が薄くなっていきます。
そのため、一度に4辺全てにフラックスを塗るのではなく、こまめに1辺づつフラックスを塗ってはハンダメッキする、という作業を4辺分繰り返します。
フラックスを塗った辺にハンダを載せます。
ここでは、ブリッジなどは気にせず、端から3〜4ピンの間をめがけて、ポコッとハンダを載せます。
均等にハンダメッキするためには、ハンダの量がポイントですので、様子を見ながら調整すると良いでしょう。
ハンダの山を広げてメッキします。
画用紙に筆で「絵の具」を塗るように、ジグザグにハンダを移動します。
ハンダは、コテ先にまとわりつくようにして簡単に広がっていきます。
1辺の全てのピンに均等にメッキするのがポイントです。
ハンダの量が多いと、次の写真のようにブリッジしてしまいます。
最初のうちは、よくこうなると思いますが、簡単に取り除くことができるので、心配は無用です。
ブリッジを取り除くには、ハンダ吸い取り線をブリッジした部分に当て、その上からハンダゴテを乗せて軽く押さえながら、ハンダ吸い取り線を引きずるように、矢印の方向へ移動します。
ここでの注意点として、強く押し付けてはいけません。パッドが剥がれてしまうことがありますし、仕上がりも美しくありません。
また、無理にコテ先でいじり回してブリッジをどうにかしようとするのも禁物です。パターンが傷付いてしまう恐れがありますし、やはり仕上がりも美しくありません。
次の写真は、ブリッジを取り除いた所です。
これで1辺分のハンダメッキは終了です。残りの3辺も同様にハンダメッキします。
最後に、ルーペでブリッジが無いかを確認します。
2) SL811-HSTの半田付け
ICを半田付けする前に、全てのパッドにフラックスを塗っておきます。
フラックスが流れ出さない程度に、多めに塗っておくと良いでしょう。
ICを基板に乗せます。
ICはピンセットなどでつまむと、簡単に足ピンが曲がってしまいますし、間違って落下すると確実に足ピンが曲がってしまいます(復旧は難しく、即失敗です)ので、セロハンテープなどをICの背中に確実に貼り付け、慎重に取り出します。
なお、基板にはセロハンテープで仮止めしますので、この方法だと一石二鳥です。
(テープ越しに足ピンが見えるという意味で、透明なセロハンテープという所がポイントです)そして基板に乗せます。
まずは、1番ピンのマークを、QFP変換基板上のマークと合わせます。(赤丸の部分)そして、ICの足ピンと、QFP変換基板側のパッドの位置を厳密に合わせます。
修正してはルーペで確認し、再修正…という作業を、何度か繰り返すと思います。4辺がキッチリと合うようにします。微少な修正であれば、セロテープを貼り直すのではなく、ICの肩の部分に爪を引っかけ、押すようにして位置を調整します。
半田付けをする足ピンの順番を、左の写真に示します。
写真の矢印のように、両端の2ピンから半田付けします。
片っ端から半田付けをすると、ICがズレてしまう危険があるためです。また、ハンダ付けを始める前に、フラックスを1辺分の足ピン全てに塗ります。
なお、以降は糸ハンダを使うことはありません。パッドは既にハンダメッキされているためです。
そして、いよいよ半田付けです。
面倒ですが、最初のうちは1ピンづつ半田付けします。ハンダゴテのコテ先を、左の写真のような角度で、パッドの端(足ピンから一番遠い部分)に当て、少しづつ足ピンの方に近付けていきます。
足ピンの手前まで来ると、ハンダが足ピンを包み込み、足ピンの先端部分が「キラッ☆」と光ります。そっとコテ先を持ち上げます。
これで1ピン分の半田付けは完了です。
半田付けの順番は、「両端の足ピン→向かいの辺の両端の足ピン→残りの足ピン 」の順番にすると安全です。ハンダ付けの例を写真に示します。
ハンダ済の足ピンは、未ハンダの足ピンと比べて、1)ハンダが盛り上がっている、2)足ピンの先端が銀色になっている、という特徴があります。
※この例では判りやすくするために、わざとハンダの量を多めにしています。実際には、これよりも少ないように見えると思いますが、全く問題ありません。
もし、ハンダ付けが足りないと、足ピンが元の色(鉛色?)のままですので、簡単に見分けることができます。
ハンダが足りない場合や、逆にブリッジしてしまった場合は、フラックスを塗ってハンダ付けします。
それでもハンダが足りない場合に限って、ほんの少しだけハンダを足します。
3) 後処理とチェック
4辺全てのハンダ付けが完了したら、塗ったフラックスを除去します。
放置しておくと、足ピンやパッドが酸化してしまう恐れがあるためです。フラックスの除去には、フラックス除去液を使うか、無水エタノール(効果は大差無いようです)を綿棒に染みこませて拭き取ります。
最後に、ブリッジが無いかを確認しましょう。
QFP変換基板を蛍光灯などの光にかざすと、パッドやパターン以外の部分が透過し、クッキリと見えますので、ルーペで確認します。
特に、足ピンの間にブリッジが無いかを確認します。
問題が無ければ、ピンヘッダをQFP変換基板に取り付けます。ピンヘッダは、メス側のコネクタをQFP変換基板に取り付けます。(逆はできないはずです)
以上でSL811-HSTの半田付けの説明は終わりです。
○制作の注意点
1)SL811-HSTのエラッタについて(内蔵PLLのクロックジッタ問題)
当初の設計では、直ぐに通信がストールしてしまい、理由が全く判らずにハマっていました。
そこで、Webを検索したところ以下の資料が出てきました。要は、SL811-HSTのXIN端子に12MHzのオシレータを接続したとき、内部のPLLを使って48MHzに逓倍するのですが、VDD端子に高周波ノイズが乗っていると、PLLの出力にジッタを生じることがあるそうです。
これによって、結果的にFull speedモードでの通信に不具合(SOFパケットのタイミング異常)を生じるということです。
代替え手段として、PLLを使用せず48MHzの水晶発振器を接続するのがベストということですが、ユニバーサル基板では発振が不安定になる恐れがあり、却って不安定になってしまっては困りますので、もう一つの案であるVDDのピンにパスコンを接続してノイズを抑制する、という方法を採りたいと思います。
注意点としては、VDDピン(6,15,41番ピン)にできるだけ近い場所に、0.0047uFの積層フィルムコンデンサを配置する必要があるという事です。
2)USBポートのVBUS用電源について
USBポート(USB-Aレセプタクル)にはVBUS用電源を供給する必要があります。
これは5Vの電圧が必要なのですが、 T-SH7706のバスから取り出せる電源は、3.3Vのみです。そこで今回は、SL811-HSTを載せたベースボードに電源(5V)を一旦引き込み、そこからVBUS用とT-SH7706用の電源に分岐することにします。
とは言うものの、電源周辺については、自分のシステムに合うようにカスタマイズした方が良いでしょう。
(今回は、ACアダプタ1個で駆動するために、電源を分岐させています)3)通電前の確認について
電源周りの結線が間違っていると、マイコンボードや、接続したUSBデバイスを破壊する恐れがありますので、特に念入りに確認しましょう。
また、電源を入れる前に、+側と−側がショートしていない事も確認しましょう。
○MESでの動作確認
製作した回路の動作を確認するため、ここではMES 2.4r16(非モジュール版)を使うことにします。
config.sysファイルの内容は以下のようにします。
mem.addr=0x8c600000 mem.size=0x100000
ram0 addr=0x8c700000 size=0x100000
sci2 freq=32000000 baud=115200
mmc0 cs=scp3 sio=0 eject=ptg4
usb0 areg=0xb4000000 dreg=0xb4000002 bussiz=8 wait=15
ne0 addr=0xb0000000 bussiz=8 wait=15
end今回重要なところは、赤字の行です。
SL811-HSTはCS5領域に接続したので、物理アドレスはH'14000000となります。
但し、キャッシュ領域との兼ね合いも考慮し、上位アドレス(ミラー領域)にI/Oを配置することにします。
アドレスの上位3ビットは無視されるということなので、H'B4000000 & H'1FFFFFFF → H'14000000 となります。
MESを起動したら、以下のコマンドを入力し、USBメモリをマウントします。
(MES> の部分は入力する必要はありません。念のため)
MES> mount usb0
MES> cd /spc0
MES> dir暫くしてI/Oエラーとなる場合には、あっさりと諦めて別のUSBメモリで確認します:p
また、即行でI/Oエラーとなる場合、USBデバイスと通信すらしていないということなので、もしかしたら結線の間違いがあるのかも知れません。参考までに、私が確認したUSBメモリを、「4.その他USBデバイスの動作確認編」 に載せておきます。
また、「V02」が表示される場合、VDDピン周りのパスコンの接続が十分ではないために、USBホストがストールしていることを示しています。パスコンの接続を確認してください。
マウントでき、dirコマンドが通ったら、ひとまず完成です。
Congraturations!!!なお、電源を落とす前に、忘れずにUSBメモリをアンマウントしておきましょう。
MES> eject usb0 以上で、ハードウェアの組み立て編は終了です。
[戻る]