Rozhranie USB-CAN Bus
Funkcia rozhrania adaptéra
Pokyny pre používateľa knižnice
PRVÁ ČASŤ UKONČENÁVIEW
Ak používateľ na test komunikácie so zbernicou CAN použije iba adaptér rozhrania USB-CAN, môže priamo použiť dodávaný softvér USB-CAN Tool na odosielanie a prijímanie údajov testu.
Ak má používateľ v úmysle napísať softvérový program pre svoje vlastné produkty. Pozorne si prečítajte nasledujúce pokyny a vezmite si referenciu zo sampkód, ktorý poskytujeme:
⑴ C++ Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Rozvíjať knižnicu file :ControlCAN.lib, ControlCAN.DLL
Deklarácia funkcie verzie VC file :ControlCAN.h
Deklarácia funkcie verzie VB file: ControlCAN.bas
LabVIEW modul balíka funkcií knižnice :ControlCAN.llb
Deklarácia funkcie verzie Delphi file: ControlCAN.pas
DRUHÁ ČASŤ KOMPATIBILNÁ KNIŽNICA FUNKCIÍ A ŠTRUKTÚRA ÚDAJOV
2.1. DEFINÍCIA TYPU
2.1.1. Typ zariadenia
Definícia typu | Zadajte hodnotu | Popis |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Štruktúra VCI_BOARD_INFO obsahuje informácie o zariadení karty rozhrania USB-CAN Series.
Štruktúra bude vyplnená funkciou VCI_ReadBoardInfo.
Člen:
hw_version
Číslo verzie hardvéru, hexadecimálny zápis. Napr. 0x0100 predstavuje V1.00.
fw_Version
Číslo verzie hardvéru, hexadecimálny zápis. Napr. 0x0100 predstavuje V1.00.
Strana 2
dr_Verzia
Číslo verzie ovládača, hexadecimálny zápis. Napr. 0x0100 predstavuje V1.00.
vo_verzii
Číslo verzie knižnice rozhrania, hexadecimálny zápis. Napr. 0x0100 predstavuje V1.00.
irq_Num
Systém je rezervovaný.
can_Num
Predstavuje celkový počet kanálov CAN.
str_Serial_Num
Sériové číslo tejto palubnej karty.
str_hw_Type
Typ hardvéru, ako napríklad „USBCAN V1.00“ (Poznámka: Obsahuje reťazec terminátor '\0').
Rezervované
Systém je rezervovaný.
2.1.3. VCI_CAN_OBJ
Vo funkciách VCI_Transmit a VCI_Receive sa na prenos rámca správy CAN používa štruktúra VCI_CAN_OBJ.
Člen:
ID
Identifikátor správy. Formát priameho ID, zarovnaný vpravo, pozrite si: Príloha XNUMX: Podrobnosti o zarovnaní ID.
TimeStamp
Prijímanie svamp informácie o časovom rámci, čas začiatku pri inicializácii ovládača CAN, jednotka je 0 ms.
TimeFlag
Z hľadiska toho, či využiť čas svamp, 1 je efektívny TimeStamp. TimeFlag a TimeStamp majú význam iba vtedy, keď je prijatý rámec.
SendType
Typ odosielania. = 0 označuje normálny typ, = 1 označuje jedno odoslanie.
RemoteFlag
Či už ide o vzdialenú vlajku. = 1 označuje vzdialený príznak, = 0 označuje údajový príznak.
ExternFlag
Či už ide o externú vlajku. = 1 označuje externý príznak, = 0 označuje štandardný príznak.
DataLen
Dĺžka údajov (<=8) ,to znamená dĺžka údajov.
Údaje
Paketové dáta.
Rezervované
Systém je rezervovaný.
2.1.4. VCI_INIT_CONFIG
Štruktúra VCI_INIT_CONFIG definuje inicializačnú konfiguráciu CAN. Štruktúra bude vyplnená funkciou VCI_InitCan.
Člen:
AccCode
Prijať filtrovaný akceptačný kód.
AccMask
Prijať masku filtra.
Rezervované
Rezervované.
Filter
Metóda filtrovania umožňujúca nastavenie rozsahu 0-3, podrobnosti nájdete v časti 2.2.3 tabuľky režimov filtrovania.
Načasovanie 0
SJA1000 Parameter prenosovej rýchlosti, časovanie0 (BTR0) .
Načasovanie 1
SJA1000 Parameter prenosovej rýchlosti, časovanie1 (BTR1) .
Režim
Prevádzkový režim, 0 = normálna prevádzka, 1 = režim len počúvania, 2 = skúšobný režim spontánneho príjmu a odoslania.
Poznámky:
Informácie o nastaveniach filtra nájdete v: Príloha II: Pokyny na nastavenie parametrov CAN.
CAN Timing0 a Timing1 sa používajú na nastavenie prenosovej rýchlosti, tieto dva parametre sa používajú iba pri inicializácii stage.
Konvenčná referenčná tabuľka Baud:
CAN Prenosová rýchlosť | Načasovanie0 (BTR0) | Načasovanie1 (BTR1) |
10 kb/s | 0x31 | 0x1C |
20 kb/s | 0x18 | 0x1C |
40 kb/s | 0x87 | 0xFF |
50 kb/s | 0x09 | 0x1C |
80 kb/s | 0x83 | 0xFF |
100 kb/s | 0x04 | 0x1C |
125 kb/s | 0x03 | 0x1C |
200 kb/s | 0x81 | 0xFA |
250 kb/s | 0x01 | 0x1C |
400 kb/s | 0x80 | 0xFA |
500 kb/s | 0x00 | 0x1C |
666 kb/s | 0x80 | 0xB6 |
800 kb/s | 0x00 | 0x16 |
1000 kb/s | 0x00 | 0x14 |
33.33 kbps | 0x09 | 0x6F |
66.66 kbps | 0x04 | 0x6F |
83.33 kbps | 0x03 | 0x6F |
- Používatelia musia na nastavenie parametra prenosovej rýchlosti postupovať iba podľa SJA1000 (16 MHz).
- Adaptér dočasne nepodporuje prenosovú rýchlosť pod 10 kB.
2.2. POPIS FUNKCIE
2.2.1. VCI_OpenDevice
Táto funkcia sa používa na pripojenie zariadení.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
Rezervované
Parametre uchovávania, vyplňte 0.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
2.2.2. VCI_CloseDevice
Táto funkcia sa používa na ukončenie spojenia.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
2.2.3. VCI_InitCan
Táto funkcia sa používa na inicializáciu špecifikovaného CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANindex,
PVCI_INIT_CONFIG pInitConfig);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN, napríklad keď existuje iba jeden kanál CAN, číslo indexu je 0, ak sú dva, číslo indexu môže byť 0 alebo 1.
pInitConfig
Štruktúra inicializačných parametrov. Zoznam parametrov členov:
člen | Popis funkcie |
pInitConfig->AccCode | AccCode a AccMask môžu spolupracovať pri určovaní, ktoré pakety možno prijať. Tieto dva registre sa používajú na nastavenie ID zarovnané doľava, to znamená, že najvyšší bit (Bit31) AccCode a AccMask je zarovnaný s najvyšším bitom hodnoty ID. |
pInitConfig->AccMask | O zarovnaní ID pozri prílohy: Príloha I: Podrobnosti zarovnania ID. Napr.: Ak nastavíte hodnotu AccCode ako 0x24600000 (tj 0x123 sa posunie doľava o 21 bitov), hodnota AccMask je nastavené na 0x00000000 a potom môžu byť akceptované iba pakety s ID rámca správy CAN 0x123 (hodnota AccMask 0x00000000 znamená, že všetky bity sú relevantné |
bity). Ak je hodnota AccCode nastavená na 0x24600000, hodnota AccMask je nastavená na 0x600000 (0x03 je posunutá doľava o 21 bitov) a potom môžu byť akceptované iba pakety s ID rámca správy CAN je 0x120 ~ 0x123 (hodnota AccMask 0x600000 znamená, že okrem bitu 0 ~ bit1 sú relevantné aj iné bity (bit 2 ~ bit10). Poznámka: Toto nastavenie filtra napramples do štandardného rámu, naprample, vysoký 11-bit je platný bit; v prípade rozšíreného rámca a potom je platné ID 29-bitové. AccCode a AccMask nastavili ako platný bit vysokú hodnotu 29 bitov! |
|
pInitConfig->Rezervované | rezervované |
pInitConfig->Filter | Nastavenia režimu filtrovania nájdete v časti tabuľky režimov filtrovania. |
pInitConfig->Časovanie0 | Nastavenie prenosovej rýchlosti T0 |
pInitConfig->Časovanie1 | Nastavenie prenosovej rýchlosti T1 |
pInitConfig->Mode | Prevádzkový režim: 0-normálna prevádzka 1-Režim iba na počúvanie 2-spontánny testovací režim prijatia a odoslania (táto hodnota je vylúčená z knižnice funkcií ZLG) |
Tabuľka režimov filtrovania:
Hodnota | Meno | Popis |
1 | Prijímajte všetky typy | Vhodné pre štandardný aj predĺžený rám! |
2 | Prijímajte iba štandardný rám | Vhodné pre štandardný rám a predĺžené |
rám bude odstránený priamo filtráciou! | ||
3 | Prijímajte iba predĺžený rám | Vhodné pre predĺžený rám a štandardný rám bude odstránený priamo filtrácia! . |
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
Napr
2.2.4. VCI_ReadBoardInfo
Táto funkcia sa používa na čítanie informácií o hardvéri adaptéra. Vo všeobecnosti ho možno ignorovať.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúc od 0. pInfo
VCI_BOARD_INFO sa používa na uloženie ukazovateľa štruktúry informácií o zariadení.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
2.2.5. VCI_GetReceiveNum
Táto funkcia sa používa na špecifikáciu prijatých, ale neprečítaných rámcov v určenej prijímacej vyrovnávacej pamäti.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANindex);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN.
Vrátenie:
Vráti snímky, ktoré ešte neboli prečítané.
Napr
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Táto funkcia sa používa na vymazanie vyrovnávacej pamäte pre príjem a odosielanie určeného kanála špecifikovaného pomocou
USB-CAN adaptér.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANindex);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
2.2.7. VCI_StartCAN
Táto funkcia sa používa na spustenie ovládača CAN a funkcie príjmu interného prerušenia adaptéra.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANindex);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
2.2.8. VCI_ResetCAN
Táto funkcia sa používa na resetovanie ovládača CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANindex);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
2.2.9. VCI_Transmit
Táto funkcia sa používa na odoslanie rámca správy CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN. pOdoslať
Prvá adresa polí dátových rámcov, ktoré sa majú odoslať.
Dĺžka
Počet dátových rámcov, ktoré sa majú odoslať, maximálny počet je 1000, odporúčaná hodnota je 48 pri vysokej rýchlosti.
Vrátenie:
Vráti skutočný počet už odoslaných rámcov, návratová hodnota = -1 znamená chybu zariadenia.
Napr
2.2.10. VCI_Receive
Táto funkcia sa používa na vyžiadanie príjmu.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANindex, PVCI_CAN_OBJ pPrijať, ULONG dĺžka, INT čakacia doba);
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
CANindex
Index kanála CAN.
pPrijať
Na prijatie prvého nastaveného ukazovateľa dátových rámcov.
Len
Dĺžka poľa dátového rámca musí byť väčšia ako 2500, aby sa vrátila normálna správa.
V opačnom prípade bude návratová dĺžka nulová bez ohľadu na to, či bude správa prijatá alebo nie. adaptér nastavil 2000-snímkovú vyrovnávaciu pamäť pre každý kanál. Na základe vlastného systému a pracovného prostredia si používateľ môže vybrať vhodnú dĺžku poľa od 2500.
Čas čakania rezervovaný.
Vrátenie:
Vráti počet snímok, ktoré boli skutočne prečítané, -1 označuje chyby zariadenia.
Napr
TRETIA ČASŤ ĎALŠIE FUNKCIE A POPIS ŠTRUKTÚRY ÚDAJOV
Táto kapitola popisuje ďalšie dátové typy a funkcie nekompatibilnej knižnice rozhraní ZLG obsiahnutej v knižnici rozhrania adaptéra USB-CAN ControlCAN.dll. Prosím
nevolať tieto funkcie, ak používate kompatibilný model ZLG na sekundárny vývoj, aby sa neovplyvnila kompatibilita.
3.1 POPIS FUNKCIE
3.1.1. VCI_UsbDeviceReset
Resetujte adaptér USB-CAN, po resetovaní je potrebné znova otvoriť zariadenie pomocou VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved
Parametre:
DevType
Typ zariadenia. Pozri: Definícia typu zariadenia adaptéra.
DevIndex
Index zariadenia, naprample, ak existuje iba jeden adaptér USB-CAN, indexové číslo je 0, ak existuje viacero adaptérov USB-CAN, indexové čísla vo vzostupnom poradí začínajúce od 0.
Rezervované Rezervované.
Vrátenie:
Návratová hodnota = 1, čo znamená, že operácia je úspešná; = 0 znamená, že operácia zlyhala; = -1 znamená, že zariadenie neexistuje.
bRel = VCI_UsbDeviceReset(nDeviceType, Nezávislosť, 0);
3.1.2. VCI_FindUsbDevice2
Keď ten istý počítač používa viacero USB-CAN, používateľ môže použiť túto funkciu na nájdenie aktuálneho zariadenia.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametre:
pInfo
pInfo sa používa na uloženie parametrov prvého ukazovateľa adresy vyrovnávacej pamäte.
Návraty
Vráťte číslo adaptéra USB-CAN pripojeného k počítaču.
Štvrtá časť Funkcie knižnice rozhrania využívajúce proces
Aby sme znásobili funkcie zariadenia, poskytli sme ďalšie funkcie (funkcie zobrazené so zeleným pozadím), medzi ktoré patria: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Počas druhého vývoja sa tieto funkcie nemusia nevyhnutne používať. Aj keď sú tieto funkcie ignorované, je možné dosiahnuť všetky funkcie adaptéra USB-CAN.
www.waveshare.com
www.waveshare.com/wiki
Dokumenty / zdroje
![]() |
Knižnica funkcií rozhrania adaptéra rozhrania zbernice WAVESHARE USB-CAN [pdfNávod na obsluhu Knižnica funkcií rozhrania adaptéra rozhrania USB-CAN, USB-CAN, Knižnica funkcií rozhrania adaptéra rozhrania zbernice, Knižnica funkcií rozhrania, Knižnica funkcií |