歩き遍路 平成19年春(J1) 記録の準備
EZUSB-FX2でHighSpeed HIDを実験

 EZUSB-FX2 CY7C68013A を使ってHighSpeed HIDの実験をしました。
 HIDデバイスは、キーボードやマウス等いろいろ市販されているのですがロースピードとかフルスピードがほとんどでハイスピードのHIDデバイスは市販されてないので作りました。
 作ったと云っても本に書かれていることをそのまま作っただけでオリジナティは無いのですが貴重なUSB仕様の確認に役立ちます。参考にした本は、安部恵一著「USB2.0インターフェース設計術」の第6章です。

●ハイスピードのHID実験の構成

 ハイスピードのHID実験の構成の写真です
 参考にした安部恵一著「USB2.0インターフェース設計術」の本と、その上にハイスピードのHID回路、本の左はUSBアナライザです。
 動作は、EZUSB-FX2に接続されたLEDやスイッチをHID動作でパソコンから制御します。回路や詳細な動作は本を参照して下さい。




 実験基板の拡大です。(ピンぼけですがご容赦を)
 左はEZUSB-FX2基板でオプティマイズ社の Mini_Fx2 です。右側はLEDとスイッチです。




 パソコン側の操作パネルです。
 VB6で書かれていて操作は簡単です。上のLEDとスイッチの内容がパネルに表示されています。




●USBケーブル上のデータ

 USBケーブル上のデータをUSBアナライザで採取しました。USBアナライザは、International Test Instruments 社の Model 1480A でハイスピードまで対応しています。

 画面は、ハイスピードのHIDのOUTトランザクション動作の一部分で、データA5hをパソコンからEZUSB-FX2にOUTトランザクション送っています。OUTトランザクション動作は、16mS毎です。プログラムのディスクリプタテーブルを見ると16mSを指定しています。下のプログラムのディスクリプタテーブルの抜粋を参考にして下さい。




●ハイスピードHID実験のファームウエアの概要

 ハイスピードHID実験で使うファームウエアを眺めてみます。

 ファイル fw.c のmain関数は、TD_Init(); 関数を呼び出し周辺回路を初期化したり、 while(TRUE) // Main Loop で常にループをしてユーザ処理の TD_Poll(); 関数を呼び出します。





 TD_Init(void) は、初期化関数で周辺回路の初期化をします。例えば、ポートBを出力ポートに設定します。

 TD_Poll ユーザ処理関数で繰り返し呼び出されユーザ処理をします。例えば、ポートAから入力したデータと転送数をUSBに送ります。





 ディスクリプタテーブルのポーリング時間を指定する部分の抜粋です。
 Polling intervalが 10H です。10進数の16なので、16mS毎にポーリングする様に指定しています。









ホームへ戻る