Interfaccia bus USB-CAN
Funzione di l'interfaccia di l'adattatore
Istruzzioni per l'usu di a biblioteca
A PARTE PRIMAVIEW
Se l'utilizatore solu aduprà l'adattatore di l'interfaccia di l'autobus USB-CAN per andà in a prova di cumunicazione di l'autobus CAN, è poi puderà utilizà direttamente u software USB-CAN Tool fornitu per mandà è riceve dati di a prova.
Se l'utilizatore hà intenzione di scrive un prugramma di software per i so prudutti. Leghjite attentamente e seguenti istruzioni è pigliate riferimentu da u sampu codice chì furnimu:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Sviluppà a biblioteca file :ControlCAN.lib, ControlCAN.DLL
Dichjarazione di a funzione di a versione VC file :ControlCAN.h
Dichjarazione di a funzione di a versione VB file: ControlCAN.bas
LabVIEW Modulu di pacchettu di funzione di libreria di versione: ControlCAN.llb
Dichjarazione di funzione di versione Delphi file: ControlCAN.pas
PARTE DUE BIBLIOTECA DI FUNZIONE COMPATIBLE E STRUTTURA DI DATI
2.1. DEFINIZIONE TIPI
2.1.1. Tipu di dispusitivu
Definizione di u tipu | Type value | Descrizzione |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
A struttura VCI_BOARD_INFO cuntene l'infurmazioni di u dispositivu di a carta di interfaccia USB-CAN Series.
A struttura serà cumpleta in a funzione VCI_ReadBoardInfo.
Membru:
hw_Versione
Numeru di versione di hardware, notazione esadecimale. Per esempiu, 0x0100 rapprisenta V1.00.
fw_Versione
Numeru di versione di hardware, notazione esadecimale. Per esempiu, 0x0100 rapprisenta V1.00.
Pagina 2
dr_Versione
Numeru di versione di driver, notazione esadecimale. Per esempiu, 0x0100 rapprisenta V1.00.
in_Versione
Numero di versione di a biblioteca di l'interfaccia, notazione esadecimale. Per esempiu, 0x0100 rapprisenta V1.00.
irq_Num
Sistema riservatu.
can_Num
Rapprisenta u numeru tutale di canali CAN.
str_Serial_Num
U numeru di seriale di sta carta.
str_hw_Tipu
Tipu di hardware, cum'è "USBCAN V1.00" (Nota: Include terminatore di stringa '\0').
Riservatu
Sistema riservatu.
2.1.3. VCI_CAN_OBJ
In e funzioni VCI_Transmit è VCI_Receive, a struttura VCI_CAN_OBJ hè usata per trasmette u quadru di messagiu CAN.
Membru:
ID
Identificatore di messagiu. Formatu d'ID direttu, allineatu à destra, per piacè riferite à: Annex One: Dettagli di allineamentu di ID.
Tempu Stamp
Riceve u stamp infurmazione di u quadru tempu, principiatu timing quandu u controller CAN hè inizializatu, l 'unità hè 0. 1ms.
TimeFlag
In quantu à aduprà u tempu stamp, 1 hè u TimeSt efficaceamp. TimeFlag è TimeStamp sò significati solu quandu u quadru hè ricevutu.
SendType
Tipu di mandatu. = 0 indica Tipu Normale, = 1 indica Single Send.
RemoteFlag
Ch'ella sia una bandiera remota. = 1 indica una bandiera remota, = 0 indica una bandiera di dati.
Bandiera esterna
Ch'ella sia una bandiera esterna. = 1 indica una bandiera esterna, = 0 indica una bandiera standard.
DataLen
Lunghezza di dati (<= 8) , vale à dì, a durata di dati.
Dati
Dati di pacchettu.
Riservatu
Sistema riservatu.
2.1.4. VCI_INIT_CONFIG
A struttura VCI_INIT_CONFIG definisce a cunfigurazione di inizializazione di u CAN. A struttura serà cumpleta in a funzione VCI_InitCan.
Membru:
AccCode
Riceve u codice di accettazione filtratu.
AccMask
Riceve a maschera di filtru.
Riservatu
Riservatu.
Filtru
U metudu di filtrazione, chì permette a gamma di paràmetri 0-3, riferite à a sezione 2.2.3 di a tabella di modalità di filtru per i dettagli.
Timing 0
SJA1000 Parametru di baud rate, Timing0 (BTR0).
Timing 1
SJA1000 Parametru di baud rate, Timing1 (BTR1).
Modu
Modu operativu, 0 = funziunamentu normale, 1 = Modu d'ascolta solu, 2 = Modu di prova d'admissione spontanea è di mandatu.
Rimarche:
Riguardu à i paràmetri di u filtru, fate riferimentu à: Annex II: Istruzzioni di cunfigurazione di i parametri CAN.
CAN Timing0 è Timing1 sò usati per stabilisce u baud rate, sti dui parametri sò usati solu à l'inizializazione.tage.
Tabella di riferimentu Baud cunvinziunali:
CAN Baud rate | Timing0 (BTR0) | Timing1 (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 |
- L'utilizatori solu bisognu di seguità SJA1000 (16MHz) per stabilisce u paràmetru di u Baud rate.
- L'adattatore ùn sustene micca temporaneamente u Baud rate sottu 10K.
2.2. DESCRIZIONE DI FUNZIONE
2.2.1. VCI_OpenDevice
Sta funzione hè usata per cunnette i dispositi.
DWORD __stdcall VCI_OpenDevice (DWORD DevType, DWORD DevIndex, DWORD Riservatu);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
Riservatu
Parametri di ritenzione, riempite 0.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
2.2.2. VCI_CloseDevice
Sta funzione hè usata per chjude a cunnessione.
DWORD __stdcall VCI_CloseDevice (DWORD DevType, DWORD DevIndex);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
2.2.3. VCI_InitCan
Sta funzione hè usata per inizializà u CAN specificatu.
DWORD __stdcall VCI_InitCAN (DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN, cum'è quandu ci hè solu un canale CAN, u numeru d'indici hè 0, se ci sò dui, u numeru d'indici pò esse 0 o 1.
pInitConfig
Struttura di paràmetri di inizializazione. Lista di parametri di i membri:
Membru | Descrizzione Funziunale |
pInitConfig->AccCode | AccCode è AccMask ponu travaglià inseme per determinà quali pacchetti ponu esse accettati. Questi dui registri sò usati per stabilisce l'ID allineatu à manca, vale à dì, u bit più altu (Bit31) di l'AccCode è AccMask hè allinatu cù u bit più altu di u valore ID. |
pInitConfig->AccMask | Pour l'alignement de l'ID, voir les annexes : Annexe I : dettagli di l'allineamentu di l'ID. Esempiu: Se stabilisce u valore di l'AccCode cum'è 0x24600000 (vale à dì 0x123 hè spustatu à manca di 21 bit), u valore AccMask hè stabilitu à 0x00000000, è dopu solu i pacchetti cù l'ID di frame di messagiu CAN hè 0x123 ponu esse accettati (u valore AccMask di 0x00000000 indica chì tutti i bits sò pertinenti). |
bits). Se u valore AccCode hè stabilitu à 0x24600000, u valore AccMask hè stabilitu à 0x600000 (0x03 hè spustatu à manca di 21 bit), è allora solu i pacchetti cù l'ID di frame di messagiu CAN hè 0x120 ~ 0x123 pò esse accettatu (valore AccMask). 0x600000 indica chì oltre a bit0 ~ bit1 altri bit (bit2 ~ bit10) sò bit rilevanti). Nota: Stu filtru setting example à u quadru standard, per esample, high 11-bit hè u bit validu; in u casu di u quadru allargatu, è dopu l'ID validu hè 29-bit. AccCode è AccMask anu stabilitu 29-bit altu cum'è u bit validu! |
|
pInitConfig-> Riservatu | riservatu |
pInitConfig->Filtru | I paràmetri di u modu di filtrazione per piacè riferite à a sezione di a tabella di u modu di filtru. |
pInitConfig-> Timing0 | Impostazione di baud rate T0 |
pInitConfig-> Timing1 | Impostazione di baud rate T1 |
pInitConfig->Mode | Modu operativu: 0-funzionamentu normale 1-Modu d'ascoltu solu 2-admissione spontanea è modu di prova di mandatu (stu valore hè escludutu da a biblioteca di funzioni ZLG) |
Tabella di modalità di filtru:
Valore | Nome | Descrizzione |
1 | Riceve tutti i tipi | Adatta sia à u quadru standard sia allargatu! |
2 | Riceve solu frame standard | Adatta à u quadru standard, è allargatu |
U quadru sarà eliminatu da filtrazione direttamente! | ||
3 | Riceve solu un quadru allargatu | Adatta à u quadru allargatu, è u quadru standard serà eliminatu da filtrazione direttamente! 。 |
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
Per esempiu
2.2.4. VCI_ReadBoardInfo
Questa funzione hè aduprata per leghje l'infurmazioni hardware di l'adattatore. In generale, pò esse ignoratu.
DWORD __stdcall VCI_ReadBoardInfo (DWORD DevType, DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adattatori USB-CAN, i numeri indice in ordine ascendante partendu da 0. pInfo
VCI_BOARD_INFO hè utilizatu per almacenà l'indicatore di struttura di l'infurmazioni di u dispositivu.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
2.2.5. VCI_GetReceiveNum
Questa funzione hè aduprata per specificà i frames ricevuti ma ùn sò micca stati letti in u buffer di ricezione designatu.
DWORD __stdcall VCI_GetReceiveNum (DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN.
Ritorni:
Ritorna i frames chì ùn sò micca stati ancu letti.
Per esempiu
#include "ControlCan.h" int ret = VCI_GetReceiveNum (2,0,0);
2.2.6. VCI_ClearBuffer
Sta funzione hè aduprata per sguassà u buffer di ricezione è mandatu di u canali designatu specificatu da
Adattatore USB-CAN.
DWORD __stdcall VCI_ClearBuffer (DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
2.2.7. VCI_StartCAN
Questa funzione hè aduprata per inizià u controller CAN è a funzione di ricezione d'interruzzione interna di l'adattatore.
DWORD __stdcall VCI_StartCAN (DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
2.2.8. VCI_ResetCAN
Questa funzione hè aduprata per resettà u controller CAN.
DWORD __stdcall VCI_ResetCAN (DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
2.2.9. VCI_Transmit
Sta funzione hè usata per mandà u quadru di missaghju CAN.
DWORD __stdcall VCI_Transmit (DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_CAN_OBJ pSend, DWORD Length);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN. p Mandate
U primu indirizzu di l'array di frame di dati chì deve esse mandatu.
Lunghezza
U numeru di i frames di dati chì deve esse mandatu, u numeru massimu hè 1000, u valore cunsigliatu hè 48 sottu à alta veloce.
Ritorni:
Ritorna u numeru attuale di frames digià mandatu, u valore di ritornu = -1 indica un errore di u dispusitivu.
Per esempiu
2.2.10. VCI_Receive
Questa funzione hè aduprata per dumandà a ricezione.
DWORD __stdcall VCI_Receive (DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
CANIndex
Indice di canali CAN.
riceve
Per riceve u primu set pointer di i frames di dati.
Len
A lunghezza array di u quadru di dati deve esse più di 2500 per rinvià u messagiu normale.
Altrimenti, a durata di u ritornu serà cero se u messagiu hè ricevutu o micca. l'adattatore hà stabilitu un buffer di 2000 frames per ogni canali. Basatu nantu à u so propiu sistema è l'ambiente di travagliu, l'utilizatore pò sceglie una lunghezza di array adatta da 2500.
WaitTime Riservatu.
Ritorni:
Ritorna u nùmeru di frames chì in realtà sò stati letti, -1 indica errori di u dispositivu.
Per esempiu
PART THREE ALTRE FUNZIONI E DESCRIZIONE DI STRUTTURA DATA
Stu capitulu descrive altri tipi di dati è funzioni di a libreria di l'interfaccia ZLG incompatibile cuntenuta in a biblioteca di l'interfaccia di l'adattatore USB-CAN ControlCAN.dll. Per piacè fate
Ùn chjamate micca queste funzioni se utilizate un mudellu ZLG cumpatibile per u sviluppu secundariu per ùn affettà a cumpatibilità.
3.1 DESCRIZIONE DI FUNZIONE
3.1.1. VCI_UsbDeviceReset
Resettate l'adattatore USB-CAN, avete bisognu di riapertura di u dispositivu dopu à resettore usendu VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset (DWORD DevType, DWORD DevIndex, DWORD Riservatu
Parametri:
DevType
tipu di dispusitivu. Vede: Definizione di u tipu di l'adattatore.
DevIndex
Indice di Dispositivi, per esempiuample, quandu ci hè solu un adattatore USB-CAN, u numeru indice hè 0, quandu ci sò parechje adapter USB-CAN, i numeri indice in un ordine ascendante partendu da 0.
Riservatu Riservatu.
Ritorni:
Valore di ritornu = 1, chì significa chì l'operazione hè successu; = 0 indica chì l'operazione hà fiascatu; = -1 indica chì u dispusitivu ùn esiste micca.
bRel = VCI_UsbDeviceReset (nDeviceType, Independence, 0);
3.1.2. VCI_FindUsbDevice2
Quandu u listessu PC cù parechje USB-CAN, l'utilizatore pò aduprà sta funzione per truvà u dispusitivu attuale.
DWORD __stdcall VCI_FindUsbDevice2 (PVCI_BOARD_INFO pInfo);
Parametri:
pInfo
pInfo hè utilizatu per almacenà i paràmetri di u primu puntatore di l'indirizzu di buffer di dati.
Ritorna
Ritorna u numeru di l'adattatore USB-CAN cunnessu à l'urdinatore.
Part Quattru Funzioni di Biblioteca di l'interfaccia Utilizendu u prucessu
Per multiplicà a funzione di u dispositivu, avemu furnitu funzioni supplementari (funzioni presentate cù un fondo verde), queste funzioni includenu: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Duranti u sicondu sviluppu, sti funzioni ùn sò micca necessariamente invucatu. Ancu queste funzioni sò ignorate, tutte e funzioni di l'adattatore USB-CAN ponu esse rializate.
www.waveshare.com
www.waveshare.com/wiki
Documenti / Risorse
![]() |
WAVESHARE USB-CAN Bus Interfaccia Adattatore Interfaccia Libreria di Funzioni [pdfManuale d'istruzzioni Libreria di funzioni di interfaccia di adattatore di interfaccia di bus USB-CAN, USB-CAN, libreria di funzioni di interfaccia di adattatore di interfaccia di bus, libreria di funzioni di interfaccia, libreria di funzioni |