歩き遍路 平成19年春(J1) 記録の準備
SPIでUSB( 2)
SPI接続USBデバイスMAX3420をPIC18F4520で制御

 「あらゆるシステムにUSBを追加」のキャッチフレーズに魅かれたわけではないですがマクシム社のMAX3420をPIC18F4520"のハードウエアSPIを使って試してみました。
 マクシム社のMAX3420は、USB機能の多くをハードウエア化したデバイスで、制御マイコンのソフトウエアはホストからのコマンド単位に対応すれば良いのでソフトウエアが小さくて済みます。ホストからのコマンド単位に対応することは、エニュメレーションやデータ転送等の対応になるのでUSBの振舞いを調べるのに最適と思えます。又、移植性の高いMAX3420を制御するマイコンのソフトウエアが公開されているので試すための負荷が少なくて済みます。

 MAX3420を使いこなす為の詳細な資料がマクシム社から発行されています。ここでは、「アプリケーションノート 3690」の日本語版を参考にさせていただきました。

●実験のハード構成

ハードの構成を示します。

・上:MAX3420ボード
USBインタフェースでマクシム社のSPI接続USBデバイス MAX3420とレベル変換ICを汎用基板に実装。




・右:デバッガ




・下:SPIマスタでPIC18F4520を「Workshop Nak」から購入した基板に実装。
 「C18」でプログラム。

SPIでUSB( 1)で使ったボードにSPIインタフェースコネクタを追加。





















MAX3420ボード

上から
・USBコネクタとLED
・5V→3.3Vレギュレータ
・SPI接続USBデバイスMAX3420
・レベル変換IC 74VHC244
・スイッチとSPIインタフェースコネクタ


LEDとスイッチはMAX3420に接続しています。
































MAX3420ボードの回路を次に示します。 シンプルな回路です。




●実行結果

 MAX3420を制御するマイコンのサンプルソフトウエアをPIC18F4520用に書き換えて実行した結果を次に示します。


・左は、実行時にスイッチを押したときにホストに送信されたデータです。
この例では、6回スイッチを押しました。











・下は、
起動のエニュメレーションからデータ転送待ちのUSBケーブル上のデータです。













●困った事 その1 INT出力がオープンドレイン

 MAX3420を制御するマイコンのサンプルソフトウエアをPIC18F4520用に書き換えて実行した結果したとき、全体の流れは動いてそうに感じてました。しかし、いろいろ困った事がありました。

 再度マクシム社の資料を読み返していると、SPIがフルデュプレクス設定時 INT出力はオープンドレインを見つけたので、10KΩで3.3Vでプルアップしました。


●困った事 その2 送信データがCRCエラー


 INT出力をプルアップしても症状は少し変わったですが、まだまだ問題がありそうです。次にその時のUSBケーブル上の情報を示します。一言でいえばCRCエラーです。

 途方に暮れて繰り返していると、CRCエラーになってデータを自動的に再送しているのでは?データはビットずれを起こしているのでは?と感じてきたので、ノイズ対策をしました。
 最初は、MOSI,MISO,SPIクロックにコンデンサでノイズ取りをしましたが、悪くなりました。シンクロで見てもコンデンサを付けても波形やデータとクロックの位相が悪くなっているとも見えません。
 次は、MOSI,MISO,SPIクロックの信号に直列に抵抗を挿入しても症状は変わりません。グランドラインも電源ラインも強化しても変わりません。

 困った挙句、次の写真の様に、MAX3420のリードにセラミックコンデンサを追加すると正常に動作しました。ソフトウエアの問題はありませんでした。



 







ホームへ戻る