can-bus接口函数库使用手册_第1页
can-bus接口函数库使用手册_第2页
can-bus接口函数库使用手册_第3页
can-bus接口函数库使用手册_第4页
can-bus接口函数库使用手册_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2011CAN-bus 接口函数库(LINUX)使用手册 V1.0-爱泰电子目录驱动程序的安装31.1.1.USBCAN 驱动的安装3动态库的安装3动态库的调用及编译3动态库函数说明及其使用3接口卡设备类型定义 各个接口卡的类型定义如下:3错误码定义3函数库中的数据结构定义4接口库函数说明8接口库函数使用流程252.3.4.1. 驱动程序的安装1.1. USBCAN 驱动的安装把driver目录下的usbcan.o文件拷贝到/lib/modules/(*)/kernel/drivers/usb目录下,就完成了驱动的安装(其中(*)根据Linux版本的不同而不同,比如Linux版本为2.4.20

2、-8,则此目录的名称也为“2.4.20-8”,即跟Linux内核版本号相同)。2. 动态库的安装把dll 文件夹中的libcontrolcan.so 文件和kerneldlls 文件夹一起拷贝到/lib目录,然后运行ldconfig /lib命令,就可以完成动态库的安装。3. 动态库的调用及编译动态库的调用是非常简单的,只需要把dll文件夹中的controlcan.h文件拷贝到你的当前工程目录下,然后用#include “controlcan.h”把controlcan.h 文件包含到你的源代码文件中,就可以使用动态库中的函数了。在用GCC 编译的时候只需要添加 lcontrolcan 选项就

3、可以了,比如:gcc lcontrolcan g o test test.c4. 动态库函数说明及其使用4.1. 接口卡设备类型定义 各个接口卡的类型定义如下:4.2. 错误码定义设备名称设备类型号USBCAN13USBCAN244.3. 函数库中的数据结构定义4.3.1接口卡信息的数据结构typedefstruct_VCI_BOARD_INFOUSHORT USHORT USHORT USHORT USHORT USHORT USHORT USHORTUSHORThw_Ver fw_Ver dr_Verin_Ver;irq_Num; can_Num; str_Serial_Num20; st

4、r_hw_Type40;4; VCI_BOARD_INFO,*PVCI_BOARD_INFO;参数:名称值描述ERR_CAN_OVERFLOW0 x00000001CAN 控制器FIFO 溢出ERR_CAN_ERRALARM0 x00000002CAN 控制器错误ERR_CAN_PASSIVE0 x00000004CAN 控制器消极错误ERR_CAN_LOSE0 x00000008CAN 控制器仲裁丢失ERR_CAN_BUSERR0 x00000010CAN 控制器总线错误ERR_DEVICEOPENED0 x00000100设备已经打开ERR_DEVICEOPEN0 x00000200打开设

5、备错误ERR_DEVICENOTOPEN0 x00000400设备没有打开ERR_BUFFEROVERFLOW0 x00000800缓冲区溢出ERR_DEVICENOTEXIST0 x00001000此设备不存在ERR_LOADKERNELDLL0 x00002000装载动态库失败ERR_CMDFAILED0 x00004000执行命令失败错误码ERR_BUFFERCREATE0 x00008000内存hw_Ver fw_Ver dr_Ver in_Ver irq_Numcan_Num用16 进制表示的硬件版本号,比如0 x0100 表示V1.00;用16 进制表示的固件版本号;用16 进制表

6、示的驱动程序版本号;用16 进制表示的接口库版本号;板卡所使用的中断号;表示有几路CAN 通道;str_Serial_Num 此板卡的序列号;str_hw_Type硬件类型,比如“USBCAN系统保留。V1.00”(注意:包括字符串结束符0);4.3.2定义CAN 信息帧的数据结构定义:TypedefU Ustruct_VCI_CAN_OBJID;TimeSt;BYTE BYTE BYTE BYTE BYTE BYTEBYTETimeFlag; SendType; RemoteFlag; ExternFlag; DataLen; Data8;3;VCI_CAN_OBJ,*PVCI_CAN_OB

