歩き遍路 平成19年春(J1) 記録の準備
SPIでUSB(11) MAX342xのホスト機能と
           周辺機能を接続する

 MAX342x のアプリケーションノート AN3936 に有るプログラムからUSBホスト機能と周辺機能を別々に抽出してH8用に修正しました。そして、ホスト機能から周辺機能にUSBデバイスリクエストを出力して周辺機能が応答するUSB動作をさせて、USBケーブルに流れるデータを観測しました。

●実験の構成

 ホスト機能と周辺機能の接続の構成と写真を示します。
 ホスト機能は、MAX3421とH8 3064で構成しています。写真の下側です。
 周辺機能は、MAX3420とH8 3069で構成しています。写真の上側です。
 写真の右側のケーブルは、+5V電源用とデバッガ用のRS232Cケーブルです。

















































●ホスト機能ソフトウエアの概要

 ホスト機能ソフトウエアは次の10機能を実装しており、スイッチで組み合わせて周辺機能の応答を調べます。
 ホスト機能ソフトウエアは、アプリケーションノート AN3936 のエニュメレーションの一連の動作を行うプログラム enumerate_device() を細分して作りました。

 @ Reset_Host();          //MAX3421をチップリセットして、発振が正常になるまで待つ
 A detect_device();        //ペリフェラルの接続を待ち、FSかLSかを判定してSOFかアライブ生成を設定
 B SetAddress_to7();        //SetAddress_to7 Packet発生
 C getTheDeviceDescriptor8Byte(); //8ByteのgetTheDeviceDescriptor Packetを発行
 D getTheDeviceDescriptorFull(); //全てを取得のgetTheDeviceDescriptor Packetを発行
 E GetConfiguration();      //GetConfiguration Packet発生
 F enumerate_device();      //エニュメレーションの一連の動作を行う
 G BusReset();          //バスリセット発生 50 ミリ秒のバスリセット(SE0)信号を発行
 H SigRsm();           //バスレジュームイベントの信号を送出
 I FrmNUmReset();        //SOFフレーム番号リセット


●SOF発生からエニュメレーションの実行

 ホスト機能で次のプログラムを上から順番に実行したときのUSBケーブルに流れるデータです

 @ Reset_Host();          //MAX3421をチップリセットして、発振が正常になるまで待つ
 A detect_device();        //ペリフェラルの接続を待ち、FSかLSかを判定してSOFかアライブ生成を設定
 B SetAddress_to7();        //SetAddress_to7 Packet発生
 C getTheDeviceDescriptor8Byte(); //8ByteのgetTheDeviceDescriptor Packetを発行
 D getTheDeviceDescriptorFull(); //全てを取得のgetTheDeviceDescriptor Packetを発行

 Bの SetAddress_to7();実行時に得られたデータにアドレスを指定する 07h が見られます。
 Cの getTheDeviceDescriptor8Byte();を実行すると8バイトのデータが周辺機能から得られます。
 Dの getTheDeviceDescriptorFull();を実行すると 18バイトの DeviceDescriptor データの取得からストリングの取得の一連の動作を行います。





●標準手順で無い SOF発生、SetAddressをしてSOF番号リセットを実行

 標準手順で無い次の手順で実行しました。
 
 @ Reset_Host();    //MAX3421をチップリセットして、発振が正常になるまで待つ
 A detect_device();  //ペリフェラルの接続を待ち、FSかLSかを判定してSOFかアライブ生成を設定
 B SetAddress_to7(); //SetAddress_to7 Packet発生
 I FrmNUmReset();   //SOFフレーム番号リセット</FONT>

 朱の丸で示すように SOFが0 になっています。

 意地悪テストが容易になりました。






ホームへ戻る