Інтерфейс шини USB-CAN
Функція інтерфейсу адаптера
Інструкція користувача бібліотеки
ЧАСТИНА ПЕРША ЗАВЕРШЕНАVIEW
Якщо користувач просто використовує адаптер інтерфейсу шини USB-CAN для тестування зв’язку шини CAN, тоді він може безпосередньо використовувати програмне забезпечення USB-CAN Tool, що входить до комплекту, для надсилання та отримання даних тесту.
Якщо користувач має намір написати програмне забезпечення для власних продуктів. Уважно прочитайте наведені нижче інструкції та візьміть посилання на розділиampкод, який ми надаємо:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Розвивати бібліотеку file :ControlCAN.lib, ControlCAN.DLL
Оголошення функції версії VC file :ControlCAN.h
Оголошення функції версії VB file: ControlCAN.bas
ЛабораторіяVIEW Версія бібліотеки функціональний пакетний модуль :ControlCAN.llb
Оголошення функції версії Delphi file: ControlCAN.pas
ЧАСТИНА ДРУГА БІБЛІОТЕКА СУМІСНИХ ФУНКЦІЙ ТА СТРУКТУРА ДАНИХ
2.1. ВИЗНАЧЕННЯ ТИПУ
2.1.1. Тип пристрою
Визначення типу | Тип значення | опис |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Структура VCI_BOARD_INFO містить інформацію про пристрій інтерфейсної карти серії USB-CAN.
Структура буде заповнена у функції VCI_ReadBoardInfo.
Член:
hw_Version
Номер версії обладнання, шістнадцяткове число. Наприклад, 0x0100 означає V1.00.
fw_Version
Номер версії обладнання, шістнадцяткове число. Наприклад, 0x0100 означає V1.00.
Сторінка 2
dr_Version
Номер версії драйвера, шістнадцяткове число. Наприклад, 0x0100 означає V1.00.
in_Version
Номер версії бібліотеки інтерфейсу, шістнадцяткове число. Наприклад, 0x0100 означає V1.00.
irq_Num
Система зарезервована.
can_Num
Відображає загальну кількість каналів CAN.
str_Serial_Num
Серійний номер цієї плати.
str_hw_Type
Тип апаратного забезпечення, наприклад «USBCAN V1.00» (Примітка: містить символ закінчення рядка «\0»).
Зарезервовано
Система зарезервована.
2.1.3. VCI_CAN_OBJ
У функціях VCI_Transmit і VCI_Receive структура VCI_CAN_OBJ використовується для передачі кадру повідомлення CAN.
Член:
ID
Ідентифікатор повідомлення. Формат прямого ідентифікатора, вирівняний за правим краєм, див.: Додаток один: Деталі вирівнювання ідентифікатора.
Часamp
Отримання стamp інформація про часовий проміжок, час початку, коли контролер CAN ініціалізовано, одиниця 0 мс.
TimeFlag
В частині використання часу вулamp, 1 є ефективним TimeStamp. TimeFlag і TimeStamp мають значення лише тоді, коли отримано кадр.
SendType
Тип відправки. = 0 вказує на звичайний тип, = 1 вказує на одиночне надсилання.
RemoteFlag
Будь то дистанційний прапор. = 1 вказує на віддалений прапор, = 0 вказує на прапор даних.
ExternFlag
Чи це зовнішній прапор. = 1 вказує на зовнішній прапор, = 0 вказує на стандартний прапор.
DataLen
Довжина даних (<=8), тобто довжина даних.
Дані
Пакет даних.
Зарезервовано
Система зарезервована.
2.1.4. VCI_INIT_CONFIG
Структура VCI_INIT_CONFIG визначає конфігурацію ініціалізації CAN. Структура буде заповнена у функції VCI_InitCan.
Член:
Код рахунку
Отримайте відфільтрований код прийняття.
AccMask
Отримайте маску-фільтр.
Зарезервовано
Зарезервовано.
фільтр
Спосіб фільтрації, що дозволяє налаштувати діапазон 0-3, див. розділ 2.2.3 таблиці режимів фільтра для деталей.
Час0
SJA1000 Параметр швидкості передачі даних, Timing0 (BTR0) .
Час1
SJA1000 Параметр швидкості передачі даних, Timing1 (BTR1) .
Режим
Режим роботи, 0 = нормальна робота, 1 = режим лише прослуховування, 2 = тестовий режим спонтанного прийому та надсилання.
Зауваження:
Про налаштування фільтра дивіться: Додаток II: Інструкції з налаштування параметрів CAN.
CAN Timing0 і Timing1 використовуються для встановлення швидкості передачі даних, ці два параметри використовуються лише під час ініціалізаціїtage.
Довідкова таблиця звичайних бод:
Швидкість передачі CAN | Час0 (BTR0) | Час1 (BTR1) |
10 тис. біт/с | 0x31 | 0x1C |
20 тис. біт/с | 0x18 | 0x1C |
40 тис. біт/с | 0x87 | 0xFF |
50 тис. біт/с | 0x09 | 0x1C |
80 тис. біт/с | 0x83 | 0xFF |
100 тис. біт/с | 0x04 | 0x1C |
125 тис. біт/с | 0x03 | 0x1C |
200 тис. біт/с | 0x81 | 0xFA |
250 тис. біт/с | 0x01 | 0x1C |
400 тис. біт/с | 0x80 | 0xFA |
500 тис. біт/с | 0x00 | 0x1C |
666 тис. біт/с | 0x80 | 0xB6 |
800 тис. біт/с | 0x00 | 0x16 |
1000 тис. біт/с | 0x00 | 0x14 |
33.33 Кбіт/с | 0x09 | 0x6F |
66.66 Кбіт/с | 0x04 | 0x6F |
83.33 Кбіт/с | 0x03 | 0x6F |
- Користувачам потрібно лише дотримуватися SJA1000 (16 МГц), щоб встановити параметр швидкості передачі даних.
- Адаптер тимчасово не підтримує швидкість передачі даних нижче 10 КБ.
2.2. ОПИС ФУНКЦІЙ
2.2.1. VCI_OpenDevice
Ця функція використовується для підключення пристроїв.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
Зарезервовано
Параметри збереження, заповніть 0.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
2.2.2. VCI_CloseDevice
Ця функція використовується для закриття з'єднання.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
2.2.3. VCI_InitCan
Ця функція використовується для ініціалізації зазначеного CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN, наприклад, коли є лише один канал CAN, номер індексу дорівнює 0, якщо їх два, номер індексу може бути 0 або 1.
pInitConfig
Структура параметрів ініціалізації. Список параметрів учасників:
Член | Функціональний опис |
pInitConfig->AccCode | AccCode і AccMask можуть працювати разом, щоб визначити, які пакети можна прийняти. Ці два регістри використовуються для встановлення ідентифікатора з вирівнюванням за лівим краєм, тобто старший біт (Bit31) AccCode та AccMask узгоджується зі старшим бітом значення ID. |
pInitConfig->AccMask | Про вирівнювання ID дивіться додатки: Додаток I: Деталі вирівнювання ID. Наприклад: якщо ви встановите значення AccCode як 0x24600000 (тобто 0x123 зсувається вліво на 21 біт), значення AccMask встановлено значення 0x00000000, і тоді можуть прийматися лише пакети з ідентифікатором кадру повідомлення CAN 0x123 (значення AccMask 0x00000000 вказує на те, що всі біти релевантні |
біти). Якщо значення AccCode встановлено на 0x24600000, значення AccMask встановлено на 0x600000 (0x03 зсувається вліво на 21 біт), і тоді можуть прийматися лише пакети з ідентифікатором кадру повідомлення CAN 0x120 ~ 0x123 (значення AccMask 0x600000 вказує, що крім біта 0 ~ біта 1 інші біти (біт 2 ~ біт 10) є відповідними бітами). Примітка: Цей параметр фільтра напрampдо стандартної рамки, напрample, старший 11-біт є дійсним бітом; у випадку розширеного кадру, тоді дійсний ідентифікатор буде 29-бітним. AccCode і AccMask встановлюють високий 29-біт як дійсний біт! |
|
pInitConfig->Reserved | зарезервований |
pInitConfig->Фільтр | Параметри режиму фільтрації див. у розділі таблиці режимів фільтрації. |
pInitConfig->Timing0 | Налаштування швидкості передачі T0 |
pInitConfig->Timing1 | Налаштування швидкості передачі T1 |
pInitConfig->Mode | Режим роботи: 0-нормальна робота 1-режим лише прослуховування 2-тестовий режим спонтанного прийому та надсилання (це значення виключено з бібліотеки функцій ZLG) |
Таблиця режимів фільтрації:
Значення | Ім'я | опис |
1 | Отримайте всі види | Підходить як до стандартної, так і до подовженої рами! |
2 | Отримайте лише стандартну раму | Підходить як до стандартної рами, так і до подовженої |
кадр буде видалено фільтрацією безпосередньо! | ||
3 | Отримайте лише розширений кадр | Підходить для розширеної рами, а стандартну рамку буде видалено фільтрація безпосередньо! . |
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
напр
2.2.4. VCI_ReadBoardInfo
Ця функція використовується для читання інформації про апаратне забезпечення адаптера. Загалом, на це можна не звертати уваги.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, якщо є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0. pInfo
VCI_BOARD_INFO використовується для зберігання покажчика структури інформації про пристрій.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
2.2.5. VCI_GetReceiveNum
Ця функція використовується для визначення отриманих, але не прочитаних кадрів у призначеному приймальному буфері.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN.
Повернення:
Повертає кадри, які ще не були прочитані.
напр
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Ця функція використовується для очищення буфера прийому та надсилання призначеного каналу, визначеного
Адаптер USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
2.2.7. VCI_StartCAN
Ця функція використовується для запуску контролера CAN і внутрішньої функції прийому переривань адаптера.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
2.2.8. VCI_ResetCAN
Ця функція використовується для скидання контролера CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
2.2.9. VCI_Transmit
Ця функція використовується для надсилання кадру повідомлення CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN. pSend
Перша адреса масивів кадрів даних, які потрібно надіслати.
Довжина
Кількість кадрів даних, які потрібно надіслати, максимальна кількість – 1000, рекомендоване значення – 48 на високій швидкості.
Повернення:
Повертає фактичну кількість уже надісланих кадрів, значення = -1 вказує на помилку пристрою.
напр
2.2.10. VCI_Receive
Ця функція використовується для запиту прийому.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
CANIndex
Індекс каналу CAN.
pReceive
Для отримання першого встановленого покажчика кадрів даних.
лен
Довжина масиву кадру даних має бути більше 2500, щоб повернути нормальне повідомлення.
В іншому випадку довжина поверненого значення дорівнюватиме нулю незалежно від того, отримано повідомлення чи ні. адаптер встановив буфер на 2000 кадрів для кожного каналу. На основі власної системи та робочого середовища користувач може вибрати відповідну довжину масиву з 2500.
Час очікування зарезервовано.
Повернення:
Повертає кількість фактично прочитаних кадрів, -1 вказує на помилки пристрою.
напр
ЧАСТИНА ТРЕТЯ ІНШІ ФУНКЦІЇ ТА СТРУКТУРА ДАНИХ
У цьому розділі описано інші типи даних і функції несумісної бібліотеки інтерфейсу ZLG, яка міститься в бібліотеці інтерфейсу адаптера USB-CAN ControlCAN.dll. Будь ласка
не викликайте ці функції, якщо використовуєте сумісну модель ZLG для вторинної розробки, щоб не вплинути на сумісність.
3.1 ОПИС ФУНКЦІЙ
3.1.1. VCI_UsbDeviceReset
Скинути адаптер USB-CAN, потрібно повторно відкрити пристрій після скидання за допомогою VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved
Параметри:
DevType
Тип пристрою. Див.: Визначення типу пристрою адаптера.
DevIndex
Індекс пристрою, напрample, коли є лише один адаптер USB-CAN, номер індексу дорівнює 0, якщо є кілька адаптерів USB-CAN, номери індексів у порядку зростання, починаючи з 0.
Зарезервовано Зарезервовано.
Повернення:
Повернене значення = 1, що означає, що операція виконана успішно; = 0 вказує на невдачу операції; = -1 означає, що пристрій не існує.
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
3.1.2. VCI_FindUsbDevice2
Якщо на одному ПК використовується кілька USB-CAN, користувач може використовувати цю функцію для пошуку поточного пристрою.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Параметри:
pInfo
pInfo використовується для зберігання параметрів покажчика адреси першого буфера даних.
Повернення
Поверніть номер адаптера USB-CAN, підключеного до комп’ютера.
Частина четверта Функції бібліотеки інтерфейсів, що використовують процес
Щоб розширити функції пристрою, ми надали додаткові функції (функції, виділені зеленим фоном), ці функції включають: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Під час другої розробки ці функції не обов’язково повинні бути викликані. Навіть якщо ці функції ігноруються, усі функції адаптера USB-CAN можна досягти.
www.waveshare.com
www.waveshare.com/wiki
Документи / Ресурси
![]() |
Бібліотека функцій інтерфейсу адаптера шини WAVESHARE USB-CAN [pdfІнструкція з експлуатації USB-CAN Бібліотека функцій інтерфейсу адаптера шини, USB-CAN, Бібліотека функцій інтерфейсу адаптера шини, Бібліотека функцій інтерфейсу, Бібліотека функцій |