USB-CAN Bus Interface
Adapter Interface Function
Cov ntaub ntawv siv tsev qiv ntawv
PART IB HAIVVIEW
Yog hais tias tus neeg siv tsuas yog siv USB-CAN tsheb npav interface adapter mus rau CAN tsheb npav kev sib txuas lus kuaj, thiab tom qab ntawd nws tuaj yeem siv ncaj qha siv USB-CAN Tool software rau xa thiab txais cov ntaub ntawv ntawm kev xeem.
Yog tias tus neeg siv npaj siab sau cov software rau nws cov khoom. Thov ua tib zoo nyeem cov lus qhia hauv qab no thiab coj los siv los ntawm sample code peb muab:
⑴ C++ Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼ Matlab ⑽QT ⑾ Python/Python-can.
Tsim cov tsev qiv ntawv file :ControlCAN.lib, ControlCAN.DLL
VC version muaj nuj nqi tshaj tawm file : ControlCAN.h
VB version muaj nuj nqi tshaj tawm file: ControlCAN.bas
LabVIEW version tsev qiv ntawv muaj nuj nqi pob module: ControlCAN.llb
Delphi version muaj nuj nqi tshaj tawm file: ControlCAN.pas
PART XNUMX IB QHOV CHAW UA HAUJ LWM QHOV CHAW UA HAUJ LWM thiab DATA SRUCTURE
2.1. HOM DEFINITION
2.1.1. Ntaus hom
Hom txhais | Hom nqi | Kev piav qhia |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
VCI_BOARD_INFO qauv muaj USB-CAN Series interface daim npav ntaus ntawv cov ntaub ntawv.
Cov qauv yuav muab sau rau hauv VCI_ReadBoardInfo muaj nuj nqi.
Tus tswv cuab:
hwm_Version
Hardware version naj npawb, hexadecimal sau. Piv txwv li 0x0100 sawv cev V1.00.
fw_Version
Hardware version naj npawb, hexadecimal sau. Piv txwv li 0x0100 sawv cev V1.00.
Page 2
dr_Version
Tus lej tsav tsheb, tus lej hexadecimal. Piv txwv li 0x0100 sawv cev V1.00.
hauv_Version
Interface tsev qiv ntawv version naj npawb, hexadecimal sau. Piv txwv li 0x0100 sawv cev V1.00.
irq_num
Qhov system reserved.
tau_Num
Sawv cev tag nrho ntawm CAN channel.
str_Serial_Num
Daim npav daim npav no yog tus lej xov tooj.
str_hw_Type
Hom kho vajtse, xws li "USBCAN V1.00" (Ceeb Toom: suav nrog string terminator '\0').
Khaws tseg
Qhov system reserved.
2.1.3. VCI_CAN_OBJ
Hauv kev ua haujlwm VCI_Transmit thiab VCI_Receive, VCI_CAN_OBJ qauv siv los xa cov kab lus CAN.
Tus tswv cuab:
ID
Message identifier. Direct ID hom, txoj cai, thov xa mus rau: Annex Ib: ID Alignment Details.
TimeStamp
Txais lub stamp cov ntaub ntawv ntawm lub sij hawm ncej, pib lub sij hawm thaum lub CAN maub los pib, chav tsev yog 0. 1ms.
TimeFlag
Nyob rau hauv cov nqe lus ntawm seb yuav siv lub sij hawm stamp, 1 yog TimeStamp. TimeFlag thiab TimeStamp tsuas yog muaj txiaj ntsig thaum lub thav duab tau txais.
SendType
Xa hom. = 0 qhia hom Ib txwm, = 1 qhia ib leeg xa.
RemoteFlag
Seb nws yog tus chij nyob deb. = 1 qhia tej thaj chaw deb chij, = 0 qhia cov ntaub ntawv chij.
ExternFlag
Seb nws yog tus chij extern. = 1 qhia tus chij sab nraud, = 0 qhia tus chij tus qauv.
DataLen
Cov ntaub ntawv ntev (<= 8), uas yog, qhov ntev ntawm cov ntaub ntawv.
Cov ntaub ntawv
Cov ntaub ntawv pob.
Khaws tseg
Qhov system reserved.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG tus qauv qhia txog kev pib teeb tsa ntawm CAN. Cov qauv yuav muab sau rau hauv VCI_InitCan muaj nuj nqi.
Tus tswv cuab:
AccCode
Tau txais cov cai txais lim dej.
AccMask
Txais daim npog ntsej muag.
Khaws tseg
Khaws tseg.
Lim
Cov txheej txheem lim, tso cai rau kev teeb tsa ntau yam 0-3, xa mus rau ntu 2.2.3 ntawm cov lus lim hom kom paub meej.
Lub sijhawm 0
SJA1000 Baud tus nqi parameter, Timing0 (BTR0).
Lub sijhawm 1
SJA1000 Baud tus nqi parameter, Timing1 (BTR1).
Hom
Kev khiav hauj lwm hom, 0 = ib txwm ua hauj lwm, 1 = mloog-tsuas yog hom, 2 = spontaneous nkag thiab xa mus kuaj hom.
Lus ceeb toom:
Hais txog qhov chaw lim thov mus saib: Annex II: CANparameter teeb cov lus qhia.
CAN Timing0 thiab Timing1 yog siv los teeb tsa tus nqi baud, ob qhov kev txwv no tsuas yog siv los ntawm kev pib ua haujlwm.tage.
Pauv Baud reference table:
CAN Baud tus nqi | Timing0 (BTR0) | Timing1 (BTR1) |
10k wb | 0 x 31 | 0x1 wb |
20k wb | 0 x 18 | 0x1 wb |
40k wb | 0 x 87 | 0 xf |
50k wb | 0 x 09 | 0x1 wb |
80k wb | 0 x 83 | 0 xf |
100k wb | 0 x 04 | 0x1 wb |
125k wb | 0 x 03 | 0x1 wb |
200k wb | 0 x 81 | 0xf ua |
250k wb | 0 x 01 | 0x1 wb |
400k wb | 0 x 80 | 0xf ua |
500k wb | 0 x 00 | 0x1 wb |
666k wb | 0 x 80 | 0 xb6 |
800k wb | 0 x 00 | 0 x 16 |
1000k wb | 0 x 00 | 0 x 14 |
33.33 Kbps ib | 0 x 09 | 0 x6f |
66.66 Kbps ib | 0 x 04 | 0 x6f |
83.33 Kbps ib | 0 x 03 | 0 x6f |
- Cov neeg siv tsuas yog yuav tsum ua raws li SJA1000 (16MHz) los teeb tsa Baud tus nqi ntsuas.
- Lub adapter tsis txhawb nqa ib ntus Baud tus nqi qis dua 10K.
2.2. KEV PAB CUAM
2.2.1. VCI_OpenDevice
Cov haujlwm no yog siv los txuas cov khoom siv.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
Khaws tseg
Retention parameters, sau rau hauv 0.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
2.2.2. VCI_CloseDevice
Txoj haujlwm no yog siv los kaw qhov kev sib txuas.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
2.2.3. VCI_InitCan
Qhov kev ua haujlwm no yog siv los pib qhov CAN tau teev tseg.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
CAN channel Performance index, xws li thaum tsuas muaj ib qho CAN channel, tus lej ntsuas yog 0, yog tias muaj ob, tus lej ntsuas yuav yog 0 lossis 1.
pInitConfig
Initialization parameter qauv. Parameter npe ntawm cov tswv cuab:
Tus tswv cuab | Functional Description |
pInitConfig->AccCode | AccCode thiab AccMask tuaj yeem ua haujlwm ua ke los txiav txim siab cov pob ntawv twg tuaj yeem lees txais. Ob qhov kev sau npe no yog siv los teeb tsa tus ID sab laug-kho, uas yog, qhov siab tshaj me ntsis (Bit31) ntawm AccCode thiab AccMask yog ua raws li qhov siab tshaj me ntsis ntawm tus nqi ID. |
pInitConfig->AccMask | Hais txog ID alignment xa cov ntawv txuas ntxiv: Annex I: Cov ntsiab lus ntawm kev sib tw ID. Piv txwv li: Yog tias koj teeb tsa tus nqi ntawm AccCode li 0x24600000 (ie 0x123 yog hloov mus rau sab laug los ntawm 21 khoom), AccMask tus nqi yog teem rau 0x00000000, thiab tom qab ntawd tsuas yog cov pob ntawv nrog CAN xov xwm ncej ID yog 0x123 tuaj yeem lees txais (AccMask tus nqi ntawm 0x00000000 qhia tias txhua yam khoom muaj feem cuam tshuam. |
bits). Yog tias tus nqi AccCode raug teeb tsa rau 0x24600000, AccMask tus nqi raug teeb tsa rau 0x600000 (0x03 raug hloov mus rau sab laug los ntawm 21 cov khoom), thiab tom qab ntawd tsuas yog cov pob ntawv nrog CAN cov kab lus ID yog 0x120 ~ 0x123 tuaj yeem lees txais (AccMask tus nqi 0x600000 qhia tias sib nrug ntawm bit0 ~ bit1 lwm cov khoom (bit2 ~ bit10) muaj feem cuam tshuam me ntsis). Nco tseg: Qhov no lim teeb examples rau tus qauv ncej, rau example, siab 11-ntsis yog qhov siv tau me ntsis; nyob rau hauv rooj plaub ntawm tus ncej txuas ntxiv, thiab tom qab ntawd tus ID siv tau yog 29-ntsis. AccCode thiab AccMask teeb siab 29-ntsis raws li qhov siv tau me ntsis! |
|
pInitConfig-> Reserved | tseg |
pInitConfig-> Filter | Filtering hom kev teeb tsa thov xa mus rau ntu ntawm cov lus lim hom. |
pInitConfig->Timing0 | Kev teeb tsa Baud rateT0 |
pInitConfig->Timing1 | Kev teeb tsa Baud rateT1 |
pInitConfig->Mode | Hom hauj lwm: 0-ib txwm ua haujlwm 1- Mloog nkaus xwb hom 2-spontaneous nkag mus thiab xa cov qauv xeem (tus nqi no tsis suav nrog lub tsev qiv ntawv muaj nuj nqi ZLG) |
Filter hom rooj:
Tus nqi | Lub npe | Kev piav qhia |
1 | Txais txhua hom | Haum rau ob qho tib si txheem thiab txuas ntxiv ncej! |
2 | Tsuas tau txais tus qauv txheem | Haum rau tus qauv thav duab, thiab txuas ntxiv |
thav duab yuav raug tshem tawm los ntawm kev pom ncaj qha! | ||
3 | Tsuas tau txais cov ncej txuas ntxiv | Haum rau ncua thav duab, thiab tus qauv thav duab yuav raug tshem tawm los ntawm lim ncaj qha! . |
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
Piv txwv
2.2.4. VCI_ReadBoardInfo
Cov haujlwm no yog siv los nyeem cov ntaub ntawv kho vajtse adapter. Feem ntau hais lus, nws tuaj yeem tsis quav ntsej.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum muaj tsuas yog ib qho USB-CAN adapter, qhov ntsuas tus lej yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0. pInfo
VCI_BOARD_INFO yog siv los khaws cov ntaub ntawv xov xwm tus qauv taw qhia.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
2.2.5. VCI_GetReceiveNum
Qhov kev ua haujlwm no yog siv los qhia qhov tau txais tab sis tsis tau nyeem cov thav ntawv hauv qhov tau txais tsis tau.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
UA channel index.
Rov qab:
Rov qab cov ncej uas tseem tsis tau nyeem.
Piv txwv
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Txoj haujlwm no yog siv los tshem tawm qhov tau txais thiab xa tsis tau ntawm cov channel uas tau teev tseg los ntawm
USB-CAN adapter.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
UA channel index.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
2.2.7. VCI_StartCAN
Qhov no muaj nuj nqi yog siv los pib lub CAN maub los thiab lub internal interrupt reception function ntawm lub adapter.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
UA channel index.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
2.2.8. VCI_ResetCAN
Qhov kev ua haujlwm no yog siv los rov pib dua tus tswj CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
UA channel index.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
2.2.9. VCI_Transmit
Qhov no muaj nuj nqi yog siv los xa CAN xov xwm ncej.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
UA channel index. pSend
Thawj qhov chaw nyob ntawm cov ntaub ntawv ncej arrays uas yuav tsum tau xa.
Ntev
Tus naj npawb ntawm cov ntaub ntawv thav ntawv uas yuav tsum tau xa, tus lej siab tshaj plaws yog 1000, tus nqi pom zoo yog 48 nyob rau hauv kev kub ceev.
Rov qab:
Rov qab tus naj npawb ntawm cov thav ntawv uas twb tau xa lawm, tus nqi xa rov qab = -1 qhia txog kev ua yuam kev.
Piv txwv
2.2.10. VCI_Receive
Txoj haujlwm no yog siv los thov kev txais tos.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
CANIdex
UA channel index.
pReceive
Kom tau txais thawj qhov taw qhia ntawm cov ntaub ntawv thav duab.
Len
Lub array ntev ntawm cov ntaub ntawv ncej yuav tsum yog ntau tshaj 2500 kom rov qab cov lus ib txwm.
Txwv tsis pub, qhov ntev rov qab yuav yog xoom seb cov lus tau txais lossis tsis tau. lub adapter teeb ib 2000-thav duab tsis rau txhua channel. Raws li nws tus kheej qhov system thiab ib puag ncig ua haujlwm, tus neeg siv tuaj yeem xaiv qhov tsim nyog ntev ntawm 2500.
WaitTime Reserved.
Rov qab:
Rov qab tus naj npawb ntawm cov thav ntawv uas tau nyeem tiag tiag, -1 qhia cov khoom siv yuam kev.
Piv txwv
QHIA XNUMX QHOV CHAW UA HAUJ LWM thiab DATA StrucTURE piav qhia
Tshooj no piav qhia txog lwm hom ntaub ntawv thiab kev ua haujlwm ntawm lub tsev qiv ntawv ZLG interface tsis tau muaj nyob hauv USB-CAN adapter interface tsev qiv ntawv ControlCAN.dll. Thov ua
tsis hu cov haujlwm no yog siv tus qauv ZLG sib haum rau kev txhim kho theem nrab kom tsis txhob cuam tshuam kev sib raug zoo.
3.1 FUNCTION DESCRIPTION
3.1.1. VCI_UsbDeviceReset
Pib dua USB-CAN adapter, yuav tsum rov qhib lub cuab yeej tom qab pib dua los ntawm kev siv VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved
Parameters:
DevType
Hom ntaus ntawv. Saib: Adapter ntaus ntawv txhais.
DevIndex
Device Index, for example, thaum tsuas muaj ib qho USB-CAN adapter, tus lej ntsuas yog 0, thaum muaj ntau yam USB-CAN adapters, tus lej ntsuas hauv qhov kev txiav txim nce los ntawm 0.
Khaws cia.
Rov qab:
Rov qab tus nqi = 1, uas txhais tau hais tias kev ua haujlwm tiav; = 0 qhia tias kev ua haujlwm ua tsis tiav; = -1 qhia tias lub cuab yeej tsis muaj nyob.
bRel = VCI_UsbDeviceReset(nDeviceType, Kev ywj pheej, 0);
3.1.2. VCI_FindUsbDevice2
Thaum tib lub PC siv ntau USB-CAN, cov neeg siv tuaj yeem siv txoj haujlwm no los nrhiav cov cuab yeej tam sim no.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parameters:
pInfo
pInfo yog siv los khaws cov kev txwv ntawm thawj cov ntaub ntawv tsis chaw nyob pointer.
Rov qab los
Rov qab tus lej ntawm USB-CAN adapter ntsaws rau hauv lub computer.
Tshooj Plaub Interface Library Functions Siv Txheej Txheem
Txhawm rau ua kom muaj nuj nqi ntau ntxiv, peb tau muab cov haujlwm ntxiv (cov haujlwm tau nthuav tawm nrog keeb kwm ntsuab), cov haujlwm no suav nrog: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Thaum lub sij hawm thib ob txoj kev loj hlob, cov haujlwm no tsis tas yuav tsum tau hu. Txawm tias cov haujlwm no tsis quav ntsej, tag nrho USB-CAN adapter ua haujlwm tuaj yeem ua tiav.
www.waveshare.com
www.waveshare.com/wiki
Cov ntaub ntawv / Cov ntaub ntawv
![]() |
WAVESHARE USB-CAN Bus Interface Adapter Interface Function Library [ua pdf] Phau ntawv qhia USB-CAN Bus Interface Adapter Interface Function Library, USB-CAN, Bus Interface Adapter Interface Function Library, Interface Function Library, Function Library |