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コアを使った高レベルなデータ転送をサポートするための関数が追加されています。
関数の一覧
定義されている関数の一覧を示します。
関数名 | 機能 |
---|---|
ライブラリをオープンする |
|
ライブラリをクローズする |
|
見つかったFX3デバイスの数を返す |
|
FX3の内蔵RAMにイメージファイルを書き込む |
|
FX3のSPI ROMにイメージファイルを書き込む |
|
FX3に対する低レベルなバルクOUTの発行 |
|
FX3に対する低レベルなバルクIN転送の発行 |
|
IPコアに対する高レベルな送信(BulkOut) |
|
IPコアに対する高レベルな受信(BulkIn) |
|
USBリセット |
非常にシンプルですが、これだけでほとんどの処理が実現できます。
関数リファレンス
関数名 | |
書式 |
bool TKUSBFX3Open(int num, unsigned short *vid, unsigned short *pid, char *DeviceName, int MaxDevnameLength); |
機能 |
ライブラリをオープンする |
引数 |
num 何のパラメータか忘れた。0を指定すればいい |
戻り値 |
見つかったらtrueを返す。見つからなかったらfalseを返す |
注意点 |
関数名 | |
書式 |
void TKUSBFX3Close(void); |
機能 |
ライブラリをクローズする |
引数 |
なし |
戻り値 |
なし |
注意点 |
関数名 | |
書式 |
int TKUSBFX3DeviceCount(void); |
機能 |
見つかったFX3デバイスの数を返す |
引数 |
なし |
戻り値 |
見つかったデバイスの数 |
注意点 |
関数名 | |
書式 |
bool TKUSBFX3WriteToRAM(const char *ImageFileName, char *ErrorReason, int ErrorReasonLength); |
機能 |
FX3の内蔵RAMにイメージファイルを書き込む |
引数 |
ImageFileName 書き込むイメージファイル(*.img) |
戻り値 |
成功したらtrueを返す |
注意点 |
関数名 | |
書式 |
bool TKUSBFX3WriteToSPIROM(const char *ImageFileName, char *ErrorReason, int ErrorReasonLength); |
機能 |
FX3のSPI ROMにイメージファイルを書き込む |
引数 |
ImageFileName 書き込むイメージファイル(*.img) |
戻り値 |
成功したらtrueを返す |
注意点 |
関数名 | |
書式 |
int TKUSBFX3BulkOut(int ep, unsigned char *data, int length); |
機能 |
FX3のAPIを呼び出し、任意のEndPointに任意の長さのデータを転送する |
引数 |
ep エンドポイント番号 |
戻り値 |
成功したら、送信した長さを返す。 |
注意点 |
関数名 | |
書式 |
int TKUSBFX3BulkIn(int ep, unsigned char *data, int length); |
機能 |
FX3のAPIを呼び出し、任意のEndPointから任意の長さのデータを受信する |
引数 |
ep エンドポイント番号 |
戻り値 |
成功したら、送信した長さを返す。 |
注意点 |
関数名 | |
書式 |
int USBWriteData(unsigned long addr, unsigned char *data, int len, unsigned short flag); |
機能 |
FPGAの中のIPコアを呼び出し、データを送信する。 |
引数 |
addr コアから出力されるaddr信号の値 |
戻り値 |
成功したら、送信した長さを返す。 |
注意点 |
関数名 | |
書式 |
int USBReadData(unsigned long addr, unsigned char *data, int len, unsigned short flag); |
機能 |
FPGAの中のIPコアを呼び出し、データを受信する。 |
引数 |
addr コアから出力されるaddr信号の値 |
戻り値 |
成功したら、受信した長さを返す。 |
注意点 |
関数名 | |
書式 |
void USBReset(void); |
機能 |
USBデバイスのリセットと、USBエンドポイントのリセット |
引数 |
なし |
戻り値 |
なし |
注意点 |