ドライバ&ツールのインストール

Springfield > USB Lesson

USB汎用インターフェース・キットマニュアルp.57〜参照

● キット・ボードと入出力ボードを接続した動作

サイプレス者ドライバの使い方
サイプレス社のUSBドライバは、以下のような機能をもつ汎用のUSBドライバです。ドライバのC言語ヘッダ・ファイルはC:\cypress\USB\Drivers\ezusbdrvフォルダにソースファイルが保存されています。
・ファームウェアをダウンロードする。
・EZ-USBコントロール・パネルからUSB標準リクエストやベンダ・リクエストを発行する。
・任意のエンド・ポイントのリード/ライトを行う。
プログラミングには、この3番目の機能を使います。
このドライバのアプリケーションからの利用手順は次のようになります。

1. ドライバをオープンする
Windows APIの一つであるCreateFileを利用します。
デバイス名1台目:"\\.\Ezusb-0"
デバイス名2台目:"\\.\Ezusb-1"
デバイス名3台目:"\\.\Ezusb-2"
...

2.デバイスと通信する
Windows APIのDeviceIoControlを利用して、ドライバとの間でコマンドやデータのやりとりを行います。

3.ドライバをクローズする
Windows APIの一つであるCloseHandleを使って、ドライバをクローズします。

このように、3つのWindows APIを使うだけなので、特別なDLLライブラリなどは必要ありません。C++言語でプログラミングするときは特別なincludeファイルなど必要ありません。

 Windows APIのDeviceIoControlはMSDNに次の記述があります。
BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);

引数は次の意味を持ちます。
・デバイスへのハンドル(CreateFileが取得した返値)
・動作に対応する制御コード(マクロで値が定義されている)
・入力Bufferへのポインタ
・入力Bufferのサイズ(バイト)
・出力Bufferへのポインタ
・出力Bufferのサイズ(バイト)
・出力Bufferに保存されたデータサイズを示す変数へのポインタ(バイト)
・OVERLAPPED構造体へのポインタ(常に0)

サイプレス社ドライバでは、これらの内、lpInBufferとnInBufferSizeを使ってパラメータを与え、lpOutBufferをデータ入出力用として利用します。(マニュアルp.58)

 DeviceIOControlは汎用的な関数であるため、このまま使うと煩雑です。マニュアルでは呼び出しやすいラッパー関数を用意しています。C++言語で利用する場合は次のような関数です。

// ベンダ・リクエストを発行する関数
// Parameter: デバイスドライバのハンドル, データの方向, recepientのパラメータ, リクエストコード, Valueパラメータ, Indexパラメータ, データバッファへのポインタ, データバッファの大きさ, 転送バイト数格納変数へのポインタ
int VendorRequest(HANDLE, BYTE, BYTE, BYTE, WORD, WORD, BYTE * , INT, DWORD * );
// 動作モードの設定Port Configデータをセットする関数
// Parameter: デバイスドライバのハンドル, 動作モード, ビットレート, PEの設定, PDの設定, PCの設定, PBの設定, PAの設定
int SetPortConfig(HANDLE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE);

// PIOモードでデータをポートに出力する関数
// Parameter: デバイスドライバのハンドル, ポート指定, 出力データ
int PIOWrite(HANDLE, BYTE, BYTE);

PIOモードでLEDが10回点滅するプログラムはこちら。

--------------------------------------------------------------------------------------------------------

Springfield > USB Lesson

Copy right y.takase since 2006