7、J;参数:TimeFlag是否使用时间标识,为1时TimeSt有效,TimeFlag和TimeSt只在此帧为接收帧时有意义;TimeStSendType接收到信息帧时的时间标识,从CAN控制器初始化开始计时; 发送帧类型,=0时为正常发送,=1时为单次发送,=2时为自发自收,=3时为单次自发自收,只在此帧为发送帧时有意义;RemoteFlagExternFlag是否是帧;是否是扩展帧;IDDataLen Data报文ID;数据长度(AccCodeAccCode 对应SJA1000 中的四个寄存器ACR0, ACR1,ACR2,ACR3,其中高字节对应ACR0,低字节对应ACR3;AccMask

8、 对应SJA1000 中的四个寄存pInitConfig-AccMask当滤波方式为单滤波,接收帧为标准帧时:RTR 对应VCI_CAN_OBJ 中的RemoteFlag当滤波方式为单滤波,接收帧为扩展帧时:器AMR0,AMR1,AMR2,AMR3,其中高字节对应AMR0,低字节对应AMR3。(请看表后说明)pInitConfig-保留pInitConfig-Filter滤波方式,1 表示单滤波,0 表示双滤波pInitConfig-Timing0定时器0pInitConfig-Timing1定时器1pInitConfig-Mode模式,0 表示正常模式,1 表示只听模式当滤波方式为双滤波,接

9、收帧为标准帧时:当滤波方式为双滤波,接收帧为扩展帧时:4.4.4 DWORD stdcallVCI_ReadBoardInfo(DWORDDevType,DWORDDevIndex, PVCI_BOARD_INFO pInfo);参数:DevType:设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN 时,索引号为0,有两个时可以为0 或1。pInfo:用来设备信息的VCI_BOARD_INFO 结构指针。函数功能:此函数用以获取设备信息。返回值:为1 表示操作成功,0 表示操作失败。4.4.5 DWORD stdcallVCI_ReadErrInfo(DWORDDevTyp

10、e, DWORDDevIndex, DWORD CANIndex, PVCI_ERR_INFO pErrInfo);参数:DevType:设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN 时,索引号为0,有两个时可以为0 或1。CANIndex:第几路CAN 。(注:当要 设备错误的时候,此参数应该设为1 。比如当调用VCI_OpenDevice,VCI_CloseDevice 和VCI_ReadBoardInfo 这些与特定的第几路CAN操作无关的操作函数失败后,调用此函数来获取失败错误码的时候应该把CANIndex 设为1。)pErrInfo:用来错误信息的VCI_ER

11、R_INFO 结构指针。函数功能:此函数用以获取最后一次错误信息。返回值:为1 表示操作成功,0 表示操作失败。参数表:(注:pErrInfo-ErrCode 可能为下列各个错误码的多种组合之一)pErrInfo-ErrCodepErrInfo-Passive_ErrDatrrInfo-ArLost_ErrData错误描述0 x0100无无设备已经打开0 x0200无无打开设备错误0 x0400无无设备没有打开0 x0800无无缓冲区溢出0 x1000无无此设备不存在0 x2000无无装载动态库失败0 x4000无无表示为执行命令失败错误0 x8000无内存0 x0001无无CAN 控制器FI

12、FO溢出当(PErrInfo-ErrCode&0 x0004)=0 x0004 时,存在CAN 控制器消极错误PErrInfo-Passive_ErrData0错误代码捕捉位功能表示错误代码类型功能说明错误属性bit5=0;表示发送时发生的错误 =1; 表示接收时发生的错误错误段表示功能说明bit4bit 3bit 2bit 1bit 0功能00011帧开始00010ID.28-ID.2100110ID.20-ID.1800100SRTR 位00101IDE位00111ID.17-ID.1301111ID.12-ID.501110ID.4-ID.0位ECC.7位ECC.6功能00位错01格式错

13、10填充错11其它错误Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0错误代码类型错误属性错误段表示0 x0002无无CAN 控制器错误0 x0004有,具体值见表后无CAN 控制器消极错误0 x0008无有,具体值见表后CAN 控制器仲裁丢失0 x0010无无CAN 控制器总线错误PErrInfo-Passive_ErrData1 表示接收错误计数器PErrInfo-Passive_ErrData2 表示发送错误计数器当(PErrInfo-ErrCode&0 x0008)=0 x0008 时,存在CAN 控制器仲裁丢失错误PErrInfo-ArLost_ErrData 仲裁丢

14、失代码捕捉位功能表示错误段表示功能表示位十进制值功能ALC.4_ALC.3ALC.2ALC.1ALC.0000000仲裁丢失在识别码的bit1000011仲裁丢失在识别码的bit2000102仲裁丢失在识别码的bit3000113仲裁丢失在识别码的bit4001004仲裁丢失在识别码的bit5001015仲裁丢失在识别码的bit6Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0错误段表示01100RTR 位01101保留位101001保留位001011数据长度代码01010数据区01000CRC序列11000CRC定义符11001应答通道11011应答定义符11010帧结束10

15、010中止10001活动错误标志10110消极错误标志10011支配(控制)位误差10111错误定义符11100溢出标志4.4.6 DWORD stdcallVCI_ReadCanSus(DWORDDevType, DWORDus);DevIndex, DWORD CANIndex, PVCI_CAN_S参数:US pCANSDevType:设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN 时,索引号为0,有两个时可以为0 或1。CANIndex:第几路CAN。001106仲裁丢失在识别码的bit7001117仲裁丢失在识别码的bit8010008仲裁丢失在识别码的bit9

16、010019仲裁丢失在识别码的bit100101010仲裁丢失在识别码的bit110101111仲裁丢失在SRTR 位0110012仲裁丢失在IDE位0110113仲裁丢失在识别码的bit120111014仲裁丢失在识别码的bit130111115仲裁丢失在识别码的bit141000016仲裁丢失在识别码的bit151000117仲裁丢失在识别码的bit161001018仲裁丢失在识别码的bit171001119仲裁丢失在识别码的bit181010020仲裁丢失在识别码的bit191010121仲裁丢失在识别码的bit201011022仲裁丢失在识别码的bit211011123仲裁丢失在识别码

17、的bit221100024仲裁丢失在识别码的bit231100125仲裁丢失在识别码的bit241101026仲裁丢失在识别码的bit251101127仲裁丢失在识别码的bit261110028仲裁丢失在识别码的bit271110129仲裁丢失在识别码的bit281111030仲裁丢失在识别码的bit291111131仲裁丢失在ERTR 位pCANSus:用来CAN 状态的VCI_CAN_SUS 结构指针。函数功能:此函数用以获取CAN 状态。返回值:为1 表示操作成功,0 表示操作失败。4.4.7 DWORD stdcall VCI_GetReference(DWORD DevType,DW

18、ORD DevIndex,DWORD CANIndex,DWORD RefType,PVOID pData);参数:DevType:设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN时,索引号为0,有两个时可以为0 CANIndex:第几路CAN。RefType:参数类型。或1。pData:用来参数有关数据缓冲区地址首指针。函数功能:此函数用以获取设备的相应参数。返回值:为1 表示操作成功,0 表示操作失败。参数表:(1) 当设备类型为USBCAN1,USBCAN2 时:RefTypepData功能描述当RefType=1 时,此时返回的pData 各个字节所代表的意义如下:

19、 pData0信息保留 pData1表示CAN控制器BTR0的值; pData2表示CAN控制器BTR1的值; pData3波器模式,位功能该组验收滤MFORMATB=1; 验收滤波器该组仅用于扩展帧信息。标准帧信息被忽略。=0; 验收滤波器该组仅用于标准帧信息。扩展帧信息被忽略。AMODEB=1; 单验收滤波器选项使能长滤波器有效=0; 双验收滤波器选项使能短滤波器有效 pData4该组验收滤波器的使能,位功能BF2EN=1; 该组滤波器2使能,不能对相应的和代码寄存器进行写操作=0; 该组滤波器2,可以改变相应的和代码寄存器BF1EN=1; 该组滤波器1使能,不能对相应的和代码寄存器进行写

20、操作SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2ENBF1ENSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0MFORMATBAMODEB总长度 1 个字节,当作为输入参数时,表示为所要的 CAN 控制器的控制寄存器的地址。当作为输出参数时,表示为 CAN 控制器的控制寄存器的值。读CAN 控制器的指定控制寄存器的值, 例如对USBCAN1:BYTE val=0;VCI_GetReference(VCI_USBCAN1,0,0,1,(PVOID)&val);如果此函数调用成功,则在val 中返回寄存器的值。=0; 该组滤

21、波器1,可以改变相应的和代码寄存器 注: 如果选择单滤波器模式,该单滤波器与对应的滤波器1 使能位相关。滤波器2 使能位在单滤波器 模式中不起作用。pData5该组验收滤波器的优先级,位功能BF2PRIO=1; 该组滤波器2优先级高,如果信息通过该组滤波器2,立即产生接收中断0;该组滤波器2优先级低,如果FIFO 级超过接收中断级滤波器,产生接收中断BF1PRIO=1; 该组滤波器1优先级高,如果信息通过该组滤波器1 ,立即产生接收中断0;该组滤波器1优先级低,如果FIFO 级超过接收中断级滤波器,产生接收中断pData6-9表示该组滤波器ACR的值;pDataa-d表示该组滤波器AMR 的值

22、;4.4.8 DWORD stdcallVCI_SetReference(DWORDDevType,DWORDDevIndex,DWORD CANIndex,DWORD RefType,PVOID pData);参数:DevType:设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN 时,索引号为0,有两个时可以为0 CANIndex:第几路CAN。RefType:参数类型。或1。pData: 用来参数有关数据缓冲区地址首指针。函数功能:此函数用以设置设备的相应参数,主要处理不同设备的特定操作。返回值:为1 表示操作成功,0 表示操作失败。注:VCI_SetReference

23、 和VCI_GetReference 这两个函数是用来针对各个不同设备的一些特定操作的。函数中的PVOID 型参数pData 随不同设备的不同操作而具有不同的意义。参数表:(1) 当设备类型为USBCAN1,USBCAN2 时:SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2PRIOBF1PRIO当RefType=2 时,此时的pData 各个字节所代表的意义如下:pData0设置哪一组验收滤波器;共有4 组, =1:设置第1组; =2:设置第2组; =3:设置第3组;=4:设置第4组; pData1设置该组验收滤波器模式,位功能MFORMATB =1;

24、验收滤波器该组仅用于扩展帧信息。标准帧信息被忽略。=0; 验收滤波器该组仅用于标准帧信息。扩展帧信息被忽略。AMODEB=1; 单验收滤波器选项使能长滤波器有效=0; 双验收滤波器选项使能短滤波器有效 pData2设置该组验收滤波器的使能,位功能BF2EN=1; 该组滤波器2使能,不能对相应的和代码寄存器进行写操作=0; 该组滤波器2,可以改变相应的和代码寄存器BF1EN=1; 该组滤波器1使能,不能对相应的和代码寄存器进行写操作=0; 该组滤波器1,可以改变相应的和代码寄存器注: 如果选择单滤波器模式,该单滤波器与对应的滤波器1 使能位相关。滤波器2使SUS.7SUS.6SUS.5SUS.4

25、SUS.3SUS.2SUS.1SUS.0BF2ENBF1ENSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0MFORMATBAMODEBRefTypepData功能描述1总长度为2 个字节, pData0 表示CAN控制器的控制寄存器的地址,pData1 表示要写入的数值。CAN 控制器的指定控制寄存器能位在单滤波器 模式中不起作用。pData3设置该组验收滤波器的优先级,位功能BF2PRIO =1; 该组滤波器2优先级高,如果信息通过该组滤波器2 ,立即产生接收中断=0; 该组滤波器2优先级低,如果FIFO 级超过接收中断级滤波器,产生接收中断BF1PRIO

26、=1; 该组滤波器1优先级高,如果信息通过该组滤波器1 ,立即产生接收中断=0; 该组滤波器1优先级低,如果FIFO 级超过接收中断级滤波器,产生接收中断pData4-7 分别对应要设置的SJA1000的ACR0-ACR3的值;pData8-b 分别对应要设置的SJA1000的AMR0-AMR3的值;4.4.9 ULONG stdcallVCI_GetReceiveNum(DWORDDevType,DWORDDevIndex,DWORD CANIndex);参数:DevType:设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN 时,索引号为0,有两个时可以为0 CANInd

27、ex:第几路CAN。或1。函数功能:此函数用以获取指定接收缓冲区中接收到但尚未被的帧数。返回值:返回尚未被的帧数。4.4.10 DWORD stdcallVCI_ClearBuffer(DWORDDevType,DWORDDevIndex,DWORD CANIndex);参数:DevType:SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2PRIOBF1PRIO设备类型号。DevIndex:设备索引号,比如当只有一个USBCAN 时,索引号为0,有两个时可以为0 或1。CANIndex:第几路CAN。函数功能:此函数用以清空指定缓冲区。返回值:为1 表示操作成功,0 表示操作失败。4.4.11 DWORD stdcallVCI_StartCAN(DWORDDevType,DWORDDevIndex,DWORD CANIndex);参数:DevType:设备类型号。DevIndex:设备索引号,比如当只

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论