マイコン工作実験日記

Microcontroller を用いての工作、実験記録

USBホストを追加した

2008-03-01 17:17:43 | W-SIM
USB電話機を接続するための基板を作ってみました。



「作った」といっても、基板自体はRev.2ボードの流用です。USBホスト機能を実現するためのチップとしてMAX3421Eをボード上に追加しただけです。写真右下部分が今回追加した部分であり、右下のタイプAコネクタにUSB電話機をつなげることになります。

USBホストのチップとしては、なんと言っても秋月で買えるSL811HSTが入手しやすいのですが、こいつは8bitのデータバスで接続するようになっていますので、外部メモリを使えるマイコン向けです。AT91SAM7Sでは、外部メモリを接続することができないので、GPIOで制御することになってしまい面倒です。一方、MAX3421Eは、SPIでつなぐことができるので、ほとんどのマイコンと簡単に接続できちゃいます。追加部品も、DP/DMに入れる抵抗2本とパスコン程度で済みますので工作も簡単です。動作クロックとしては12MHzが必要ですが、幸いなことにAT91SAM7SのPLLを96MHzに設定すれば(この使い方が標準ですが)、これを分周してPCK0から12MHzを出力できます。そのため水晶発振器を追加する必要もなくなりました。

このように書くと、MAX3421Eを選択したもっともらしい理由のようですが、実際のところは2年程前に、おもしろそうだと思って買っておいて死蔵したままになっていたことを思い出して、引っ張り出しただけです。当面CPUボードへのUSB給電で動かしますが、ACアダプタ用のジャックを付けてもいいかもしれません。

とりあえずは、MAX3421Eの内部レジスタを読み書きできることだけは確認できました。当初、どのレジスタを読み出しても0xFFになってしまっていて、あせりました。原因は、リセット直後はMAX3421Eは半2重のモードで動作していたこと。そのため、MISO線は使用されずにHZになっていたために、0xFFと読めたようです。まず最初にPINCTLレジスタを変更することで、全2重通信のモードにしてやる必要ありでした。

最新の画像もっと見る

44 コメント

コメント日が  古い順  |   新しい順
私は今だ悩んでおります (Shin)
2008-04-18 17:23:59
私はまだレジスタの操作で悩んでおります。
 回路構成はPIC16LF877AとMAX3421Eで、開発環境はMPLABv8.00とICD2です。
 半二重はクリヤしましたが、特定のレジスタの書込読み出しが変なのです。手動でステップ実行するとうまくいくのに、一気にRUNするとレジスタの受信データが変になります。バッファフルステータスビットは確認してから次のステップに進めています。一気にRUNしたときにゴミを受信しているような気がします。スコープメーターで見てもあまり良くわかりません。何かヒントがありましたらご指導願えますでしょうか?。
Re: 私は今だ悩んでおります (sirius506)
2008-04-18 18:48:25
わたしはPICは全く使ったことがないので、PIC側のハード/ソフトに関してはコメントすることができません。

MAX3421Eはホスト・モードとペリフェラル・モードでレジスタの見え方が変わりますが、ステップ実行すれば問題無いということですので、モードの設定は正しくできているのでしょうね。

そうすると/SS信号の動作に関連しているのかもしれません。もしPICのソフトで/SS信号を生成しているのであれば、ステップ動作かRUN動作かでtCSSとtCSWの時間が変わってくると思います。tCSWは200ns必要となっていますので、連続してMAX3421Eのレジスタにアクセスしているのであれば、この時間が取れていない可能性はないでしょうか?
解決しました (Shin)
2008-05-10 07:05:02
/SS信号の幅は良かったのですが、原因はリセットでした。リセット後に3msec以上待つ必要があるようです。でもなぜステップ実行で問題なくレジスタの読み書きが出来たのでしょうか?。
 これからが問題です。コンフィグレーションがうまくいくかどうかがカギです。ターゲットは携帯電話機です。
 USBを扱うのは始めてで新しい用語を理解するまではまだ時間がかかりそうです。何度も資料を繰り返し読んでいるうちに少しずつ進んでいきます。
 コメントが遅くなってすみませんでした。今後ともご指導をよろしくお願い致します。
