Interfaz de bus USB-CAN
Función de interfaz de adaptador
Instrucción para el usuario de la biblioteca
PRIMERA PARTEVIEW
Si el usuario solo usa el adaptador de interfaz de bus USB-CAN para realizar la prueba de comunicación de bus CAN, entonces puede usar directamente el software USB-CAN Tool suministrado para enviar y recibir datos de la prueba.
Si el usuario tiene la intención de escribir un programa de software para sus propios productos. Lea atentamente las siguientes instrucciones y tome como referencia elample código que proporcionamos:
⑴ Constructor C++ ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Desarrollar biblioteca file :ControlCAN.lib, ControlCAN.DLL
Declaración de función de versión de VC file :ControlCAN.h
Declaración de función de versión de VB file: ControlCAN.bas
LaboratorioVIEW Módulo de paquete de funciones de biblioteca de versiones: ControlCAN.llb
Declaración de función de versión de Delphi file: ControlCAN.pas
PARTE DOS BIBLIOTECA DE FUNCIONES COMPATIBLES Y ESTRUCTURA DE DATOS
2.1. DEFINICIÓN DEL TIPO
2.1.1. Tipo de dispositivo
Definición de tipo | Valor de tipo | Descripción |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
La estructura VCI_BOARD_INFO contiene información del dispositivo de la tarjeta de interfaz de la serie USB-CAN.
La estructura se completará con la función VCI_ReadBoardInfo.
Miembro:
versión_hw
Número de versión de hardware, notación hexadecimal. Por ejemplo, 0x0100 representa V1.00.
versión_fw
Número de versión de hardware, notación hexadecimal. Por ejemplo, 0x0100 representa V1.00.
Página 2
dr_Versión
Número de versión del controlador, notación hexadecimal. Por ejemplo, 0x0100 representa V1.00.
en_versión
Número de versión de la biblioteca de interfaz, notación hexadecimal. Por ejemplo, 0x0100 representa V1.00.
número_irq
Sistema reservado.
can_num
Representa el número total de canales CAN.
str_número_serie
El número de serie de esta tarjeta de placa.
str_hw_Tipo
Tipo de hardware, como “USBCAN V1.00” (Nota: incluye el terminador de cadena '\0').
Reservado
Sistema reservado.
2.1.3. VCI_CAN_OBJ
En las funciones VCI_Transmit y VCI_Receive, la estructura VCI_CAN_OBJ se utiliza para transmitir tramas de mensajes CAN.
Miembro:
ID
Identificador de mensaje. Formato de ID directo, alineado a la derecha, consulte: Anexo uno: Detalles de alineación de ID.
HoraStamp
recibiendo el stamp información del marco de tiempo, comience a cronometrar cuando se inicialice el controlador CAN, la unidad es 0. 1ms.
Bandera de tiempo
En términos de si usar el tiempo stamp, 1 es el TimeSt efectivoamp. TimeFlag y TimeStamp sólo tienen sentido cuando se recibe la trama.
Tipo de envío
Tipo de envío. = 0 indica tipo normal, = 1 indica envío único.
Bandera remota
Si se trata de una bandera remota. = 1 indica bandera remota, = 0 indica bandera de datos.
Bandera externa
Si se trata de una bandera externa. = 1 indica bandera externa, = 0 indica bandera estándar.
Longitud de datos
Longitud de los datos (<=8), es decir, la longitud de los datos.
Datos
De paquetes de datos.
Reservado
Sistema reservado.
2.1.4. VCI_INIT_CONFIG
La estructura VCI_INIT_CONFIG define la configuración de inicialización del CAN. La estructura se completará con la función VCI_InitCan.
Miembro:
código de cuenta
Reciba el código de aceptación filtrado.
Máscara de acceso
Recibir máscara de filtro.
Reservado
Reservado.
Filtrar
Método de filtrado, que permite un rango de configuración de 0 a 3; consulte la sección 2.2.3 de la tabla de modos de filtrado para obtener más información.
Tiempo0
SJA1000 Parámetro de tasa de baudios, Timing0 (BTR0) .
Tiempo1
SJA1000 Parámetro de tasa de baudios, Timing1 (BTR1) .
Modo
Modo de funcionamiento, 0 = funcionamiento normal, 1 = modo de solo escucha, 2 = modo de admisión espontánea y prueba de envío.
Observaciones:
Acerca de la configuración del filtro, consulte: Anexo II: Instrucciones de configuración de CANparameter.
CAN Timing0 y Timing1 se utilizan para establecer la velocidad en baudios, estos dos parámetros solo se utilizan en la inicialización stage.
Tabla de referencia de baudios convencional:
Tasa de baudios CAN | Tiempo0(BTR0) | Tiempo1(BTR1) |
10k puntos por segundo | 0x31 | 0x1C |
20k puntos por segundo | 0x18 | 0x1C |
40k puntos por segundo | 0x87 | 0xFF |
50k puntos por segundo | 0x09 | 0x1C |
80k puntos por segundo | 0x83 | 0xFF |
100k puntos por segundo | 0x04 | 0x1C |
125k puntos por segundo | 0x03 | 0x1C |
200k puntos por segundo | 0x81 | 0xFA |
250k puntos por segundo | 0x01 | 0x1C |
400k puntos por segundo | 0x80 | 0xFA |
500k puntos por segundo | 0x00 | 0x1C |
666k puntos por segundo | 0x80 | 0xB6 |
800k puntos por segundo | 0x00 | 0x16 |
1000k puntos por segundo | 0x00 | 0x14 |
33.33 kbps | 0x09 | 0x6F |
66.66 kbps | 0x04 | 0x6F |
83.33 kbps | 0x03 | 0x6F |
- Los usuarios solo necesitan seguir SJA1000 (16 MHz) para establecer el parámetro de tasa de baudios.
- El adaptador no admite temporalmente una tasa de baudios inferior a 10K.
2.2. DESCRIPCIÓN DE LA FUNCIÓN
2.2.1. VCI_OpenDevice
Esta función se utiliza para conectar dispositivos.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reservado);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Reservado
Parámetros de retención, complete con 0.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
2.2.2. VCI_Cerrar dispositivo
Esta función se utiliza para cerrar la conexión.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
2.2.3. VCI_InitCan
Esta función se utiliza para inicializar el CAN especificado.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canal CAN, como cuando solo hay un canal CAN, el número de índice es 0, si hay dos, el número de índice puede ser 0 o 1.
pInitConfig
Estructura de parámetros de inicialización. Lista de parámetros de los miembros:
Miembro | Descripción funcional |
pInitConfig->CódigoAcc | AccCode y AccMask pueden trabajar juntos para determinar qué paquetes se pueden aceptar. Estos dos registros se utilizan para establecer la ID alineada a la izquierda, es decir, el bit más alto (Bit31) de AccCode y AccMask se alinea con el bit más alto del valor de ID. |
pInitConfig->AccMask | Acerca de la alineación de ID, consulte los anexos: Anexo I: Detalles de alineación de ID. Por ejemplo: si establece el valor de AccCode como 0x24600000 (es decir, 0x123 se desplaza a la izquierda 21 bits), el valor de AccMask se establece en 0x00000000, y luego solo se pueden aceptar los paquetes con ID de trama de mensaje CAN de 0x123 (el valor de AccMask de 0x00000000 indica que todos los bits son relevantes |
bits). Si el valor de AccCode se establece en 0x24600000, el valor de AccMask se establece en 0x600000 (0x03 se desplaza a la izquierda 21 bits), y solo se pueden aceptar los paquetes con el ID de trama de mensaje CAN de 0x120 ~ 0x123 (valor de AccMask 0x600000 indica que además de bit0 ~ bit1, otros bits (bit2 ~ bit10) son bits relevantes). Nota: Esta configuración de filtro examples al marco estándar, por ej.ample, alto 11 bits es el bit válido; en el caso de la trama extendida, entonces la ID válida es de 29 bits. ¡AccCode y AccMask establecen un valor alto de 29 bits como el bit válido! | |
pInitConfig->Reservado | reservado |
pInitConfig->Filtro | Para la configuración del modo de filtrado, consulte la sección de la tabla del modo de filtrado. |
pInitConfig->Tiempo0 | Ajuste de tasa de baudiosT0 |
pInitConfig->Tiempo1 | Ajuste de tasa de baudiosT1 |
pInitConfig->Modo | Modo operativo: 0-funcionamiento normal 1-Modo de solo escuchar 2-modo de prueba de admisión y envío espontáneos (este valor está excluido de la biblioteca de funciones ZLG) |
Tabla de modos de filtro:
Valor | Nombre | Descripción |
1 | Recibe todo tipo | ¡Adecuado tanto para marco estándar como extendido! |
2 | Solo recibe marco estándar | Adecuado para marco estándar y extendido |
¡El marco será eliminado por filtración directamente! | ||
3 | Solo recibir marco extendido | Adecuado para marco extendido, y el marco estándar será removido por filtración directamente! 。 |
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
P.ej
2.2.4. VCI_ReadBoardInfo
Esta función se utiliza para leer la información del hardware del adaptador. En términos generales, se puede ignorar.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex, PVCI_BOARD_INFO pInfo);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ample, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0. pInfo
VCI_BOARD_INFO se utiliza para almacenar el puntero de estructura de información del dispositivo.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
2.2.5. VCI_GetReceiveNum
Esta función se utiliza para especificar las tramas recibidas pero no leídas en el búfer de recepción designado.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canales CAN.
Devoluciones:
Devuelve fotogramas que aún no se han leído.
P.ej
#incluye “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Esta función se utiliza para borrar el búfer de recepción y envío del canal designado especificado por
Adaptador USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canales CAN.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
2.2.7. VCI_StartCAN
Esta función se utiliza para iniciar el controlador CAN y la función de recepción de interrupción interna del adaptador.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canales CAN.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
2.2.8. VCI_ResetCAN
Esta función se utiliza para restablecer el controlador CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canales CAN.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
2.2.9. VCI_transmitir
Esta función se utiliza para enviar un marco de mensaje CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_CAN_OBJ pSend, DWORD Length);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canales CAN. pEnviar
La primera dirección de las matrices de tramas de datos que deben enviarse.
Longitud
El número de tramas de datos que deben enviarse, el número máximo es 1000, el valor recomendado es 48 en alta velocidad.
Devoluciones:
Devuelve el número real de tramas ya enviadas, el valor de retorno = -1 indica un error del dispositivo.
P.ej
2.2.10. VCI_Recibir
Esta función se utiliza para solicitar la recepción.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Índice CAN
Índice de canales CAN.
pRecibir
Para recibir el primer puntero establecido de las tramas de datos.
Len
La longitud de la matriz del marco de datos debe ser superior a 2500 para devolver un mensaje normal.
De lo contrario, la longitud de retorno será cero, ya sea que se reciba el mensaje o no. el adaptador estableció un búfer de 2000 cuadros para cada canal. Según su propio sistema y entorno de trabajo, el usuario puede elegir una longitud de matriz adecuada de 2500.
Tiempo de espera reservado.
Devoluciones:
Devuelve el número de fotogramas que realmente se han leído, -1 indica errores del dispositivo.
P.ej
TERCERA PARTE OTRAS FUNCIONES Y ESTRUCTURA DE DATOS DESCRIPCIÓN
Este capítulo describe otros tipos de datos y funciones de la biblioteca de interfaz ZLG incompatible contenida en la biblioteca de interfaz del adaptador USB-CAN ControlCAN.dll. Por favor, hazlo
No llame a estas funciones si usa un modelo ZLG compatible para el desarrollo secundario para no afectar la compatibilidad.
3.1 FUNCIÓN DESCRIPCIÓN
3.1.1. VCI_UsbDeviceReset
Reinicie el adaptador USB-CAN, necesita volver a abrir el dispositivo después de reiniciar usando VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reservado
Parámetros:
Tipo de desarrollo
Tipo de dispositivo. Consulte: Definición del tipo de dispositivo adaptador.
índice de desarrollo
Índice de dispositivos, por ej.ampes decir, cuando solo hay un adaptador USB-CAN, el número de índice es 0, cuando hay varios adaptadores USB-CAN, los números de índice en orden ascendente a partir de 0.
Reservado Reservado.
Devoluciones:
Valor de retorno = 1, lo que significa que la operación es exitosa; = 0 indica que la operación falló; = -1 indica que el dispositivo no existe.
bRel = VCI_UsbDeviceReset(nDeviceType, Independencia, 0);
3.1.2. VCI_BuscarDispositivoUsb2
Cuando la misma PC usa múltiples USB-CAN, el usuario puede usar esta función para encontrar el dispositivo actual.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parámetros:
pInfo
pInfo se utiliza para almacenar los parámetros del primer puntero de dirección del búfer de datos.
Devoluciones
Devuelve el número del adaptador USB-CAN conectado a la computadora.
Cuarta parte Funciones de la biblioteca de interfaz mediante el proceso
Para multiplicar la función del dispositivo, proporcionamos funciones adicionales (funciones presentadas con un fondo verde), estas funciones incluyen: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Durante el segundo desarrollo, estas funciones no necesariamente deben ser invocadas. Incluso si se ignoran estas funciones, se pueden lograr todas las funciones del adaptador USB-CAN.
www.waveshare.com
www.waveshare.com/wiki
Documentos / Recursos
![]() | Biblioteca de funciones de interfaz de adaptador de interfaz de bus USB-CAN WAVESHARE [pdf] Manual de instrucciones Biblioteca de funciones de interfaz de adaptador de interfaz de bus USB-CAN, USB-CAN, biblioteca de funciones de interfaz de adaptador de interfaz de bus, biblioteca de funciones de interfaz, biblioteca de funciones |