製品情報>Artix-7評価ボード>Artix-7技術コラム>USB APIの使い方

USB APIの使い方

APIの説明

Artix-7ボードに搭載されているUSBコントロールチップは、Cypress社のEZ-USB FX3です。

通常、EZ-USB FX3のコントロールソフトはCyAPI.dllを使って制御します。

しかし、CyAPI.dllはクラスライブラリなので、古いコンパイラ(Borland C++ Builder 2006など)では使えません。そこで、CyAPI.dllを普通のWindowsのネイティブDLLにラッパするためのDLLを作りました。

また、CyAPIの関数をラッパするだけではなく、特電IPコアを使った高レベルなデータ転送をサポートするための関数が追加されています。

関数の一覧

定義されている関数の一覧を示します。

 

関数名 機能

TKUSBFX3Open

ライブラリをオープンする

TKUSBFX3Close

ライブラリをクローズする

TKUSBFX3DeviceCount

見つかったFX3デバイスの数を返す

TKUSBFX3WriteToRAM

FX3の内蔵RAMにイメージファイルを書き込む

TKUSBFX3WriteToSPIROM

FX3のSPI ROMにイメージファイルを書き込む

TKUSBFX3BulkOut

FX3に対する低レベルなバルクOUTの発行

TKUSBFX3BulkIn

FX3に対する低レベルなバルクIN転送の発行

USBWriteData

IPコアに対する高レベルな送信(BulkOut)

USBReadData

IPコアに対する高レベルな受信(BulkIn)

USBReset

USBリセット

 

非常にシンプルですが、これだけでほとんどの処理が実現できます。

関数リファレンス 

関数名

TKUSBFX3Open

書式
bool  TKUSBFX3Open(int num,
unsigned short *vid, 
unsigned short *pid,
char *DeviceName,
int MaxDevnameLength);
機能

ライブラリをオープンする

引数

num 何のパラメータか忘れた。0を指定すればいい
vid 見つかったデバイスのベンダIDが格納される
pid 見つかったデバイスのプロダクトIDが格納される
DeviceName 見つかったデバイスの名前が格納される
MaxDevnameLength 名前が格納されるバッファの長さ

戻り値

見つかったらtrueを返す。見つからなかったらfalseを返す

注意点  

 

 

関数名

TKUSBFX3Close

書式
void  TKUSBFX3Close(void);
機能

ライブラリをクローズする

引数

なし

戻り値

なし

注意点  

 

 

関数名

TKUSBFX3DeviceCount

書式
int   TKUSBFX3DeviceCount(void);
機能

見つかったFX3デバイスの数を返す

引数

なし

戻り値

見つかったデバイスの数

注意点  

 

 

関数名

TKUSBFX3WriteToRAM

書式
bool  TKUSBFX3WriteToRAM(const char *ImageFileName,
char *ErrorReason,
int ErrorReasonLength);
機能

FX3の内蔵RAMにイメージファイルを書き込む

引数

ImageFileName 書き込むイメージファイル(*.img)
ErrorReason エラーの原因が文字列で入るバッファ
ErrorReasonLength 文字列バッファの長さ

戻り値

成功したらtrueを返す

注意点  

 

関数名

TKUSBFX3WriteToSPIROM

書式
bool  TKUSBFX3WriteToSPIROM(const char *ImageFileName,
char *ErrorReason,
int ErrorReasonLength);
機能

FX3のSPI ROMにイメージファイルを書き込む

引数

ImageFileName 書き込むイメージファイル(*.img)
ErrorReason エラーの原因が文字列で入るバッファ
ErrorReasonLength 文字列バッファの長さ

戻り値

成功したらtrueを返す

注意点  

 

関数名

TKUSBFX3BulkOut

書式
int   TKUSBFX3BulkOut(int ep,
unsigned char *data,
int length);
機能

FX3のAPIを呼び出し、任意のEndPointに任意の長さのデータを転送する

引数

ep エンドポイント番号
data 送信したいデータ
length 送信したいデータの長さ(バイト単位)

戻り値

成功したら、送信した長さを返す。
USBデバイスがなければ-1を返す。
EZ-USB Loaderのままであれば-2を返す。
データ転送で失敗したら-3を返す。

注意点  

 

関数名

TKUSBFX3BulkIn

書式
int   TKUSBFX3BulkIn(int ep,
unsigned char *data,
int length);
機能

FX3のAPIを呼び出し、任意のEndPointから任意の長さのデータを受信する

引数

ep エンドポイント番号
data 受信したデータが格納されるバッファ
length 受信したいデータの長さ(バイト単位)

戻り値

成功したら、送信した長さを返す。
USBデバイスがなければ-1を返す。
EZ-USB Loaderのままであれば-2を返す。
データ転送で失敗したら-3を返す。

注意点  

 

関数名

USBWriteData

書式
int   USBWriteData(unsigned long addr,
unsigned char *data,
int len,
unsigned short flag);
機能

FPGAの中のIPコアを呼び出し、データを送信する。

引数

addr コアから出力されるaddr信号の値
data 送信したいデータが格納されるバッファ
len 送信したいデータの長さ
flag コアから出力されるflag信号の値

戻り値

成功したら、送信した長さを返す。
失敗したら、0を返す。

注意点  

 

関数名

USBReadData

書式
int   USBReadData(unsigned long addr,
unsigned char *data,
int len,
unsigned short flag);
機能

FPGAの中のIPコアを呼び出し、データを受信する。

引数

addr コアから出力されるaddr信号の値
data 受信したいデータが格納されるバッファ
len 受信したいデータの長さ(4の倍数に切り上げられる)
flag コアから出力されるflag信号の値

戻り値

成功したら、受信した長さを返す。
失敗したら、0を返す。

注意点  

 

関数名

USBReset

書式
void  USBReset(void);
機能

USBデバイスのリセットと、USBエンドポイントのリセット

引数

なし

戻り値

なし

注意点  

 


© 2017 TokushuDenshiKairo Inc. All rights reserved