Re: 解決しました (sirius506)
2008-05-10 11:48:24
リセット後PLLが安定するまでの待ち時間でしたか。このあたりの待ち条件は、PLLで生成する48MHzを必要とする操作に関連するレジスタを読み書きするかどうかによっても違ってくると思います。

レジスタ読み書き動作自体は、SPIのクロックで動作できると思われますが、48MHzを必要とするUSBシリアル動作はPLLが安定するまでは動作が保証されないということではないでしょうか? 
次はデバイス・ディスクリプタの読み込みですね。ターゲットの携帯をCDCで制御するのでしょうか?またの報告を楽しみにしております。
あなたに勇気を頂きました (Shin)
2008-06-01 18:12:39
 先が見えてきました。大したことをしようとしているのではありません、FOMA携帯電話機でUSBを使おうとしているだけです。とりあえずATコマンドが操作できるようになりました。これから復習です。実践が先になってしまって理屈合わせをこれから行います。
 私は今58才です。USBの挑戦は無謀だったかもしれませんが、新しい製品の完成を待っている人が沢山居ますから、重い腰をあげました。そして、このブログから唯一夢を実現するための勇気を頂きました。ありがとうございました。
経過は都度このページにご報告致します。
Re: あなたに勇気を頂きました (sirius506)
2008-06-01 22:17:05
どうやら順調に作業を進めておられるようですね。わたしもそうですが、40代、50代で電子工作やられている方って結構多いのではないでしょうか。わたしの場合、学生時代以来25年ぶりに工作再開しています。

製品化を目指しての開発とは素敵ですね。今後の進展も楽しみにしております。
あれから早2か月 (Shin)
2008-08-18 17:39:44
 おかげさまで一応USBに関する部分は動作する様になりました。エラー処理とSTALL対策に時間がかかってしまったのと、USBプラグを抜き差ししたりターゲットの電源を通信途中に落としたりと色々やりまして、Maximに質問をしても解決にはならず(って叱られるか)。答えは全て実践とシュミレーションで見つけました。解ってしまえば何と言うことはなくて、何でこんなに時間ばかりかかるのかと今になって思います。この数ヶ月のドキュメントを整理すると「誰も教えてくれなかったUSBホストのテクニック」なんて本が書けるぐらいかと思います。ハハハ
 今、プログラムは停止せずに動作し続けております。今後は製品に組込の作業にかかります。
 ところで、FOMA携帯をシリアルATコマンドで使えるボードを販売したとすると売れると思いますか?

色々と参考となる資料有り難うございました。製品に組み込んだらURLのご案内をさせて頂きます。
Re: あれから早2か月 (sirius506)
2008-08-19 00:28:45
製品化にはエラー処理とか異常シーケンス対策が不可欠ではありますが、試験を含め大変な作業ですよね。わたしは、いつも「実験」と「とりあえず」を言い訳にしてそういう作業をサボってばかりいます。完成度を高める前に、違う事に目移りしてしまいますし。。。

W-SIMを購入する前は、FOMAをノートPCにUSB接続してモバイルしていました。個人的にはモデム通信だけならUSB接続でも事足りていました。音声通話の発着信制御や電話帳操作とかに使えるのであれば何か応用ができるかもしれませんね。
ご無沙汰でした (Shin)
2008-12-08 18:32:58
あれから特にトラブルもなかったのですが、最終基板の温度テストや、定番の製品評価で、あっという間にもうすぐ正月が来ようとしています。おかげさまでまもなく製品リリースの運びとなりました。発売になりましたらホームページのアドレスを掲載しますので、お時間がございましたらぜひご覧頂いて、厳しい評価を下さればこの上ない幸せに思います。
 歳をとってもマイコンは楽しいですね。しかも製品を待ち望んでいる方がいたり、エールを頂くとなおさらです。これからもどうかよろしくお願い申し上げます。
Re: ご無沙汰でした (sirius506)
2008-12-08 23:38:19
おひさしぶりです。そうですか、いよいよリリースですか。うらやましいです。

わたしも、もう少し完成度の高いものを作れるようになりたいものです。来年は、プリント基板を作ることも覚えようかとか考えております。

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。