USB-CANバスインターフェース
アダプタインターフェース機能
図書館利用者向け説明
パート1終了VIEW
ユーザーが USB-CAN バス インターフェイス アダプターを使用して CAN バス通信テストを実行する場合は、付属の USB-CAN ツール ソフトウェアを直接使用してテストのデータを送受信できます。
ユーザーが自身の製品用のソフトウェアプログラムを作成する場合は、以下の手順をよく読み、amp私たちが提供するコード:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
ライブラリを開発する file :ControlCAN.lib、ControlCAN.DLL
VCバージョン関数宣言 file :ControlCAN.h
VB バージョン関数宣言 file: コントロールCAN.bas
ラボVIEW バージョンライブラリ関数パッケージモジュール:ControlCAN.llb
Delphi バージョン関数宣言 file: コントロールCAN.pas
パート2 互換性のある関数ライブラリとデータ構造
2.1. 型定義
2.1.1.デバイスタイプ
タイプ定義 | タイプ値 | 説明 |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II ミニPCIe-CAN |
2.1.2. VCI_ボード情報
VCI_BOARD_INFO 構造体には、USB-CAN シリーズ インターフェイス カードのデバイス情報が含まれています。
構造体は VCI_ReadBoardInfo 関数で入力されます。
メンバー:
ハードウェアバージョン
ハードウェア バージョン番号、0 進表記。例: 0100x1.00 は VXNUMX を表します。
fw_バージョン
ハードウェア バージョン番号、0 進表記。例: 0100x1.00 は VXNUMX を表します。
ページ 2
dr_バージョン
ドライバーのバージョン番号、0 進表記。例: 0100x1.00 は VXNUMX を表します。
バージョン
インターフェイス ライブラリのバージョン番号 (0 進表記)。例: 0100x1.00 は VXNUMX を表します。
irq_番号
システムは予約済みです。
できる数
CAN チャネルの合計数を表します。
シリアル番号
このボードカードのシリアル番号。
str_hw_タイプ
ハードウェア タイプ (例: 「USBCAN V1.00」) (注: 文字列終端文字 '\0' が含まれます)。
予約済み
システムは予約済みです。
2.1.3. VCI_CAN_OBJ
VCI_Transmit および VCI_Receive 関数では、VCI_CAN_OBJ 構造体を使用して CAN メッセージ フレームを送信します。
メンバー:
ID
メッセージ識別子。直接ID形式、右揃え。付録1:ID配置の詳細を参照してください。
時間通りamp
stの受信amp 時間枠の情報、CAN コントローラが初期化されるときの開始タイミング、単位は 0ms です。
タイムフラグ
時間を使うかどうかに関してはamp1は有効なTimeStamp. TimeFlag と TimeStamp フレームが受信されたときにのみ意味を持ちます。
送信タイプ
送信タイプ。= 0 は通常タイプ、= 1 は単一送信を示します。
リモートフラグ
リモート フラグかどうか。 = 1 はリモート フラグを示し、 = 0 はデータ フラグを示します。
外部フラグ
extern フラグであるかどうか。 = 1 は extern フラグを示し、 = 0 は標準フラグを示します。
データ長
データ長(<=8)、つまりデータの長さ。
データ
パケットデータ。
予約済み
システムは予約済みです。
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG 構造体は、CAN の初期化構成を定義します。この構造体は、VCI_InitCan 関数で入力されます。
メンバー:
アクセコード
フィルタリングされた承認コードを受信します。
アクセマスク
受信フィルタマスク。
予約済み
予約済み。
フィルター
フィルタリング方法。設定範囲は 0 ~ 3 です。詳細については、フィルタ モード テーブルのセクション 2.2.3 を参照してください。
タイミング0
SJA1000 ボーレートパラメータ、タイミング0 (BTR0)。
タイミング1
SJA1000 ボーレートパラメータ、タイミング1 (BTR1)。
モード
動作モード、0 = 通常動作、1 = リッスン専用モード、2 = 自発的な許可および送信テスト モード。
備考:
フィルター設定については、「付録 II: CAN パラメータ設定手順」を参照してください。
CAN Timing0とTiming1はボーレートを設定するために使用され、これらXNUMXつのパラメータは初期化時にのみ使用されます。tage.
従来のボーレート参照表:
CANボーレート | タイミング0(BTR0) | タイミング1(BTR1) |
10kbps | 0x31 | 0x1C |
20kbps | 0x18 | 0x1C |
40kbps | 0x87 | 0xFF |
50kbps | 0x09 | 0x1C |
80kbps | 0x83 | 0xFF |
100kbps | 0x04 | 0x1C |
125kbps | 0x03 | 0x1C |
200kbps | 0x81 | 0xFA |
250kbps | 0x01 | 0x1C |
400kbps | 0x80 | 0xFA |
500kbps | 0x00 | 0x1C |
666kbps | 0x80 | 0xB6 |
800kbps | 0x00 | 0x16 |
1000kbps | 0x00 | 0x14 |
33.33Kbps | 0x09 | 0x6F |
66.66Kbps | 0x04 | 0x6F |
83.33Kbps | 0x03 | 0x6F |
- ユーザーは、SJA1000 (16MHz) に従ってボーレート パラメータを設定するだけです。
- アダプタは一時的に 10K 未満のボー レートをサポートしません。
2.2。 機能説明
2.2.1. VCI_OpenDevice
この機能はデバイスを接続するために使用されます。
DWORD __stdcall VCI_OpenDevice(DWORD DevType、DWORD DevIndex、DWORD 予約済み);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
予約済み
保持パラメータには 0 を入力してください。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
2.2.2. VCI_Closeデバイス
この関数は接続を閉じるために使用されます。
DWORD __stdcall VCI_CloseDevice(DWORD DevType、DWORD DevIndex);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
2.2.3. VCI_InitCan
この関数は、指定された CAN を初期化するために使用されます。
DWORD __stdcall VCI_InitCAN(DWORD DevType、DWORD DevIndex、DWORD CANIndex、
PVCI_INIT_CONFIG pInitConfig);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CAN チャネル インデックス。たとえば、CAN チャネルが 0 つしかない場合、インデックス番号は 0 になります。1 つある場合、インデックス番号は XNUMX または XNUMX になります。
初期化構成
初期化パラメータ構造体。メンバーのパラメータリスト:
メンバー | 機能説明 |
pInitConfig->AccCode | AccCode と AccMask は連携して、どのパケットを受け入れることができるかを決定します。これらの 31 つのレジスタは、ID を左揃えに設定するために使用されます。つまり、AccCode と AccMask の最上位ビット (BitXNUMX) が ID 値の最上位ビットに揃えられます。 |
pInitConfig->AccMask | IDの調整については付録を参照してください: 付録I: ID アライメントの詳細。 例:AccCodeの値を0x24600000(つまり0x123を21ビット左にシフト)に設定すると、AccMaskの値は 0x00000000に設定され、CANメッセージフレームIDが0x123のパケットのみが受け入れられます(AccMask値が0x00000000は、すべてのビットが関連していることを示します |
ビット)。AccCode値が0x24600000に設定されている場合、AccMask値は0x600000(0x03が21ビット左にシフト)に設定され、CANメッセージフレームIDが0x120〜0x123のパケットのみが受け入れられます(AccMask値 0x600000 は、bit0 ~ bit1 以外に他のビット (bit2 ~ bit10) が関連ビットであることを示します。 注記: このフィルタ設定例amp標準フレームへの変更、例:ample、上位 11 ビットが有効ビットです。拡張フレームの場合、有効な ID は 29 ビットです。AccCode と AccMask は上位 29 ビットを有効ビットとして設定します。 |
|
pInitConfig->予約済み | 予約済み |
pInitConfig->フィルター | フィルタリング モードの設定については、フィルタ モード テーブルのセクションを参照してください。 |
pInitConfig->タイミング0 | ボーレートT0設定 |
pInitConfig->タイミング1 | ボーレートT1設定 |
pInitConfig->モード | 動作モード: 0-通常動作 1-リスニング専用モード 2-自発的な受付および送信テストモード(この値はZLG関数ライブラリから除外されます) |
フィルターモードテーブル:
価値 | 名前 | 説明 |
1 | すべてのタイプを受け取る | 標準フレームと拡張フレームの両方に適しています! |
2 | 標準フレームのみ受信 | 標準フレームに適合し、拡張可能 |
フレームは直接濾過により除去されます! | ||
3 | 拡張フレームのみ受信 | 拡張フレームに適しており、標準フレームは削除され、 直接濾過!。 |
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
例えば
2.2.4. VCI_ReadBoardInfo
この関数は、アダプタのハードウェア情報を読み取るために使用されます。通常は無視できます。
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType、DWORD
DevIndex、PVCI_BOARD_INFO pInfo);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CANアダプタが0つしかない場合、インデックス番号は0です。USB-CANアダプタが複数ある場合、インデックス番号はXNUMXから始まる昇順になります。
VCI_BOARD_INFO は、デバイス情報構造体ポインターを格納するために使用されます。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
2.2.5. VCI_GetReceiveNum
この関数は、指定された受信バッファ内の受信されたがまだ読み取られていないフレームを指定するために使用されます。
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType、DWORD DevIndex、DWORD CANIndex);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CAN チャネル インデックス。
戻り値:
まだ読み取られていないフレームを返します。
例えば
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_クリアバッファ
この関数は、指定されたチャネルの受信バッファと送信バッファをクリアするために使用されます。
USB-CAN アダプタ。
DWORD __stdcall VCI_ClearBuffer(DWORD DevType、DWORD DevIndex、DWORD CANIndex);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CAN チャネル インデックス。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
2.2.7. VCI_StartCAN
この関数は、CAN コントローラとアダプタの内部割り込み受信機能を起動するために使用されます。
DWORD __stdcall VCI_StartCAN(DWORD DevType、DWORD DevIndex、DWORD CANIndex);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CAN チャネル インデックス。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
2.2.8. VCI_リセットCAN
この関数は、CAN コントローラをリセットするために使用されます。
DWORD __stdcall VCI_ResetCAN(DWORD DevType、DWORD DevIndex、DWORD CANIndex);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CAN チャネル インデックス。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
2.2.9. VCI_送信
この関数は、CAN メッセージ フレームを送信するために使用されます。
DWORD __stdcall VCI_Transmit(DWORD DeviceType、DWORD DeviceInd、DWORD CANInd、PVCI_CAN_OBJ pSend、DWORD 長さ);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CANチャンネルインデックス。pSend
送信する必要があるデータ フレーム配列の最初のアドレス。
長さ
送信する必要があるデータ フレームの数。最大数は 1000 で、高速時の推奨値は 48 です。
戻り値:
すでに送信されたフレームの実際の数を返します。戻り値 = -1 はデバイス エラーを示します。
例えば
2.2.10. VCI_受信
この関数は受信を要求するために使用されます。
DWORD __stdcall VCI_Receive(DWORD DevType、DWORD DevIndex、DWORD CANIndex、PVCI_CAN_OBJ pReceive、ULONG Len、INT WaitTime);
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
CANインデックス
CAN チャネル インデックス。
受信
データフレームの最初のセットポインターを受信します。
レン
通常のメッセージを返すには、データ フレームの配列の長さが 2500 を超える必要があります。
それ以外の場合、メッセージが受信されたかどうかに関係なく、返される長さは 2000 になります。アダプタは、チャネルごとに 2500 フレームのバッファを設定します。ユーザーは、自分のシステムと作業環境に基づいて、XNUMX から適切な配列の長さを選択できます。
WaitTime は予約済みです。
戻り値:
実際に読み取られたフレームの数を返します。-1 はデバイス エラーを示します。
例えば
パート3 その他の機能とデータ構造の説明
この章では、USB-CANアダプタインターフェースライブラリControlCAN.dllに含まれる互換性のないZLGインターフェースライブラリの他のデータ型と機能について説明します。
互換性に影響を与えないように、二次開発で互換性のある ZLG モデルを使用する場合は、これらの関数を呼び出さないでください。
3.1機能の説明
3.1.1. VCI_UsbDeviceReset
USB-CAN アダプターをリセットします。リセット後に VCI_OpenDevice を使用してデバイスを再度開く必要があります。
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType、DWORD DevIndex、DWORD 予約済み
パラメータ:
開発タイプ
デバイス タイプ。参照: アダプタ デバイス タイプの定義。
開発インデックス
デバイスインデックス(例)ampたとえば、USB-CAN アダプタが 0 つしかない場合、インデックス番号は 0 になります。USB-CAN アダプタが複数ある場合、インデックス番号は XNUMX から始まる昇順になります。
予約済み 予約済み。
戻り値:
戻り値 = 1 は操作が成功したことを意味し、 = 0 は操作が失敗したことを示し、 = -1 はデバイスが存在しないことを示します。
bRel = VCI_UsbDeviceReset(nDeviceType、独立性、0);
3.1.2. VCI_FindUsbDevice2
同じ PC で複数の USB-CAN を使用している場合、ユーザーはこの機能を使用して現在のデバイスを見つけることができます。
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
パラメータ:
p情報
pInfo は、最初のデータ バッファー アドレス ポインターのパラメーターを格納するために使用されます。
返品
コンピュータに接続されている USB-CAN アダプタの番号を返します。
第4部 プロセスを使用したインタフェースライブラリ関数
デバイス機能を増やすために、追加の関数(緑の背景で表示される関数)を提供しました。これらの関数には、VCI_FindUsbDevice2、VCI_UsbDeviceReset が含まれます。XNUMX 番目の開発中は、これらの関数を必ずしも呼び出す必要はありません。これらの関数を無視しても、すべての USB-CAN アダプター機能を実現できます。
www.waveshare.com
www.waveshare.com/wiki
ドキュメント / リソース
![]() |
WAVESHARE USB-CAN バス インターフェイス アダプタ インターフェイス関数ライブラリ [pdf] 取扱説明書 USB-CAN バス インターフェイス アダプタ インターフェイス関数ライブラリ、USB-CAN、バス インターフェイス アダプタ インターフェイス関数ライブラリ、インターフェイス関数ライブラリ、関数ライブラリ |