波浪标志USB-CAN总线接口
适配器接口函数
图书馆使用说明WAVESHARE USB CAN总线接口适配器接口函数库

第一部分结束VIEW

如果用户只是使用USB-CAN总线接口适配器进行CAN总线通信测试,则可以直接使用随机提供的USB-CAN Tool软件进行测试数据的收发。
如果用户打算为自己的产品编写软件程序。 请仔细阅读以下说明并参考amp我们提供的代码:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑷VB.NET ⑩Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-可以。
开发库 file :ControlCAN.lib、ControlCAN.DLL
VC版函数声明 file :控制CAN.h
VB版函数声明 file: 控制CAN.bas
实验室VIEW 版本库函数包模块:ControlCAN.llb
Delphi版本函数声明 file: 控制CAN.pas

第二部分兼容函数库和数据结构

2.1. 类型定义
2.1.1.设备类型

类型定义 类型值 描述
DEV_USBCAN2 4 USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN

2.1.2. VCI_BOARD_INFO
VCI_BOARD_INFO 结构包含 USB-CAN 系列接口卡设备信息。
该结构将填充在 VCI_ReadBoardInfo 函数中。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 1

成员:
硬件版本
硬件版本号,十六进制表示法。 例如 0x0100 表示 V1.00。
fw_版本
硬件版本号,十六进制表示法。 例如 0x0100 表示 V1.00。
第 2 页
dr_版本

驱动版本号,十六进制。 例如 0x0100 表示 V1.00。
in_版本
接口库版本号,十六进制表示。 例如 0x0100 表示 V1.00。
中断号
系统预留。
可以数
表示 CAN 通道总数。
str_Serial_Num
此板卡的序列号。
str_hw_类型
硬件类型,例如“USBCAN V1.00”(注意:包括字符串终止符'\0')。
预订的
系统预留。
2.1.3. VCI_CAN_OBJ
在函数VCI_Transmit 和VCI_Receive 中,VCI_CAN_OBJ 结构用于发送CAN 消息帧。

WAVESHARE USB CAN总线接口适配器接口函数库-图

成员:
ID
消息标识符。 直接ID格式,右对齐,请参考:附件一:ID对齐详解。
时间圣amp
接收圣amp 时间帧信息,CAN控制器初始化时开始计时,单位为0. 1ms。
时间标志
在是否使用时间st方面amp, 1 是有效的 TimeStamp. TimeFlag 和 TimeStamp 只有在接收到帧时才有意义。
发送类型
发送类型。 = 0 表示 Normal 类型, = 1 表示 Single Send。
远程标志
是否为远程标志。 = 1 表示远程标志, = 0 表示数据标志。
外部标志
是否为外部标志。 = 1 表示外部标志, = 0 表示标准标志。
数据线
Data length(<=8) ,即数据的长度。
数据
数据包。
预订的
系统预留。
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG 结构定义了 CAN 的初始化配置。 该结构将填充在 VCI_InitCan 函数中。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 2

成员:
密码
接收过滤后的接受代码。
掩码
接收过滤掩码。
预订的
预订的。
筛选
过滤方式,允许设置范围0-3,详见过滤方式表2.2.3节。
时序0
SJA1000 波特率参数,Timing0 (BTR0)。
时序1
SJA1000 波特率参数,Timing1 (BTR1)。
模式
操作模式,0 = 正常操作,1 = 只听模式,2 = 自发接纳和发送测试模式。
评论:
关于过滤器的设置请参考:附件二:CAN参数设置说明。
CAN Timing0和Timing1用于设置波特率,这两个参数只在初始化时使用tage.
常规波特参考表:

CAN波特率 时序0(BTR0) 时序1(BTR1)
10k bps 0x31 0x1C
20k bps 0x18 0x1C
40k bps 0x87 0xFF
50k bps 0x09 0x1C
80k bps 0x83 0xFF
100k bps 0x04 0x1C
125k bps 0x03 0x1C
200k bps 0x81 0xFA
250k bps 0x01 0x1C
400k bps 0x80 0xFA
500k bps 0x00 0x1C
666k bps 0x80 0xB6
800k bps 0x00 0x16
1000k bps 0x00 0x14
33.33 Kbps 0x09 0x6F
66.66 Kbps 0x04 0x6F
83.33 Kbps 0x03 0x6F
  1. 用户只需按照SJA1000(16MHz)设置波特率参数即可。
  2. 适配器暂时不支持低于 10K 的波特率。

五、功能说明
2.2.1. VCI_开放设备
该函数用于连接设备。
DWORD __stdcall VCI_OpenDevice(DWORD DevType、DWORD DevIndex、DWORD 保留);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
预订的
保留参数,填0。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN总线接口适配器接口函数库-图3

2.2.2. VCI_关闭设备
该函数用于关闭连接。
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 4

2.2.3. VCI_InitCan
该函数用于初始化指定的CAN。
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);

