2.接口函数库(二次开发库)使用说明书
接口函数库(二次开发库)
使用说明书
说明书版本:V2.01
更新日期:2016.04.01
2.接口函数库(二次开发库)使用说明书
目 录
第一部分 概述 ..........................................................................................................................1
第二部分 兼容ZLG函数库及数据结构 ................................................................................2
2.1 类型定义 ....................................................................................................................... 2
2.1.1 Device Type.............................................................................................................. 2
2.1.2 VCI_BOARD_INFO ................................................................................................ 2
2.1.3 VCI_CAN_OBJ ........................................................................................................ 3
2.1.4 VCI_INIT_CONFIG ................................................................................................ 4
2.2 函数描述 ....................................................................................................................... 7
2.2.1 VCI_OpenDevice ..................................................................................................... 7
2.2.2 VCI_CloseDevice ..................................................................................................... 8
2.2.3 VCI_InitCan ............................................................................................................. 8
2.2.4 VCI_ReadBoardInfo ............................................................................................... 11
2.2.5 VCI_GetReceiveNum ............................................................................................. 12
2.2.6 VCI_ClearBuffer .................................................................................................... 13
2.2.7 VCI_StartCAN ....................................................................................................... 14
2.2.8 VCI_ResetCAN ...................................................................................................... 15
2.2.9 VCI_Transmit ......................................................................................................... 16
2.2.10 VCI_Receive ........................................................................................................ 17
第三部分 其他函数及数据结构描述 ................................................................................... 19
3.1 类型定义 ..................................................................................................................... 19
3.1.1 VCI_BOARD_INFO1 ............................................................................................ 19
3.2 函数描述 ..................................................................................................................... 20
3.2.1 VCI_GetReference2 ............................................................... 21
3.2.2 VCI_SetReference2 ................................................................ 21
3.2.3 VCI_ConnectDevice ............................................................................................... 21
3.2.4 VCI_UsbDeviceReset ............................................................................................. 22
3.2.5 VCI_FindUsbDevice .............................................................................................. 23
第四部分 接口库函数使用流程 ........................................................................................... 24
圣为科技
I
2.接口函数库(二次开发库)使用说明书
第一部分 概述
用户如果只是利用USB-CAN总线接口适配器进行CAN总线调试,可以直接利用随机提供的
USB-CAN Tool工具软件,进行收发数据的测试。
如果用户打算编写自己产品的软件程序。请认真阅读以下说明,并参考我们提供的:
① C++Builder ②C# ③VC ④VB ⑤VB.NET ⑥Delphi ⑦LabVIEW ⑧ LabWindows/CVI
⑨Matlab等示例代码。
开发用库文件:ControlCAN.lib, ControlCAN.DLL
VC平台函数声明文件:ControlCAN.h
VB平台函数声明文件:ControlCAN.bas
LabVIEW平台库函数封装模块:ControlCAN.llb
Delphi平台函数声明文件:ControlCAN.pas
圣为科技
第1页
2.接口函数库(二次开发库)使用说明书
第二部分 兼容ZLG函数库及数据结构
2.1 类型定义
2.1.1 Device Type
类型定义 类型值 描述
VCI_USBCAN2 4
USBCAN-2A
USBCAN-2C
CANalyst-II
2.1.2 VCI_BOARD_INFO
VCI_BOARD_INFO结构体包含USB-CAN系列接口卡的设备信息。结构体将在
VCI_ReadBoardInfo函数中被填充。
typedef struct _VCI_BOARD_INFO {
USHORT hw_Version;
USHORT fw_Version;
USHORT dr_Version;
USHORT in_Version;
USHORT irq_Num;
BYTE can_Num;
CHAR str_Serial_Num[20];
CHAR str_hw_Type[40];
USHORT Reserved[4];
} VCI_BOARD_INFO, *PVCI_BOARD_INFO;
成员:
hw_Version
硬件版本号,用16进制表示。比如0x0100表示V1.00。
fw_Version
固件版本号,用16进制表示。比如0x0100表示V1.00。
圣为科技
第2页
2.接口函数库(二次开发库)使用说明书
dr_Version
驱动程序版本号,用16进制表示。比如0x0100表示V1.00。
in_Version
接口库版本号,用16进制表示。比如0x0100表示V1.00。
irq_Num
保留参数。
can_Num
表示有几路CAN通道。
str_Serial_Num
此板卡的序列号。
str_hw_Type
硬件类型,比如“USBCAN V1.00”(注意:包括字符串结束符’\0’)
Reserved
系统保留。
2.1.3 VCI_CAN_OBJ
描述
VCI_CAN_OBJ结构体是CAN帧结构体,即1个结构体表示一个帧的数据结构。在发送
函数VCI_Transmit和接收函数VCI_Receive中,被用来传送CAN信息帧。
typedef struct _VCI_CAN_OBJ {
UINT ID;
UINT TimeStamp;
BYTE TimeFlag;
BYTE SendType;
BYTE RemoteFlag;
BYTE ExternFlag;
BYTE DataLen;
BYTE Data[8];
BYTE Reserved[3];
圣为科技
第3页
2.接口函数库(二次开发库)使用说明书
}VCI_CAN_OBJ, *PVCI_CAN_OBJ;
成员:
ID
帧ID。32位变量,数据格式为靠右对齐。详情请参照:《8.附件1:ID对齐方式.pdf》说
明文档。
TimeStamp
设备接收到某一帧的时间标识。时间标示从CAN卡上电开始计时,计时单位为0.1ms。
TimeFlag
是否使用时间标识,为1时TimeStamp有效,TimeFlag和TimeStamp只在此帧为接收帧时
有意义。
SendType
发送帧类型。
=0时为正常发送(发送失败会自动重发,重发最长时间为1.5-3秒);
=1时为单次发送(只发送一次,不自动重发);
其它值无效。
RemoteFlag
是否是远程帧。=0时为为数据帧,=1时为远程帧(数据段空)。
ExternFlag
是否是扩展帧。=0时为标准帧(11位ID),=1时为扩展帧(29位ID)。
DataLen
数据长度 DLC (<=8),即CAN帧Data有几个字节。约束了后面Data[8]中的有效字节。
Data[8]
CAN帧的数据。由于CAN规定了最大是8个字节,所以这里预留了8个字节的空间,受
DataLen约束。如DataLen定义为3,即Data[0]、Data[1]、Data[2]是有效的。
Reserved
系统保留。
2.1.4 VCI_INIT_CONFIG
VCI_INIT_CONFIG结构体定义了初始化CAN的配置。结构体将在VCI_InitCan函数中被
圣为科技
第4页
2.接口函数库(二次开发库)使用说明书
填充,即初始化之前,要先填好这个结构体变量。
typedef struct _INIT_CONFIG {
DWORD AccCode;
DWORD AccMask;
DWORD Reserved;
UCHAR Filter;
UCHAR Timing0;
UCHAR Timing1;
UCHAR Mode;
} VCI_INIT_CONFIG, *PVCI_INIT_CONFIG;
成员:
AccCode
验收码。SJA1000的帧过滤验收码。对经过屏蔽码过滤为“有关位”进行匹配,全部匹
配成功后,此帧可以被接收。否则不接收。详见VCI_InitCAN。
AccMask
屏蔽码。SJA1000的帧过滤屏蔽码。对接收的CAN帧ID进行过滤,对应位为0的是“有
关位”,对应位为1的是“无关位”。屏蔽码推荐设置为0xFFFFFFFF,即全部接收。
Reserved
保留。
Filter
滤波方式,允许设置为0-3,详细请参照2.2.3节的滤波模式对照表。
Timing0
波特率定时器 0(BTR0)。设置值见下表。
Timing1
波特率定时器 1(BTR1)。设置值见下表。
Mode
模式。=0表示正常模式(相当于正常节点),=1表示只听模式(只接收,不影响总线),
=2表示自发自收模式(环回模式)。
备注:
圣为科技
第5页
2.接口函数库(二次开发库)使用说明书
关于滤波器的设置,请参照:《9.附件2:CAN参数设置.pdf》说明文档。
Timing0和Timing1用来设置CAN波特率,几种常见的波特率(采样点87.5%,SJW为0)
设置如下:
CAN波特率 Timing0(BTR0) Timing1(BTR1)
10 Kbps 0x31 0x1C
20 Kbps 0x18 0x1C
40 Kbps 0x87 0xFF
50 Kbps 0x09 0x1C
80 Kbps 0x83 0xFF
100 Kbps 0x04 0x1C
125 Kbps 0x03 0x1C
200 Kbps 0x81 0xFA
250 Kbps 0x01 0x1C
400 Kbps 0x80 0xFA
500 Kbps 0x00 0x1C
666 Kbps 0x80 0xB6
800 Kbps 0x00 0x16
1000 Kbps 0x00 0x14
33.33 Kbps 0x09 0x6F
66.66 Kbps 0x04 0x6F
83.33 Kbps 0x03 0x6F
注:
1.配置波特率时,用户只需要按照SJA1000(16MHz)给的波特率参数进行设置
即可。
2.常规波特率直接按照上表的值配置即可。其它非常规波特率,可以使用附带
的波特率侦测工具进行侦测,并到得相应的波特率参数。或是使用USB_CAN TOOL
安装目录下的波特率计算工具计算。(参考《6.插件2:波特率侦测工具使用说
明书.pdf》)
3.本适配器暂时不支持10K以下波特率。
圣为科技
第6页