Interfață USB-CAN Bus
Funcția de interfață adaptor
Instrucțiuni de utilizare a bibliotecii
PARTEA I TERMINATVIEW
Dacă utilizatorul folosește doar adaptorul de interfață de magistrală USB-CAN pentru a trece la testul de comunicare cu magistrala CAN, apoi poate utiliza direct software-ul USB-CAN Tool furnizat pentru trimiterea și primirea datelor testului.
Dacă utilizatorul intenționează să scrie un program software pentru propriile produse. Vă rugăm să citiți cu atenție următoarele instrucțiuni și să luați referință din sampcodul pe care îl oferim:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Dezvoltați biblioteca file :ControlCAN.lib, ControlCAN.DLL
Declarația funcției versiunii VC file :ControlCAN.h
Declarație de funcție a versiunii VB file: ControlCAN.bas
laboratorVIEW modul pachet de funcții de bibliotecă de versiuni: ControlCAN.llb
Declarația funcției versiunii Delphi file: ControlCAN.pas
PARTEA A DOUA BIBLIOTECA DE FUNCȚII COMPATIBILE ȘI STRUCTURA DATELOR
2.1. DEFINIȚIA TIPULUI
2.1.1. Tip de dispozitiv
Definiție tip | Valoare tip | Descriere |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Structura VCI_BOARD_INFO conține informații despre dispozitivul plăcii de interfață din seria USB-CAN.
Structura va fi completată cu funcția VCI_ReadBoardInfo.
Membru:
hw_Version
Numărul versiunii hardware, notație hexazecimală. De exemplu, 0x0100 reprezintă V1.00.
fw_Version
Numărul versiunii hardware, notație hexazecimală. De exemplu, 0x0100 reprezintă V1.00.
Pagina 2
dr_Version
Numărul versiunii driverului, notație hexazecimală. De exemplu, 0x0100 reprezintă V1.00.
în_Versiune
Numărul versiunii bibliotecii de interfață, notație hexazecimală. De exemplu, 0x0100 reprezintă V1.00.
irq_Num
Sistem rezervat.
can_Num
Reprezintă numărul total de canale CAN.
str_Serial_Num
Numărul de serie al acestei plăci.
str_hw_Type
Tip hardware, cum ar fi „USBCAN V1.00” (Notă: include terminatorul șirului „\0”).
Rezervat
Sistem rezervat.
2.1.3. VCI_CAN_OBJ
În funcțiile VCI_Transmit și VCI_Receive, structura VCI_CAN_OBJ este utilizată pentru a transmite cadrul de mesaje CAN.
Membru:
ID
Identificatorul mesajului. Format ID direct, aliniat la dreapta, vă rugăm să consultați: Anexa 1: Detalii de aliniere ID.
OraStamp
Primirea stamp informații despre intervalul de timp, porniți cronometrarea când controlerul CAN este inițializat, unitatea este 0. 1ms.
TimeFlag
În ceea ce privește utilizarea timpului stamp, 1este TimeSt efectivamp. TimeFlag și TimeStamp sunt semnificative numai atunci când cadrul este primit.
SendType
Tip de trimitere. = 0 indică tipul normal, = 1 indică o singură trimitere.
RemoteFlag
Fie că este un steag la distanță. = 1 indică indicatorul de la distanță, = 0 indică indicatorul de date.
ExternFlag
Fie că este un steag extern. = 1 indică steag extern, = 0 indică steag standard.
DataLen
Lungimea datelor (<=8) ,adică lungimea datelor.
Date
Pachete de date.
Rezervat
Sistem rezervat.
2.1.4. VCI_INIT_CONFIG
Structura VCI_INIT_CONFIG definește configurația de inițializare a CAN. Structura va fi completată cu funcția VCI_InitCan.
Membru:
AccCode
Primiți codul de acceptare filtrat.
AccMask
Primiți masca de filtru.
Rezervat
Rezervat.
Filtra
Metoda de filtrare, care permite intervalul de setare 0-3, consultați secțiunea 2.2.3 din tabelul modurilor de filtrare pentru detalii.
Timing0
SJA1000 Parametrul de viteză în baud, Timing0 (BTR0) .
Timing1
SJA1000 Parametrul de viteză în baud, Timing1 (BTR1) .
Modul
Mod de funcționare, 0 = funcționare normală, 1 = Mod de doar ascultare, 2 = modul de testare de admitere și trimitere spontană.
Observatii:
Despre setările filtrului vă rugăm să consultați: Anexa II: Instrucțiuni de configurare a parametrilor CAN.
CAN Timing0 și Timing1 sunt utilizate pentru a seta viteza de transmisie, acești doi parametri sunt utilizați numai la inițializaretage.
Tabel de referință baud convențional:
Rata de transmisie CAN | 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 |
- Utilizatorii trebuie doar să urmeze SJA1000 (16MHz) pentru a seta parametrul de viteză în baud.
- Adaptorul nu acceptă temporar rata de transmisie sub 10K.
2.2. DESCRIEREA FUNCȚIEI
2.2.1. VCI_OpenDevice
Această funcție este utilizată pentru a conecta dispozitive.
DWORD __stdcall VCI_OpenDevice(DWORD DevType, DWORD DevIndex, DWORD Rezervat);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
Rezervat
Parametri de retenție, completați 0.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
2.2.2. VCI_CloseDevice
Această funcție este utilizată pentru a închide conexiunea.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
2.2.3. VCI_InitCan
Această funcție este utilizată pentru a inițializa CAN-ul specificat.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN, cum ar fi atunci când există un singur canal CAN, numărul de index este 0, dacă există doi, numărul de index poate fi 0 sau 1.
pInitConfig
Structura parametrilor de inițializare. Lista parametrilor membrilor:
Membru | Descrierea funcțională |
pInitConfig->AccCode | AccCode și AccMask pot lucra împreună pentru a determina ce pachete pot fi acceptate. Aceste două registre sunt folosite pentru a seta ID-ul aliniat la stânga, adică cel mai înalt bit (Bit31) al AccCode și AccMask este aliniat cu cel mai înalt bit al valorii ID. |
pInitConfig->AccMask | Despre alinierea ID vezi anexe: Anexa I: Detalii de aliniere ID. De exemplu: Dacă setați valoarea AccCode ca 0x24600000 (adică 0x123 este deplasat la stânga cu 21 de biți), valoarea AccMask este setat la 0x00000000, iar apoi numai pachetele cu ID-ul cadru de mesaj CAN este 0x123 pot fi acceptate (valoarea AccMask de 0x00000000 indică faptul că toți biții sunt relevanți |
biți). Dacă valoarea AccCode este setată la 0x24600000, valoarea AccMask este setată la 0x600000 (0x03 este deplasat la stânga cu 21 de biți), iar apoi numai pachetele cu ID-ul cadru de mesaj CAN este 0x120 ~ 0x123 pot fi acceptate (valoarea AccMask 0x600000 indică faptul că, în afară de bit0 ~ bit1, alți biți (bit2 ~ bit10) sunt biți relevanți). Nota: Această setare a filtrului de exampfișiere la cadrul standard, de example, high 11-bit este bitul valid; în cazul cadrului extins, apoi ID-ul valid este de 29 de biți. AccCode și AccMask setează 29 de biți ca bit valid! |
|
pInitConfig->Rezervat | rezervat |
pInitConfig->Filtru | Setările modului de filtrare vă rugăm să consultați secțiunea din tabelul modurilor de filtrare. |
pInitConfig->Timing0 | Setare baud rateT0 |
pInitConfig->Timing1 | Setare baud rateT1 |
pInitConfig->Mod | Mod de operare: 0-funcționare normală 1-Mod doar ascultare 2-mod de testare de admitere și trimitere spontană (această valoare este exclusă din biblioteca de funcții ZLG) |
Tabelul modurilor de filtrare:
Valoare | Nume | Descriere |
1 | Primește toate tipurile | Potrivit atât pentru cadru standard, cât și pentru cadru extins! |
2 | Primiți doar cadru standard | Potrivit pentru cadrul standard și extins |
rama va fi îndepărtată direct prin filtrare! | ||
3 | Primiți doar cadru extins | Potrivit pentru cadru extins, iar cadrul standard va fi eliminat de filtrare direct! 。 |
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
De ex
2.2.4. VCI_ReadBoardInfo
Această funcție este utilizată pentru a citi informațiile hardware ale adaptorului. În general, poate fi ignorat.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0. pInfo
VCI_BOARD_INFO este folosit pentru a stoca indicatorul de structură a informațiilor dispozitivului.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
2.2.5. VCI_GetReceiveNum
Această funcție este utilizată pentru a specifica cadrele primite, dar care nu au fost citite, în bufferul de recepție desemnat.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN.
Returnări:
Returnează cadrele care nu au fost încă citite.
De ex
#include „ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Această funcție este utilizată pentru a șterge memoria tampon de primire și trimitere a canalului desemnat specificat de
Adaptor USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
2.2.7. VCI_StartCAN
Această funcție este utilizată pentru a porni controlerul CAN și funcția de recepție internă a întreruperilor a adaptorului.
DWORD __stdcall VCI_StartCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
2.2.8. VCI_ResetCAN
Această funcție este utilizată pentru a reseta controlerul CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
2.2.9. VCI_Transmit
Această funcție este utilizată pentru a trimite un cadru de mesaj CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN. pTrimite
Prima adresă a matricelor de cadre de date care trebuie trimise.
Lungime
Numărul de cadre de date care trebuie trimise, numărul maxim este 1000, valoarea recomandată este 48 sub viteză mare.
Returnări:
Returnează numărul real de cadre deja trimise, valoarea returnată = -1 indică o eroare a dispozitivului.
De ex
2.2.10. VCI_Receive
Această funcție este utilizată pentru a solicita recepția.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
CANIndex
Indexul canalului CAN.
primiți
Pentru a primi primul indicator de set al cadrelor de date.
Len
Lungimea matricei a cadrului de date trebuie să fie mai mare de 2500 pentru a returna mesajul normal.
În caz contrar, lungimea returnării va fi zero indiferent dacă mesajul este primit sau nu. adaptorul a stabilit un buffer de 2000 de cadre pentru fiecare canal. Pe baza propriului sistem și a mediului de lucru, utilizatorul poate alege o lungime adecvată a matricei de la 2500.
Timp de așteptare rezervat.
Returnări:
Returnează numărul de cadre care au fost citite efectiv, -1 indică erori de dispozitiv.
De ex
PARTEA A TREIA ALTE FUNCȚII ȘI DESCRIEREA STRUCTURII DATELOR
Acest capitol descrie alte tipuri de date și funcții ale bibliotecii de interfețe ZLG incompatibile conținute în biblioteca de interfețe adaptor USB-CAN ControlCAN.dll. Vă rog să faceți
nu apelați aceste funcții dacă utilizați un model ZLG compatibil pentru dezvoltarea secundară, pentru a nu afecta compatibilitatea.
3.1 DESCRIEREA FUNCȚIILOR
3.1.1. VCI_UsbDeviceReset
Resetați adaptorul USB-CAN, trebuie să redeschideți dispozitivul după resetare folosind VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType, DWORD DevIndex, DWORD rezervat
Parametri:
DevType
Tipul dispozitivului. Consultați: Definiția tipului de dispozitiv adaptor.
DevIndex
Device Index, de exampatunci când există un singur adaptor USB-CAN, numărul de index este 0, când există mai multe adaptoare USB-CAN, numerele de index în ordine crescătoare începând de la 0.
Rezervat Rezervat.
Returnări:
Valoarea returnată = 1, ceea ce înseamnă că operația este reușită; = 0 indică faptul că operația a eșuat; = -1 indică faptul că dispozitivul nu există.
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
3.1.2. VCI_FindUsbDevice2
Când același PC utilizează mai multe USB-CAN, utilizatorul poate folosi această funcție pentru a găsi dispozitivul curent.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametri:
pInfo
pInfo este folosit pentru a stoca parametrii primului indicator al adresei tampon de date.
Retururi
Returnați numărul adaptorului USB-CAN conectat la computer.
Partea a patra Funcțiile bibliotecii de interfață folosind Process
Pentru a multiplica funcția dispozitivului, am furnizat funcții suplimentare (funcții prezentate cu un fundal verde), aceste funcții includ: VCI_FindUsbDevice2 VCI_UsbDeviceReset. În timpul celei de-a doua dezvoltări, aceste funcții nu trebuie neapărat invocate. Chiar și aceste funcții sunt ignorate, toate funcțiile adaptorului USB-CAN pot fi realizate.
www.waveshare.com
www.waveshare.com/wiki
Documente/Resurse
![]() |
Bibliotecă de funcții de interfață de adaptor de interfață de magistrală WAVESHARE USB-CAN [pdfManual de instrucțiuni Bibliotecă de funcții de interfață de adaptor de interfață de magistrală USB-CAN, USB-CAN, bibliotecă de funcții de interfață de adaptor de interfață de magistrală, bibliotecă de funcții de interfață, bibliotecă de funcții |