参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
CAN索引
CAN通道索引,比如当只有一个CAN通道时,索引号为0,如果有两个,则索引号可以为0或1。
p初始化配置
初始化参数结构。 成员参数列表:

成员 功能描述
pInitConfig->AccCode AccCode 和 AccMask 可以一起工作来确定哪些数据包可以被接受。 这两个寄存器用于设置ID左对齐,即AccCode和AccMask的最高位(Bit31)与ID值的最高位对齐。
pInitConfig->AccMask 关于ID对齐参考附件: 附件一:
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)都是相关位)。
笔记: 此过滤器设置 examp标准框架的文件,例如ample,高11位为有效位; 在扩展帧的情况下,则有效 ID 为 29 位。 AccCode 和 AccMask 设置高 29 位为有效位!
pInitConfig->保留 预订的
pInitConfig->过滤器 过滤模式设置请参考过滤模式表部分。
pInitConfig->Timing0 波特率T0设置
pInitConfig->Timing1 波特率T1设置
pInitConfig->模式 操作模式:
0-正常运行
1-只听模式
2-自发收送测试模式(ZLG函数库中不包含该值)

过滤模式表:

价值 姓名 描述
1 接收所有类型 适用于标准框架和加长框架!
2 只接收标准帧 适用于标准框架,并扩展
frame会直接过滤掉!
3 只接收扩展帧 适用于扩展框架,标准框架将被删除
直接过滤! 。

返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。
例如

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 4

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 6

2.2.4. VCI_ReadBoardInfo
该函数用于读取适配器硬件信息。 一般来说,可以忽略。
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始升序排列。 pInfo
VCI_BOARD_INFO 是用来存放设备信息的结构体指针。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 7

2.2.5。 VCI_GetReceiveNum
该函数用于指定接收到但还没有被读取的帧在指定的接收缓冲区中。
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType、DWORD DevIndex、DWORD CANIndex);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
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);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
CAN索引
CAN 通道索引。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 8

2.2.7. VCI_StartCAN
该函数用于启动CAN控制器和适配器内部中断接收功能。
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
CAN索引
CAN 通道索引。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 9

2.2.8. VCI_复位CAN
该函数用于复位 CAN 控制器。
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
CAN索引
CAN 通道索引。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 10

2.2.9. VCI_传输
该函数用于发送 CAN 报文帧。
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD 长度);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
CAN索引
CAN 通道索引。 发送
必须发送的数据帧数组的首地址。
长度
需要发送的数据帧数,最大1000,高速下推荐48。
返回:
返回实际已经发送的帧数,返回值=-1表示设备错误。
例如
WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 11

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 12

2.2.10。 VCI_接收
该函数用于请求接收。
DWORD __stdcall VCI_Receive(DWORD DevType,DWORD DevIndex,DWORD CANIndex,PVCI_CAN_OBJ pReceive,ULONG Len,INT WaitTime);
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
CAN索引
CAN 通道索引。
接收
接收数据帧的第一个设置指针。

数据帧的数组长度必须大于2500才能返回正常消息。
否则,无论是否收到消息,返回长度都将为零。 适配器为每个通道设置一个 2000 帧的缓冲区。 用户可以根据自己的系统和工作环境,从2500中选择合适的数组长度。
等待时间保留。
返回:
返回实际读取的帧数,-1表示设备错误。
例如
WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 13

第三部分其他函数及数据结构说明

本章介绍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 保留
参数:
开发类型
设备类型。 请参阅:适配器设备类型定义。
开发指数
设备索引,例如ample,当只有一个USB-CAN适配器时,索引号为0,当有多个USB-CAN适配器时,索引号从0开始按升序排列。
保留 保留。
返回:
返回值=1,表示操作成功; = 0表示操作失败; = -1 表示设备不存在。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 14

bRel = VCI_UsbDeviceReset(nDeviceType, 独立性, 0);
3.1.2. VCI_查找UsbDevice2
当同一台 PC 使用多个 USB-CAN 时,用户可以使用此功能查找当前设备。
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
参数:
信息
pInfo用于存放参数的第一个数据缓冲区地址指针。
返回
返回插入计算机的 USB-CAN 适配器的编号。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 15

第四部分接口库函数使用流程
为了增加设备功能,我们提供了额外的功能(以绿色背景呈现的功能),这些功能包括:VCI_FindUsbDevice2 VCI_UsbDeviceReset。 二次开发时,这些函数不一定要调用。 即使忽略这些功能,也可以实现USB-CAN适配器的所有功能。

WAVESHARE USB CAN 总线接口适配器接口函数库 - 图 16

www.waveshare.com
www.waveshare.com/wiki

文件/资源

WAVESHARE USB-CAN总线接口适配器接口函数库 [pdf] 使用说明书
USB-CAN Bus Inter face Adapter接口函数库,USB-CAN,Bus Inter face Adapter接口函数库,接口函数库,函数库

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *