Interface de barramento USB-CAN
Função de Interface do Adaptador
Instrução do usuário da biblioteca
PRIMEIRA PARTEVIEW
Se o usuário apenas usar o adaptador de interface de barramento USB-CAN para fazer o teste de comunicação de barramento CAN, ele poderá usar diretamente o software USB-CAN Tool fornecido para enviar e receber dados do teste.
Se o usuário pretende escrever um programa de software para seus próprios produtos. Leia atentamente as instruções a seguir e consulte osample código que fornecemos:
⑴C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Desenvolver biblioteca file :ControlCAN.lib, ControlCAN.DLL
Declaração de função de versão VC file :ControlCAN.h
Declaração de função de versão do VB file: ControlCAN.bas
LaboratórioVIEW módulo do pacote de funções da biblioteca de versões: ControlCAN.llb
Declaração de função de versão do Delphi file: ControlCAN.pas
PARTE DOIS BIBLIOTECA DE FUNÇÕES COMPATÍVEIS E ESTRUTURA DE DADOS
2.1. DEFINIÇÃO DO TIPO
2.1.1. Tipo de dispositivo
Definição de tipo | Digite o valor | Descrição |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
A estrutura VCI_BOARD_INFO contém informações do dispositivo da placa de interface USB-CAN Series.
A estrutura será preenchida na função VCI_ReadBoardInfo.
Membro:
hw_Versão
Número da versão do hardware, notação hexadecimal. Por exemplo, 0x0100 representa V1.00.
versão_fw
Número da versão do hardware, notação hexadecimal. Por exemplo, 0x0100 representa V1.00.
Página 2
dr_Versão
Número da versão do driver, notação hexadecimal. Por exemplo, 0x0100 representa V1.00.
in_Version
Número da versão da biblioteca de interface, notação hexadecimal. Por exemplo, 0x0100 representa V1.00.
irq_Num
Sistema reservado.
can_Num
Representa o número total de canais CAN.
str_Serial_Num
O número de série deste cartão de placa.
str_hw_Type
Tipo de hardware, como “USBCAN V1.00” (Nota: inclui o terminador de string '\0').
Reservado
Sistema reservado.
2.1.3. VCI_CAN_OBJ
Nas funções VCI_Transmit e VCI_Receive, a estrutura VCI_CAN_OBJ é utilizada para transmitir o quadro de mensagem CAN.
Membro:
ID
Identificador de mensagem. Formato de ID direto, alinhado à direita, consulte: Anexo Um: Detalhes de alinhamento de ID.
HoraStamp
Recebendo o stamp informações do período de tempo, comece a cronometrar quando o controlador CAN é inicializado, a unidade é 0. 1ms.
TimeFlag
Em termos de usar ou não o tempo stamp, 1 é o TimeSt efetivoamp. TimeFlag e TimeStamp só são significativos quando o quadro é recebido.
Tipo de envio
Tipo de envio. = 0 indica tipo normal, = 1 indica envio único.
Sinalizador remoto
Se é um sinalizador remoto. = 1 indica flag remoto, = 0 indica flag de dados.
Bandeira Externa
Se é uma bandeira externa. = 1 indica sinalizador externo, = 0 indica sinalizador padrão.
DataLen
Comprimento dos dados (<=8) ,isto é, o comprimento dos dados.
Dados
Dados do pacote.
Reservado
Sistema reservado.
2.1.4. VCI_INIT_CONFIG
A estrutura VCI_INIT_CONFIG define a configuração de inicialização do CAN. A estrutura será preenchida na função VCI_InitCan.
Membro:
Código de acesso
Receba o código de aceitação filtrado.
AccMask
Receber máscara de filtro.
Reservado
Reservado.
Filtro
Método de filtragem, permitindo o intervalo de configuração 0-3, consulte a seção 2.2.3 da tabela do modo de filtro para obter detalhes.
Tempo0
SJA1000 Parâmetro baud rate, Timing0 (BTR0) .
Tempo1
SJA1000 Parâmetro baud rate, Timing1 (BTR1) .
Modo
Modo operacional, 0 = operação normal, 1 = modo somente escuta, 2 = admissão espontânea e modo de teste de envio.
Observações:
Sobre as configurações do filtro, consulte: Anexo II: Instruções de configuração dos parâmetros CAN.
CAN Timing0 e Timing1 são usados para definir a taxa de transmissão, esses dois parâmetros são usados apenas na inicialização stage.
Tabela de referência de Baud convencional:
Taxa de transmissão CAN | Temporização0(BTR0) | Temporização1(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 |
- Os usuários só precisam seguir SJA1000 (16MHz) para definir o parâmetro de taxa de transmissão.
- O adaptador não suporta temporariamente taxa de transmissão abaixo de 10K.
2.2. DESCRIÇÃO DA FUNÇÃO
2.2.1. VCI_OpenDevice
Esta função é usada para conectar dispositivos.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reservado);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Reservado
Parâmetros de retenção, preencha com 0.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
2.2.2. VCI_CloseDevice
Esta função é usada para fechar a conexão.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
2.2.3. VCI_InitCan
Esta função é usada para inicializar o CAN especificado.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Índice CAN
Índice do canal CAN, como quando há apenas um canal CAN, o número do índice é 0, se houver dois, o número do índice pode ser 0 ou 1.
pInitConfig
Estrutura de parâmetros de inicialização. Lista de parâmetros de membros:
Membro | Descrição funcional |
pInitConfig->AccCode | AccCode e AccMask podem trabalhar juntos para determinar quais pacotes podem ser aceitos. Esses dois registradores são usados para definir o ID alinhado à esquerda, ou seja, o bit mais alto (Bit31) do AccCode e AccMask é alinhado com o bit mais alto do valor do ID. |
pInitConfig->AccMask | Sobre o alinhamento de ID, consulte os anexos: Anexo I: Detalhes de alinhamento de ID. Por exemplo: Se você definir o valor do AccCode como 0x24600000 (ou seja, 0x123 é deslocado para a esquerda em 21 bits), o valor AccMask é definido como 0x00000000 e, então, somente os pacotes com ID de quadro de mensagem CAN é 0x123 podem ser aceitos (o valor AccMask de 0x00000000 indica que todos os bits são relevantes |
bits). Se o valor AccCode for definido como 0x24600000, o valor AccMask é definido como 0x600000 (0x03 é deslocado para a esquerda em 21 bits) e, então, apenas os pacotes com o ID do quadro de mensagem CAN é 0x120 ~ 0x123 podem ser aceitos (valor AccMask 0x600000 indica que, além de bit0 ~ bit1, outros bits (bit2 ~ bit10) são bits relevantes). Observação: Esta configuração de filtro examparquivos para o quadro padrão, por exemploample, high 11-bit é o bit válido; no caso do quadro estendido e, em seguida, o ID válido é de 29 bits. AccCode e AccMask definem 29 bits como o bit válido! |
|
pInitConfig->Reservado | reservado |
pInitConfig->Filter | Configurações do modo de filtragem, consulte a seção da tabela do modo de filtro. |
pInitConfig->Timing0 | Configuração da taxa de transmissão T0 |
pInitConfig->Timing1 | Configuração da taxa de transmissão T1 |
pInitConfig->Modo | Modo operacional: 0-operação normal Modo 1-somente ouvir 2-admissão espontânea e modo de teste de envio (este valor é excluído da biblioteca de funções ZLG) |
Tabela do modo de filtro:
Valor | Nome | Descrição |
1 | Receba todos os tipos | Adequado para quadro padrão e estendido! |
2 | Receber apenas quadro padrão | Adequado para quadro padrão e estendido |
quadro será removido por filtração diretamente! | ||
3 | Receber apenas quadro estendido | Adequado para quadro estendido, e o quadro padrão será removido por filtração diretamente! 。 |
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
Por exemplo
2.2.4. VCI_ReadBoardInfo
Esta função é usada para ler as informações de hardware do adaptador. De um modo geral, pode ser ignorado.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente começando em 0. pInfo
VCI_BOARD_INFO é usado para armazenar o ponteiro da estrutura de informações do dispositivo.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
2.2.5. VCI_GetReceiveNum
Essa função é usada para especificar os quadros recebidos, mas não lidos, no buffer de recebimento designado.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número de índice é 0, quando há vários adaptadores USB-CAN, os números de índice em ordem crescente começando em 0.
Índice CAN
Índice de canais CAN.
Retornos:
Retorna quadros que ainda não foram lidos.
Por exemplo
#incluir “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Esta função é usada para limpar o buffer de recebimento e envio do canal designado especificado por
Adaptador USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número de índice é 0, quando há vários adaptadores USB-CAN, os números de índice em ordem crescente começando em 0.
Índice CAN
Índice de canais CAN.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
2.2.7. VCI_StartCAN
Esta função é usada para iniciar o controlador CAN e a função de recepção de interrupção interna do adaptador.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Índice CAN
Índice de canais CAN.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
2.2.8. VCI_ResetCAN
Esta função é usada para reiniciar o controlador CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Índice CAN
Índice de canais CAN.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
2.2.9. VCI_Transmitir
Esta função é usada para enviar quadro de mensagem CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Índice CAN
Índice de canais CAN. pEnviar
O primeiro endereço das matrizes de quadro de dados que devem ser enviadas.
Comprimento
O número de quadros de dados que devem ser enviados, o número máximo é 1000, o valor recomendado é 48 em alta velocidade.
Retornos:
Retorna o número real de quadros já enviados, o valor de retorno = -1 indica um erro do dispositivo.
Por exemplo
2.2.10. VCI_Receber
Esta função é utilizada para solicitar a recepção.
DWORD __stdcall VCI_Receive (DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Índice CAN
Índice de canais CAN.
pReceber
Para receber o primeiro ponteiro definido dos quadros de dados.
Len
O comprimento da matriz do quadro de dados deve ser superior a 2500 para retornar a mensagem normal.
Caso contrário, o comprimento de retorno será zero, independentemente de a mensagem ser recebida ou não. o adaptador define um buffer de 2000 quadros para cada canal. Com base em seu próprio sistema e ambiente de trabalho, o usuário pode escolher um comprimento de matriz apropriado de 2500.
WaitTime Reservado.
Retornos:
Retorna o número de quadros que realmente foram lidos, -1 indica erros do dispositivo.
Por exemplo
PARTE TRÊS OUTRAS FUNÇÕES E DESCRIÇÃO DA ESTRUTURA DE DADOS
Este capítulo descreve outros tipos de dados e funções da biblioteca de interface ZLG incompatível contida na biblioteca de interface do adaptador USB-CAN ControlCAN.dll. Por favor faça
não chame essas funções se usar um modelo ZLG compatível para desenvolvimento secundário para não afetar a compatibilidade.
3.1 DESCRIÇÃO DA FUNÇÃO
3.1.1. VCI_UsbDeviceReset
Redefina o adaptador USB-CAN, é necessário reabrir o dispositivo após a redefinição usando VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reservado
Parâmetros:
TipoDev
Tipo de dispositivo. Consulte: Definição do tipo de dispositivo do adaptador.
DevIndex
Índice de dispositivos, por exemploample, quando há apenas um adaptador USB-CAN, o número do índice é 0, quando há vários adaptadores USB-CAN, os números do índice estão em ordem crescente, começando em 0.
Reservado Reservado.
Retornos:
Valor de retorno = 1, o que significa que a operação foi bem-sucedida; = 0 indica que a operação falhou; = -1 indica que o dispositivo não existe.
bRel = VCI_UsbDeviceReset(nDeviceType, Independência, 0);
3.1.2. VCI_FindUsbDevice2
Quando o mesmo PC usa vários USB-CAN, o usuário pode usar esta função para encontrar o dispositivo atual.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parâmetros:
pInfo
pInfo é usado para armazenar os parâmetros do primeiro ponteiro de endereço do buffer de dados.
Devoluções
Devolva o número do adaptador USB-CAN conectado ao computador.
Parte Quatro Funções da Biblioteca de Interface Usando Processo
Para multiplicar a função do dispositivo, fornecemos funções adicionais (funções apresentadas com um fundo verde), essas funções incluem: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Durante o segundo desenvolvimento, essas funções não devem necessariamente ser invocadas. Mesmo essas funções são ignoradas, todas as funções do adaptador USB-CAN podem ser alcançadas.
www.waveshare.com
www.waveshare.com/wiki
Documentos / Recursos
![]() |
WAVESHARE USB-CAN Bus Interface Adapter Interface Biblioteca de funções [pdf] Manual de Instruções Biblioteca de funções de interface de adaptador de interface de barramento USB-CAN, USB-CAN, biblioteca de funções de interface de adaptador de interface de barramento, biblioteca de funções de interface, biblioteca de funções |