Interfejs magistrali USB-CAN
Funkcja interfejsu adaptera
Instrukcja obsługi biblioteki
CZĘŚĆ PIERWSZA ZAKOŃCZONAVIEW
Jeśli użytkownik po prostu użyje adaptera interfejsu magistrali USB-CAN, aby przejść do testu komunikacji magistrali CAN, może bezpośrednio użyć dostarczonego oprogramowania USB-CAN Tool do wysyłania i odbierania danych testu.
Jeśli użytkownik zamierza napisać oprogramowanie dla własnych produktów. Proszę uważnie przeczytać poniższe instrukcje i odnieść się do sampkod, który zapewniamy:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Rozwijaj bibliotekę file :ControlCAN.lib, ControlCAN.DLL
Deklaracja funkcji wersji VC file :SterowanieCAN.h
Deklaracja funkcji wersji VB file: ControlCAN.bas
LaboratoriumVIEW Moduł pakietu funkcji biblioteki wersji: ControlCAN.llb
Deklaracja funkcji wersji Delphi file: ControlCAN.pas
CZĘŚĆ DRUGA KOMPATYBILNA BIBLIOTEKA FUNKCJI I STRUKTURA DANYCH
2.1. DEFINICJA TYPU
2.1.1. Rodzaj urządzenia
Definicja typu | Wpisz wartość | Opis |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Struktura VCI_BOARD_INFO zawiera informacje o urządzeniu karty interfejsu USB-CAN.
Struktura zostanie wypełniona funkcją VCI_ReadBoardInfo.
Członek:
hw_wersja
Numer wersji sprzętu, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
fw_wersja
Numer wersji sprzętu, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
Strona 2
dr_Wersja
Numer wersji sterownika, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
in_Version
Numer wersji biblioteki interfejsu, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
irq_Num
System zarezerwowany.
can_Num
Reprezentuje całkowitą liczbę kanałów CAN.
str_Serial_Num
Numer seryjny tej karty pokładowej.
str_hw_Type
Typ sprzętu, np. „USBCAN V1.00” (Uwaga: zawiera terminator ciągu znaków „\0”).
Skryty
System zarezerwowany.
2.1.3. VCI_CAN_OBJ
W funkcjach VCI_Transmit i VCI_Receive do przesyłania ramki danych CAN wykorzystywana jest struktura VCI_CAN_OBJ.
Członek:
ID
Identyfikator wiadomości. Format Direct ID, wyrównany do prawej strony, patrz: Załącznik nr 1: Szczegóły dotyczące wyrównania identyfikatorów.
CzasStamp
Odbiór śwamp informacja o ramce czasowej, rozpoczęcie odmierzania czasu po inicjalizacji sterownika CAN, jednostką jest 0 ms.
Flaga czasu
W kwestii wykorzystania czasu ulamp, 1 to efektywny TimeStamp. TimeFlag i TimeStamp mają znaczenie tylko wtedy, gdy ramka zostanie odebrana.
Typ wysyłania
Typ wysyłania. = 0 oznacza typ normalny, = 1 oznacza wysyłanie pojedyncze.
Zdalna flaga
Niezależnie od tego, czy jest to odległa flaga. = 1 oznacza flagę zdalną, = 0 oznacza flagę danych.
Zewnętrzna flaga
Niezależnie od tego, czy jest to flaga zewnętrzna. = 1 oznacza flagę zewnętrzną, = 0 oznacza flagę standardową.
DataLen
Długość danych (<= 8), czyli długość danych.
Dane
Dane pakietowe.
Skryty
System zarezerwowany.
2.1.4. VCI_INIT_CONFIG
Struktura VCI_INIT_CONFIG definiuje konfigurację inicjalizacji CAN. Struktura zostanie wypełniona funkcją VCI_InitCan.
Członek:
Kod dostępu
Otrzymaj przefiltrowany kod akceptacji.
AccMaska
Odbierz maskę filtrującą.
Skryty
Skryty.
Filtr
Metoda filtrowania, umożliwiająca ustawienie w zakresie 0-3, szczegółowe informacje można znaleźć w sekcji 2.2.3 tabeli trybów filtra.
Czas0
SJA1000 Parametr szybkości transmisji, Timing0 (BTR0) .
Czas1
SJA1000 Parametr szybkości transmisji, Timing1 (BTR1) .
Tryb
Tryb pracy, 0 = normalna praca, 1 = tryb tylko nasłuchiwania, 2 = tryb spontanicznego przyjmowania i testowania wysyłania.
Uwagi:
Informacje na temat ustawień filtra można znaleźć w: Załącznik II: Instrukcje konfiguracji parametrów CAN.
CAN Timing0 i Timing1 służą do ustawiania szybkości transmisji, te dwa parametry są używane tylko podczas inicjalizacjitage.
Konwencjonalna tabela referencyjna Baud:
Szybkość transmisji CAN | Czas0(BTR0) | Czas1(BTR1) |
10 tys. bps | 0x31 | 0x1C |
20 tys. bps | 0x18 | 0x1C |
40 tys. bps | 0x87 | 0xFF |
50 tys. bps | 0x09 | 0x1C |
80 tys. bps | 0x83 | 0xFF |
100 tys. bps | 0x04 | 0x1C |
125 tys. bps | 0x03 | 0x1C |
200 tys. bps | 0x81 | 0xFA |
250 tys. bps | 0x01 | 0x1C |
400 tys. bps | 0x80 | 0xFA |
500 tys. bps | 0x00 | 0x1C |
666 tys. bps | 0x80 | 0xB6 |
800 tys. bps | 0x00 | 0x16 |
1000 tys. bps | 0x00 | 0x14 |
33.33 kbps | 0x09 | 0x6F |
66.66 kbps | 0x04 | 0x6F |
83.33 kbps | 0x03 | 0x6F |
- Użytkownicy muszą jedynie postępować zgodnie z SJA1000 (16 MHz), aby ustawić parametr szybkości transmisji.
- Adapter nie obsługuje tymczasowo szybkości transmisji poniżej 10K.
2.2. OPIS FUNKCJI
2.2.1. VCI_OpenDevice
Funkcja ta służy do łączenia urządzeń.
DWORD __stdcall VCI_OpenDevice(DWORD DevType, DWORD DevIndex, DWORD zarezerwowane);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
Skryty
Parametry przechowywania, wpisz 0.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
2.2.2. VCI_CloseDevice
Funkcja ta służy do zamknięcia połączenia.
DWORD __stdcall VCI_CloseDevice(DWORD DevType, DWORD DevIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
2.2.3. VCI_InitCan
Ta funkcja służy do inicjalizacji określonej sieci CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN, np. gdy jest tylko jeden kanał CAN, numer indeksu wynosi 0, jeśli są dwa, numer indeksu może wynosić 0 lub 1.
pInitConfig
Struktura parametrów inicjalizacji. Lista parametrów prętów:
Członek | Opis funkcjonalny |
pInitConfig->AccCode | AccCode i AccMask mogą współpracować, aby określić, które pakiety mogą zostać zaakceptowane. Te dwa rejestry służą do ustawienia identyfikatora wyrównanego do lewej, to znaczy najwyższy bit (Bit31) kodu AccCode i AccMask jest wyrównany z najwyższym bitem wartości identyfikatora. |
pInitConfig->AccMask | Informacje na temat dostosowania identyfikatorów znajdują się w załącznikach: Załącznik I: Szczegóły wyrównania identyfikatora. Np.: Jeśli ustawisz wartość AccCode na 0x24600000 (tzn. 0x123 zostanie przesunięte w lewo o 21 bitów), wartość AccMask jest ustawiony na 0x00000000 i wtedy akceptowane mogą być tylko pakiety z identyfikatorem ramki danych CAN wynoszącym 0x123 (wartość AccMask wynosząca 0x00000000 wskazuje, że wszystkie bity są istotne |
bity). Jeśli wartość AccCode jest ustawiona na 0x24600000, wartość AccMask jest ustawiona na 0x600000 (0x03 jest przesunięta w lewo o 21 bitów), a wówczas akceptowane mogą być tylko pakiety z identyfikatorem ramki komunikatów CAN wynoszącym 0x120 ~ 0x123 (wartość AccMask 0x600000 wskazuje, że oprócz bitów 0 ~ bitów 1 inne bity (bit2 ~ bit10) są istotne). Notatka: To ustawienie filtra npamples do standardowej ramki, npample, wysoki 11-bitowy bit jest prawidłowym bitem; w przypadku ramki rozszerzonej, wówczas prawidłowy identyfikator jest 29-bitowy. AccCode i AccMask ustawiają wysoki 29-bitowy bit jako prawidłowy! |
|
pInitConfig->Zarezerwowane | skryty |
pInitConfig->Filtr | Ustawienia trybu filtrowania znajdują się w części tabeli trybów filtrowania. |
pInitConfig->Timing0 | Ustawienie szybkości transmisji T0 |
pInitConfig->Timing1 | Ustawienie szybkości transmisji T1 |
pInitConfig->Tryb | Tryb pracy: 0-normalna praca 1-Tryb tylko słuchania 2-spontaniczny tryb testowy przyjmowania i wysyłania (ta wartość jest wyłączona z biblioteki funkcji ZLG) |
Tabela trybów filtra:
Wartość | Nazwa | Opis |
1 | Otrzymuj wszystkie typy | Pasuje zarówno do ramy standardowej, jak i rozszerzonej! |
2 | Otrzymuj tylko standardową ramkę | Pasuje do standardowej ramy i jest przedłużany |
ramka zostanie usunięta bezpośrednio przez filtrację! | ||
3 | Otrzymuj tylko rozszerzoną ramkę | Pasuje do przedłużonej ramy, a standardowa rama zostanie usunięta filtracja bezpośrednio! 。 |
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
Np
2.2.4. Informacje VCI_ReadBoard
Ta funkcja służy do odczytywania informacji o sprzęcie adaptera. Generalnie można to pominąć.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex, PVCI_BOARD_INFO pInfo);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w kolejności rosnącej, zaczynając od 0. pInfo
VCI_BOARD_INFO służy do przechowywania wskaźnika struktury informacji o urządzeniu.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
2.2.5. VCI_GetReceiveNum
Ta funkcja służy do określania odebranych, ale nie przeczytanych ramek w wyznaczonym buforze odbiorczym.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Zwróć ramki, które nie zostały jeszcze przeczytane.
Np
#include „ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Ta funkcja służy do czyszczenia bufora odbioru i wysyłania wyznaczonego kanału określonego przez
Adapter USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
2.2.7. VCI_StartCAN
Ta funkcja służy do uruchamiania kontrolera CAN i funkcji odbioru wewnętrznego przerwania adaptera.
DWORD __stdcall VCI_StartCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
2.2.8. VCI_ResetCAN
Funkcja ta służy do resetowania sterownika CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
2.2.9. Transmisja VCI
Ta funkcja służy do wysyłania ramki danych CAN.
DWORD __stdcall VCI_Transmit(Typ urządzenia DWORD, Ind urządzenia DWORD, DWORD CANInd, PVCI_CAN_OBJ pSend, Długość DWORD);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN. pWyślij
Pierwszy adres tablic ramek danych, które mają zostać wysłane.
Długość
Liczba ramek danych, które mają zostać wysłane, maksymalna liczba to 1000, zalecana wartość to 48 przy dużej prędkości.
Zwroty:
Zwraca rzeczywistą liczbę już wysłanych ramek, zwracana wartość = -1 wskazuje na błąd urządzenia.
Np
2.2.10. VCI_Odbiór
Ta funkcja służy do żądania odbioru.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
pOdbierz
Aby otrzymać pierwszy ustawiony wskaźnik ramek danych.
Len
Aby zwrócić normalny komunikat, długość tablicy ramki danych musi być większa niż 2500.
W przeciwnym razie długość zwracana będzie wynosić zero niezależnie od tego, czy wiadomość zostanie odebrana, czy nie. adapter ustawił bufor na 2000 ramek dla każdego kanału. W oparciu o własny system i środowisko pracy użytkownik może wybrać odpowiednią długość tablicy spośród 2500.
Czas oczekiwania zarezerwowany.
Zwroty:
Zwraca liczbę faktycznie odczytanych ramek, -1 oznacza błędy urządzenia.
Np
CZĘŚĆ TRZECIA INNE FUNKCJE I OPIS STRUKTURY DANYCH
W tym rozdziale opisano inne typy danych i funkcje niekompatybilnej biblioteki interfejsu ZLG zawartej w bibliotece interfejsu adaptera USB-CAN ControlCAN.dll. Proszę zrób
nie wywołuj tych funkcji, jeśli używasz kompatybilnego modelu ZLG do rozwoju wtórnego, aby nie wpływać na kompatybilność.
3.1 FUNKCJA OPIS
3.1.1. Reset VCI_UsbDevice
Zresetuj adapter USB-CAN, po zresetowaniu należy ponownie otworzyć urządzenie za pomocą VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType, DWORD DevIndex, DWORD zarezerwowane
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
Zarezerwowane Zarezerwowane.
Zwroty:
Wartość zwracana = 1, co oznacza, że operacja się powiodła; = 0 oznacza, że operacja nie powiodła się; = -1 oznacza, że urządzenie nie istnieje.
bRel = VCI_UsbDeviceReset(nDeviceType, niezależność, 0);
3.1.2. VCI_FindUsbDevice2
Jeśli ten sam komputer korzysta z wielu portów USB-CAN, użytkownik może skorzystać z tej funkcji, aby znaleźć bieżące urządzenie.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametry:
pInfo
pInfo służy do przechowywania parametrów wskaźnika adresu pierwszego bufora danych.
Zwroty
Zwróć numer adaptera USB-CAN podłączonego do komputera.
Część czwarta Funkcje biblioteki interfejsu wykorzystujące proces
Aby zwielokrotnić funkcjonalność urządzenia, udostępniliśmy dodatkowe funkcje (funkcje przedstawione na zielonym tle), do tych funkcji należą: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Podczas drugiego rozwoju funkcje te nie muszą być koniecznie wywoływane. Nawet te funkcje są ignorowane, można uzyskać wszystkie funkcje adaptera USB-CAN.
www.waveshare.com
www.waveshare.com/wiki
Dokumenty / Zasoby
![]() |
Biblioteka funkcji interfejsu adaptera interfejsu USB-CAN WAVESHARE [plik PDF] Instrukcja obsługi Biblioteka funkcji interfejsu magistrali USB-CAN, biblioteka funkcji interfejsu adaptera, USB-CAN, biblioteka funkcji interfejsu magistrali, biblioteka funkcji interfejsu, biblioteka funkcji |