




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2011CAN-bus 接口函數(shù)庫(LINUX)使用手冊 V1.0-愛泰電子目錄驅(qū)動程序的安裝31.1.1.USBCAN 驅(qū)動的安裝3動態(tài)庫的安裝3動態(tài)庫的調(diào)用及編譯3動態(tài)庫函數(shù)說明及其使用3接口卡設(shè)備類型定義 各個接口卡的類型定義如下:3錯誤碼定義3函數(shù)庫中的數(shù)據(jù)結(jié)構(gòu)定義4接口庫函數(shù)說明8接口庫函數(shù)使用流程252.3.4.1. 驅(qū)動程序的安裝1.1. USBCAN 驅(qū)動的安裝把driver目錄下的usbcan.o文件拷貝到/lib/modules/(*)/kernel/drivers/usb目錄下,就完成了驅(qū)動的安裝(其中(*)根據(jù)Linux版本的不同而不同,比如Linux版本為2.4.20
2、-8,則此目錄的名稱也為“2.4.20-8”,即跟Linux內(nèi)核版本號相同)。2. 動態(tài)庫的安裝把dll 文件夾中的libcontrolcan.so 文件和kerneldlls 文件夾一起拷貝到/lib目錄,然后運行l(wèi)dconfig /lib命令,就可以完成動態(tài)庫的安裝。3. 動態(tài)庫的調(diào)用及編譯動態(tài)庫的調(diào)用是非常簡單的,只需要把dll文件夾中的controlcan.h文件拷貝到你的當(dāng)前工程目錄下,然后用#include “controlcan.h”把controlcan.h 文件包含到你的源代碼文件中,就可以使用動態(tài)庫中的函數(shù)了。在用GCC 編譯的時候只需要添加 lcontrolcan 選項就
3、可以了,比如:gcc lcontrolcan g o test test.c4. 動態(tài)庫函數(shù)說明及其使用4.1. 接口卡設(shè)備類型定義 各個接口卡的類型定義如下:4.2. 錯誤碼定義設(shè)備名稱設(shè)備類型號USBCAN13USBCAN244.3. 函數(shù)庫中的數(shù)據(jù)結(jié)構(gòu)定義4.3.1接口卡信息的數(shù)據(jù)結(jié)構(gòu)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;參數(shù):名稱值描述ERR_CAN_OVERFLOW0 x00000001CAN 控制器FIFO 溢出ERR_CAN_ERRALARM0 x00000002CAN 控制器錯誤ERR_CAN_PASSIVE0 x00000004CAN 控制器消極錯誤ERR_CAN_LOSE0 x00000008CAN 控制器仲裁丟失ERR_CAN_BUSERR0 x00000010CAN 控制器總線錯誤ERR_DEVICEOPENED0 x00000100設(shè)備已經(jīng)打開ERR_DEVICEOPEN0 x00000200打開設(shè)
5、備錯誤ERR_DEVICENOTOPEN0 x00000400設(shè)備沒有打開ERR_BUFFEROVERFLOW0 x00000800緩沖區(qū)溢出ERR_DEVICENOTEXIST0 x00001000此設(shè)備不存在ERR_LOADKERNELDLL0 x00002000裝載動態(tài)庫失敗ERR_CMDFAILED0 x00004000執(zhí)行命令失敗錯誤碼ERR_BUFFERCREATE0 x00008000內(nèi)存hw_Ver fw_Ver dr_Ver in_Ver irq_Numcan_Num用16 進制表示的硬件版本號,比如0 x0100 表示V1.00;用16 進制表示的固件版本號;用16 進制表
6、示的驅(qū)動程序版本號;用16 進制表示的接口庫版本號;板卡所使用的中斷號;表示有幾路CAN 通道;str_Serial_Num 此板卡的序列號;str_hw_Type硬件類型,比如“USBCAN系統(tǒng)保留。V1.00”(注意:包括字符串結(jié)束符0);4.3.2定義CAN 信息幀的數(shù)據(jù)結(jié)構(gòu)定義: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;參數(shù):TimeFlag是否使用時間標(biāo)識,為1時TimeSt有效,TimeFlag和TimeSt只在此幀為接收幀時有意義;TimeStSendType接收到信息幀時的時間標(biāo)識,從CAN控制器初始化開始計時; 發(fā)送幀類型,=0時為正常發(fā)送,=1時為單次發(fā)送,=2時為自發(fā)自收,=3時為單次自發(fā)自收,只在此幀為發(fā)送幀時有意義;RemoteFlagExternFlag是否是幀;是否是擴展幀;IDDataLen Data報文ID;數(shù)據(jù)長度(AccCodeAccCode 對應(yīng)SJA1000 中的四個寄存器ACR0, ACR1,ACR2,ACR3,其中高字節(jié)對應(yīng)ACR0,低字節(jié)對應(yīng)ACR3;AccMask
8、 對應(yīng)SJA1000 中的四個寄存pInitConfig-AccMask當(dāng)濾波方式為單濾波,接收幀為標(biāo)準幀時:RTR 對應(yīng)VCI_CAN_OBJ 中的RemoteFlag當(dāng)濾波方式為單濾波,接收幀為擴展幀時:器AMR0,AMR1,AMR2,AMR3,其中高字節(jié)對應(yīng)AMR0,低字節(jié)對應(yīng)AMR3。(請看表后說明)pInitConfig-保留pInitConfig-Filter濾波方式,1 表示單濾波,0 表示雙濾波pInitConfig-Timing0定時器0pInitConfig-Timing1定時器1pInitConfig-Mode模式,0 表示正常模式,1 表示只聽模式當(dāng)濾波方式為雙濾波,接
9、收幀為標(biāo)準幀時:當(dāng)濾波方式為雙濾波,接收幀為擴展幀時:4.4.4 DWORD stdcallVCI_ReadBoardInfo(DWORDDevType,DWORDDevIndex, PVCI_BOARD_INFO pInfo);參數(shù):DevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個USBCAN 時,索引號為0,有兩個時可以為0 或1。pInfo:用來設(shè)備信息的VCI_BOARD_INFO 結(jié)構(gòu)指針。函數(shù)功能:此函數(shù)用以獲取設(shè)備信息。返回值:為1 表示操作成功,0 表示操作失敗。4.4.5 DWORD stdcallVCI_ReadErrInfo(DWORDDevTyp
10、e, DWORDDevIndex, DWORD CANIndex, PVCI_ERR_INFO pErrInfo);參數(shù):DevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個USBCAN 時,索引號為0,有兩個時可以為0 或1。CANIndex:第幾路CAN 。(注:當(dāng)要 設(shè)備錯誤的時候,此參數(shù)應(yīng)該設(shè)為1 。比如當(dāng)調(diào)用VCI_OpenDevice,VCI_CloseDevice 和VCI_ReadBoardInfo 這些與特定的第幾路CAN操作無關(guān)的操作函數(shù)失敗后,調(diào)用此函數(shù)來獲取失敗錯誤碼的時候應(yīng)該把CANIndex 設(shè)為1。)pErrInfo:用來錯誤信息的VCI_ER
11、R_INFO 結(jié)構(gòu)指針。函數(shù)功能:此函數(shù)用以獲取最后一次錯誤信息。返回值:為1 表示操作成功,0 表示操作失敗。參數(shù)表:(注:pErrInfo-ErrCode 可能為下列各個錯誤碼的多種組合之一)pErrInfo-ErrCodepErrInfo-Passive_ErrDatrrInfo-ArLost_ErrData錯誤描述0 x0100無無設(shè)備已經(jīng)打開0 x0200無無打開設(shè)備錯誤0 x0400無無設(shè)備沒有打開0 x0800無無緩沖區(qū)溢出0 x1000無無此設(shè)備不存在0 x2000無無裝載動態(tài)庫失敗0 x4000無無表示為執(zhí)行命令失敗錯誤0 x8000無內(nèi)存0 x0001無無CAN 控制器FI
12、FO溢出當(dāng)(PErrInfo-ErrCode&0 x0004)=0 x0004 時,存在CAN 控制器消極錯誤PErrInfo-Passive_ErrData0錯誤代碼捕捉位功能表示錯誤代碼類型功能說明錯誤屬性bit5=0;表示發(fā)送時發(fā)生的錯誤 =1; 表示接收時發(fā)生的錯誤錯誤段表示功能說明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 表示接收錯誤計數(shù)器PErrInfo-Passive_ErrData2 表示發(fā)送錯誤計數(shù)器當(dāng)(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數(shù)據(jù)長度代碼01010數(shù)據(jù)區(qū)01000CRC序列11000CRC定義符11001應(yīng)答通道11011應(yīng)答定義符11010幀結(jié)束10
15、010中止10001活動錯誤標(biāo)志10110消極錯誤標(biāo)志10011支配(控制)位誤差10111錯誤定義符11100溢出標(biāo)志4.4.6 DWORD stdcallVCI_ReadCanSus(DWORDDevType, DWORDus);DevIndex, DWORD CANIndex, PVCI_CAN_S參數(shù):US pCANSDevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個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 狀態(tài)的VCI_CAN_SUS 結(jié)構(gòu)指針。函數(shù)功能:此函數(shù)用以獲取CAN 狀態(tài)。返回值:為1 表示操作成功,0 表示操作失敗。4.4.7 DWORD stdcall VCI_GetReference(DWORD DevType,DW
18、ORD DevIndex,DWORD CANIndex,DWORD RefType,PVOID pData);參數(shù):DevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個USBCAN時,索引號為0,有兩個時可以為0 CANIndex:第幾路CAN。RefType:參數(shù)類型?;?。pData:用來參數(shù)有關(guān)數(shù)據(jù)緩沖區(qū)地址首指針。函數(shù)功能:此函數(shù)用以獲取設(shè)備的相應(yīng)參數(shù)。返回值:為1 表示操作成功,0 表示操作失敗。參數(shù)表:(1) 當(dāng)設(shè)備類型為USBCAN1,USBCAN2 時:RefTypepData功能描述當(dāng)RefType=1 時,此時返回的pData 各個字節(jié)所代表的意義如下:
19、 pData0信息保留 pData1表示CAN控制器BTR0的值; pData2表示CAN控制器BTR1的值; pData3波器模式,位功能該組驗收濾MFORMATB=1; 驗收濾波器該組僅用于擴展幀信息。標(biāo)準幀信息被忽略。=0; 驗收濾波器該組僅用于標(biāo)準幀信息。擴展幀信息被忽略。AMODEB=1; 單驗收濾波器選項使能長濾波器有效=0; 雙驗收濾波器選項使能短濾波器有效 pData4該組驗收濾波器的使能,位功能BF2EN=1; 該組濾波器2使能,不能對相應(yīng)的和代碼寄存器進行寫操作=0; 該組濾波器2,可以改變相應(yīng)的和代碼寄存器BF1EN=1; 該組濾波器1使能,不能對相應(yīng)的和代碼寄存器進行寫
20、操作SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2ENBF1ENSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0MFORMATBAMODEB總長度 1 個字節(jié),當(dāng)作為輸入?yún)?shù)時,表示為所要的 CAN 控制器的控制寄存器的地址。當(dāng)作為輸出參數(shù)時,表示為 CAN 控制器的控制寄存器的值。讀CAN 控制器的指定控制寄存器的值, 例如對USBCAN1:BYTE val=0;VCI_GetReference(VCI_USBCAN1,0,0,1,(PVOID)&val);如果此函數(shù)調(diào)用成功,則在val 中返回寄存器的值。=0; 該組濾
21、波器1,可以改變相應(yīng)的和代碼寄存器 注: 如果選擇單濾波器模式,該單濾波器與對應(yīng)的濾波器1 使能位相關(guān)。濾波器2 使能位在單濾波器 模式中不起作用。pData5該組驗收濾波器的優(yōu)先級,位功能BF2PRIO=1; 該組濾波器2優(yōu)先級高,如果信息通過該組濾波器2,立即產(chǎn)生接收中斷0;該組濾波器2優(yōu)先級低,如果FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷BF1PRIO=1; 該組濾波器1優(yōu)先級高,如果信息通過該組濾波器1 ,立即產(chǎn)生接收中斷0;該組濾波器1優(yōu)先級低,如果FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷pData6-9表示該組濾波器ACR的值;pDataa-d表示該組濾波器AMR 的值
22、;4.4.8 DWORD stdcallVCI_SetReference(DWORDDevType,DWORDDevIndex,DWORD CANIndex,DWORD RefType,PVOID pData);參數(shù):DevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個USBCAN 時,索引號為0,有兩個時可以為0 CANIndex:第幾路CAN。RefType:參數(shù)類型。或1。pData: 用來參數(shù)有關(guān)數(shù)據(jù)緩沖區(qū)地址首指針。函數(shù)功能:此函數(shù)用以設(shè)置設(shè)備的相應(yīng)參數(shù),主要處理不同設(shè)備的特定操作。返回值:為1 表示操作成功,0 表示操作失敗。注:VCI_SetReference
23、 和VCI_GetReference 這兩個函數(shù)是用來針對各個不同設(shè)備的一些特定操作的。函數(shù)中的PVOID 型參數(shù)pData 隨不同設(shè)備的不同操作而具有不同的意義。參數(shù)表:(1) 當(dāng)設(shè)備類型為USBCAN1,USBCAN2 時:SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2PRIOBF1PRIO當(dāng)RefType=2 時,此時的pData 各個字節(jié)所代表的意義如下:pData0設(shè)置哪一組驗收濾波器;共有4 組, =1:設(shè)置第1組; =2:設(shè)置第2組; =3:設(shè)置第3組;=4:設(shè)置第4組; pData1設(shè)置該組驗收濾波器模式,位功能MFORMATB =1;
24、驗收濾波器該組僅用于擴展幀信息。標(biāo)準幀信息被忽略。=0; 驗收濾波器該組僅用于標(biāo)準幀信息。擴展幀信息被忽略。AMODEB=1; 單驗收濾波器選項使能長濾波器有效=0; 雙驗收濾波器選項使能短濾波器有效 pData2設(shè)置該組驗收濾波器的使能,位功能BF2EN=1; 該組濾波器2使能,不能對相應(yīng)的和代碼寄存器進行寫操作=0; 該組濾波器2,可以改變相應(yīng)的和代碼寄存器BF1EN=1; 該組濾波器1使能,不能對相應(yīng)的和代碼寄存器進行寫操作=0; 該組濾波器1,可以改變相應(yīng)的和代碼寄存器注: 如果選擇單濾波器模式,該單濾波器與對應(yīng)的濾波器1 使能位相關(guān)。濾波器2使SUS.7SUS.6SUS.5SUS.4
25、SUS.3SUS.2SUS.1SUS.0BF2ENBF1ENSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0MFORMATBAMODEBRefTypepData功能描述1總長度為2 個字節(jié), pData0 表示CAN控制器的控制寄存器的地址,pData1 表示要寫入的數(shù)值。CAN 控制器的指定控制寄存器能位在單濾波器 模式中不起作用。pData3設(shè)置該組驗收濾波器的優(yōu)先級,位功能BF2PRIO =1; 該組濾波器2優(yōu)先級高,如果信息通過該組濾波器2 ,立即產(chǎn)生接收中斷=0; 該組濾波器2優(yōu)先級低,如果FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷BF1PRIO
26、=1; 該組濾波器1優(yōu)先級高,如果信息通過該組濾波器1 ,立即產(chǎn)生接收中斷=0; 該組濾波器1優(yōu)先級低,如果FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷pData4-7 分別對應(yīng)要設(shè)置的SJA1000的ACR0-ACR3的值;pData8-b 分別對應(yīng)要設(shè)置的SJA1000的AMR0-AMR3的值;4.4.9 ULONG stdcallVCI_GetReceiveNum(DWORDDevType,DWORDDevIndex,DWORD CANIndex);參數(shù):DevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個USBCAN 時,索引號為0,有兩個時可以為0 CANInd
27、ex:第幾路CAN。或1。函數(shù)功能:此函數(shù)用以獲取指定接收緩沖區(qū)中接收到但尚未被的幀數(shù)。返回值:返回尚未被的幀數(shù)。4.4.10 DWORD stdcallVCI_ClearBuffer(DWORDDevType,DWORDDevIndex,DWORD CANIndex);參數(shù):DevType:SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2PRIOBF1PRIO設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只有一個USBCAN 時,索引號為0,有兩個時可以為0 或1。CANIndex:第幾路CAN。函數(shù)功能:此函數(shù)用以清空指定緩沖區(qū)。返回值:為1 表示操作成功,0 表示操作失敗。4.4.11 DWORD stdcallVCI_StartCAN(DWORDDevType,DWORDDevIndex,DWORD CANIndex);參數(shù):DevType:設(shè)備類型號。DevIndex:設(shè)備索引號,比如當(dāng)只
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商超經(jīng)銷合同范本
- 現(xiàn)行高中語文教材文言文選文的多維審視與教學(xué)導(dǎo)向研究
- 探秘射血分數(shù)保留性心衰:腸道菌群的特征與潛在機制
- 品牌鋼琴轉(zhuǎn)讓合同范本
- 商鋪委托經(jīng)營合同范例
- 單位合同范本6
- 印刷材料采購合同范本
- 2025至2031年中國教學(xué)激光筆行業(yè)投資前景及策略咨詢研究報告
- 上海汽車抵押合同范本
- 2025至2031年中國內(nèi)置汽車后視系統(tǒng)行業(yè)投資前景及策略咨詢研究報告
- 2025年浙江國企臺州黃巖站場管理服務(wù)有限公司招聘筆試參考題庫附帶答案詳解
- 2025年中國土木工程集團有限公司招聘筆試參考題庫含答案解析
- 2025廣西壯族自治區(qū)考試錄用公務(wù)員(4368人)高頻重點提升(共500題)附帶答案詳解
- 神經(jīng)病 《神經(jīng)病學(xué)》習(xí)題集學(xué)習(xí)課件
- 教科版三年級下冊科學(xué)全冊單元教材分析
- 2025年國家鐵路局工程質(zhì)量監(jiān)督中心招聘歷年高頻重點提升(共500題)附帶答案詳解
- 2024年03月浙江南潯銀行春季招考筆試歷年參考題庫附帶答案詳解
- 加快形成農(nóng)業(yè)新質(zhì)生產(chǎn)力
- 2025年中糧集團招聘筆試參考題庫含答案解析
- 執(zhí)行立案申請書模版
- 智能建筑外掛電梯安裝方案
評論
0/150
提交評論