USB2XXX 1.2
USB2XXX接口函数说明文档
载入中...
搜索中...
未找到
usb2canfd.h
1
9#ifndef __USB2CANFD_H_
10#define __USB2CANFD_H_
11
12#include <stdint.h>
13#ifdef _WIN32
14#include <Windows.h>
15#else
16#include <unistd.h>
17#ifndef WINAPI
18#define WINAPI
19#endif
20#endif
32#define CANFD_SUCCESS (0)
33#define CANFD_ERR_NOT_SUPPORT (-1)
34#define CANFD_ERR_USB_WRITE_FAIL (-2)
35#define CANFD_ERR_USB_READ_FAIL (-3)
36#define CANFD_ERR_CMD_FAIL (-4)
44#define CANFD_MSG_FLAG_RTR (0x40000000)
45#define CANFD_MSG_FLAG_IDE (0x80000000)
46#define CANFD_MSG_FLAG_ID_MASK (0x1FFFFFFF)
54#define CANFD_MSG_FLAG_BRS (0x01)
55#define CANFD_MSG_FLAG_ESI (0x02)
56#define CANFD_MSG_FLAG_FDF (0x04)
57#define CANFD_MSG_FLAG_TXD (0x80)
65#define CANFD_DIAGNOSTIC_FLAG_NBIT0_ERR (0x0001)
66#define CANFD_DIAGNOSTIC_FLAG_NBIT1_ERR (0x0002)
67#define CANFD_DIAGNOSTIC_FLAG_NACK_ERR (0x0004)
68#define CANFD_DIAGNOSTIC_FLAG_NFORM_ERR (0x0008)
69#define CANFD_DIAGNOSTIC_FLAG_NSTUFF_ERR (0x0010)
70#define CANFD_DIAGNOSTIC_FLAG_NCRC_ERR (0x0020)
71#define CANFD_DIAGNOSTIC_FLAG_TXBO_ERR (0x0080)
72#define CANFD_DIAGNOSTIC_FLAG_DBIT0_ERR (0x0100)
73#define CANFD_DIAGNOSTIC_FLAG_DBIT1_ERR (0x0200)
74#define CANFD_DIAGNOSTIC_FLAG_DFORM_ERR (0x0800)
75#define CANFD_DIAGNOSTIC_FLAG_DSTUFF_ERR (0x1000)
76#define CANFD_DIAGNOSTIC_FLAG_DCRC_ERR (0x2000)
77#define CANFD_DIAGNOSTIC_FLAG_ESI_ERR (0x4000)
78#define CANFD_DIAGNOSTIC_FLAG_DLC_MISMATCH (0x8000)
86#define CANFD_BUS_ERROR_FLAG_TX_RX_WARNING (0x01)
87#define CANFD_BUS_ERROR_FLAG_RX_WARNING (0x02)
88#define CANFD_BUS_ERROR_FLAG_TX_WARNING (0x04)
89#define CANFD_BUS_ERROR_FLAG_RX_BUS_PASSIVE (0x08)
90#define CANFD_BUS_ERROR_FLAG_TX_BUS_PASSIVE (0x10)
91#define CANFD_BUS_ERROR_FLAG_TX_BUS_OFF (0x20)
97typedef struct _CANFD_MSG
98{
99 unsigned int ID;
100 unsigned char DLC;
101 unsigned char Flags;
102 unsigned char __Res0;
103 unsigned char TimeStampHigh;
104 unsigned int TimeStamp;
105 unsigned char Data[64];
107
111typedef struct _CANFD_INIT_CONFIG
112{
113 unsigned char Mode;
114 unsigned char ISOCRCEnable;
115 unsigned char RetrySend;
116 unsigned char ResEnable;
117 unsigned char NBT_BRP;
118 unsigned char NBT_SEG1;
119 unsigned char NBT_SEG2;
120 unsigned char NBT_SJW;
121 unsigned char DBT_BRP;
122 unsigned char DBT_SEG1;
123 unsigned char DBT_SEG2;
124 unsigned char DBT_SJW;
125 unsigned char TDC;
126 unsigned char __Res0[7];
128
132typedef struct _CANFD_DIAGNOSTIC {
133 unsigned char NREC;
134 unsigned char NTEC;
135 unsigned char DREC;
136 unsigned char DTEC;
137 unsigned short ErrorFreeMsgCount;
138 unsigned short Flags;
140
144typedef struct _CANFD_BUS_ERROR {
145 unsigned char TEC;
146 unsigned char REC;
147 unsigned char Flags;
148 unsigned char __Res0;
150
154typedef struct _CANFD_FILTER_CONFIG{
155 unsigned char Enable;
156 unsigned char Index;
157 unsigned char __Res0;
158 unsigned char __Res1;
159 unsigned int ID_Accept;
160 unsigned int ID_Mask;
162
163#ifdef __cplusplus
164extern "C"
165{
166#endif
177int WINAPI CANFD_GetCANSpeedArg(int DevHandle, CANFD_INIT_CONFIG* pCanConfig, unsigned int SpeedBpsNBT, unsigned int SpeedBpsDBT);
178
188int WINAPI CANFD_Init(int DevHandle, unsigned char CANIndex, CANFD_INIT_CONFIG *pCanConfig);
189
202int WINAPI CANFD_Init2(int DevHandle, unsigned char CANIndex, int BaudRateNBTBps, int BaudRateDBTBps, unsigned char EnResistor, unsigned char ISOCRCEnable);
211int WINAPI CANFD_StartGetMsg(int DevHandle, unsigned char CANIndex);
212
221int WINAPI CANFD_StopGetMsg(int DevHandle, unsigned char CANIndex);
222
234int WINAPI CANFD_SendMsg(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg,unsigned int SendMsgNum);
235
247int WINAPI CANFD_SendMsgWithTime(int DevHandle, unsigned char CANIndex, CANFD_MSG* pCanSendMsg, unsigned int SendMsgNum);
260int WINAPI CANFD_SendMsgTimeout(int DevHandle, unsigned char CANIndex, CANFD_MSG* pCanSendMsg, unsigned int SendMsgNum, unsigned int TimeoutMs);
272int WINAPI CANFD_GetMsg(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanGetMsg,int BufferSize);
273
282int WINAPI CANFD_ClearMsg(int DevHandle, unsigned char CANIndex);
283
294int WINAPI CANFD_SetFilter(int DevHandle, unsigned char CANIndex, CANFD_FILTER_CONFIG *pCanFilter,unsigned char Len);
295
306int WINAPI CANFD_FilterList_Init(int DevHandle, unsigned char CANIndex, unsigned int* pIDList, unsigned char IDListLen);
307
317int WINAPI CANFD_GetDiagnostic(int DevHandle, unsigned char CANIndex, CANFD_DIAGNOSTIC *pCanDiagnostic);
318
328int WINAPI CANFD_GetBusError(int DevHandle, unsigned char CANIndex, CANFD_BUS_ERROR *pCanBusError);
329
338int WINAPI CANFD_Stop(int DevHandle, unsigned char CANIndex);
339
352int WINAPI CANFD_SetSchedule(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanMsgTab,unsigned char *pMsgNum,unsigned short *pSendTimes,unsigned char MsgTabNum);
353
365int WINAPI CANFD_StartSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex,unsigned char TimePrecMs,unsigned char OrderSend);
366
379int WINAPI CANFD_UpdateSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char MsgIndex, CANFD_MSG* pCanMsg, unsigned char MsgNum);
380
389int WINAPI CANFD_StopSchedule(int DevHandle, unsigned char CANIndex);
390
404int WINAPI CANFD_SetRelay(int DevHandle, unsigned char RelayState);
405
415int WINAPI CANFD_SetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData);
416
426int WINAPI CANFD_GetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData);
427
437int WINAPI CANFD_GetMsgSendTimeUs(CANFD_MSG* pMsg, int SpeedBpsNBT, int SpeedBpsDBT, unsigned char CANFDISO);
438
446long long WINAPI CANFD_GetStartTime(int DevHandle, unsigned char CANIndex);
447
455int WINAPI CANFD_ResetStartTime(int DevHandle, unsigned char CANIndex);
456
465int WINAPI CANFD_SetStartTime(int DevHandle, unsigned char CANIndex, long long StartTimeMs);
466
467#ifdef __cplusplus
468}
469#endif
470
472#endif
473
long long WINAPI CANFD_GetStartTime(int DevHandle, unsigned char CANIndex)
获取CAN起始时间戳,该时间戳可以转换成实际的时间
int WINAPI CANFD_StartGetMsg(int DevHandle, unsigned char CANIndex)
启动CAN消息自动读取功能,调用后会在后台自动读取CAN消息并将消息存储在上位机数据缓冲区中,调用该函数可以防止数据丢失
int WINAPI CANFD_GetMsg(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanGetMsg, int BufferSize)
读取接收到的CAN消息
int WINAPI CANFD_Init(int DevHandle, unsigned char CANIndex, CANFD_INIT_CONFIG *pCanConfig)
初始化CAN总线,使用CAN功能时必须调用
int WINAPI CANFD_Init2(int DevHandle, unsigned char CANIndex, int BaudRateNBTBps, int BaudRateDBTBps, unsigned char EnResistor, unsigned char ISOCRCEnable)
简易方式初始化CAN总线,若需要自定义波特率参数,需要调用 CANFD_Init 实现
struct _CANFD_DIAGNOSTIC CANFD_DIAGNOSTIC
CANFD诊断帧信息结构体定义
int WINAPI CANFD_SetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData)
设置CAN中继规则数据,调用该函数之前得确保两通道CAN都已经成功初始化
int WINAPI CANFD_UpdateSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char MsgIndex, CANFD_MSG *pCanMsg, unsigned char MsgNum)
更新调度表
struct _CANFD_MSG CANFD_MSG
CANFD帧类型定义
int WINAPI CANFD_SetStartTime(int DevHandle, unsigned char CANIndex, long long StartTimeMs)
设置数据起始时间戳,主要用于将数据时间戳转换成实时时间用
int WINAPI CANFD_SendMsgTimeout(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg, unsigned int SendMsgNum, unsigned int TimeoutMs)
发送CAN消息,消息发送完毕或者超时后该函数才会返回
int WINAPI CANFD_StartSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char TimePrecMs, unsigned char OrderSend)
启动CAN调度表
int WINAPI CANFD_GetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData)
读取CAN中继数据
struct _CANFD_INIT_CONFIG CANFD_INIT_CONFIG
CANFD初始化结构体
int WINAPI CANFD_GetCANSpeedArg(int DevHandle, CANFD_INIT_CONFIG *pCanConfig, unsigned int SpeedBpsNBT, unsigned int SpeedBpsDBT)
通过波特率值获取具体的波特率参数,调用该函数后还需要调用 CANFD_Init 函数才能设置设备波特率值
int WINAPI CANFD_Stop(int DevHandle, unsigned char CANIndex)
停止CAN总线,调用该函数后,适配器CAN节点将从CAN总线上断开,且无法正常应答其他节点发送的数据
int WINAPI CANFD_GetDiagnostic(int DevHandle, unsigned char CANIndex, CANFD_DIAGNOSTIC *pCanDiagnostic)
获取CAN总线错误帧信息
int WINAPI CANFD_SendMsg(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg, unsigned int SendMsgNum)
发送CAN消息,消息发送完毕后该函数才会返回
int WINAPI CANFD_SetRelay(int DevHandle, unsigned char RelayState)
设置CAN中继状态
int WINAPI CANFD_SendMsgWithTime(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg, unsigned int SendMsgNum)
以特定帧间隔时间发送CAN消息,消息发送完毕后该函数才会返回
int WINAPI CANFD_SetFilter(int DevHandle, unsigned char CANIndex, CANFD_FILTER_CONFIG *pCanFilter, unsigned char Len)
配置CAN过滤器,通过配置过滤器可以只接收特定ID帧,或者指定ID范围内的帧
struct _CANFD_FILTER_CONFIG CANFD_FILTER_CONFIG
CANFD过滤器结构体定义
struct _CANFD_BUS_ERROR CANFD_BUS_ERROR
CANFD总线错误信息结构体定义
int WINAPI CANFD_SetSchedule(int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanMsgTab, unsigned char *pMsgNum, unsigned short *pSendTimes, unsigned char MsgTabNum)
设置CAN调度表数据,调度表模式发送数据可以精确控制帧之间的间隔时间,启动调度表后适配器可以自动发送调度表里面数据
int WINAPI CANFD_FilterList_Init(int DevHandle, unsigned char CANIndex, unsigned int *pIDList, unsigned char IDListLen)
配置CAN过滤器,通过配置过滤器设置只接收某些帧ID数据
int WINAPI CANFD_GetBusError(int DevHandle, unsigned char CANIndex, CANFD_BUS_ERROR *pCanBusError)
获取CAN总线错误帧信息
int WINAPI CANFD_GetMsgSendTimeUs(CANFD_MSG *pMsg, int SpeedBpsNBT, int SpeedBpsDBT, unsigned char CANFDISO)
获取消息发送耗时时间,该值为理论值,实际值可能会大一些
int WINAPI CANFD_ClearMsg(int DevHandle, unsigned char CANIndex)
清空CAN接收数据缓冲区
int WINAPI CANFD_ResetStartTime(int DevHandle, unsigned char CANIndex)
复位时间戳,复位后起始时间戳为当前时间
int WINAPI CANFD_StopSchedule(int DevHandle, unsigned char CANIndex)
停止执行CAN调度表
int WINAPI CANFD_StopGetMsg(int DevHandle, unsigned char CANIndex)
停止自动接收CAN消息,停止后适配器收到CAN消息后会将消息缓存到适配器内部数据缓冲区,若长时间不去读取数据,则先接收到的数据会被丢失
CANFD总线错误信息结构体定义
Definition: usb2canfd.h:144
unsigned char Flags
参考总线错误标志定义
Definition: usb2canfd.h:147
unsigned char REC
接收错误计数
Definition: usb2canfd.h:146
unsigned char __Res0
保留,不用
Definition: usb2canfd.h:148
unsigned char TEC
发送错误计数
Definition: usb2canfd.h:145
CANFD诊断帧信息结构体定义
Definition: usb2canfd.h:132
unsigned char NTEC
标称比特率发送错误计数
Definition: usb2canfd.h:134
unsigned char DREC
数据比特率接收错误计数
Definition: usb2canfd.h:135
unsigned short Flags
参考诊断标志定义
Definition: usb2canfd.h:138
unsigned short ErrorFreeMsgCount
无错误帧计数
Definition: usb2canfd.h:137
unsigned char NREC
标称比特率接收错误计数
Definition: usb2canfd.h:133
unsigned char DTEC
数据比特率发送错误计数
Definition: usb2canfd.h:136
CANFD过滤器结构体定义
Definition: usb2canfd.h:154
unsigned int ID_Accept
验收码ID,bit[28..0]为有效ID位,bit[31]为IDE
Definition: usb2canfd.h:159
unsigned int ID_Mask
屏蔽码,对应bit位若为1,则需要对比对应验收码bit位,相同才接收
Definition: usb2canfd.h:160
unsigned char Enable
使能该过滤器,1-使能,0-禁止
Definition: usb2canfd.h:155
unsigned char __Res0
保留,不用
Definition: usb2canfd.h:157
unsigned char __Res1
保留,不用
Definition: usb2canfd.h:158
unsigned char Index
过滤器索引号,取值范围为0到31
Definition: usb2canfd.h:156
CANFD初始化结构体
Definition: usb2canfd.h:112
unsigned char TDC
如果数据域波特率大于等于8M,则建议将该参数设置为3,其他波特率设置为0即可
Definition: usb2canfd.h:125
unsigned char ResEnable
0-不接入内部120欧终端电阻,1-接入内部120欧终端电阻
Definition: usb2canfd.h:116
unsigned char ISOCRCEnable
0-禁止ISO CRC,1-使能ISO CRC
Definition: usb2canfd.h:114
unsigned char Mode
0-正常模式,1-自发自收模式
Definition: usb2canfd.h:113
unsigned char DBT_BRP
数据段波特率参数,波特率=40M/DBT_BRP*(1+DBT_SEG1+DBT_SEG2)
Definition: usb2canfd.h:121
unsigned char RetrySend
0-禁止重发,1-无限制重发
Definition: usb2canfd.h:115
unsigned char NBT_BRP
仲裁段波特率参数,波特率=40M/NBT_BRP*(1+NBT_SEG1+NBT_SEG2)
Definition: usb2canfd.h:117
CANFD帧类型定义
Definition: usb2canfd.h:98
unsigned int ID
报文ID,bit[30]-RTR,bit[31]-IDE,bit[28..0]-ID
Definition: usb2canfd.h:99
unsigned char Flags
bit[0]-BRS,bit[1]-ESI,bit[2]-FDF,bit[6..5]-通道号,bit[7]-发送标志
Definition: usb2canfd.h:101
unsigned char DLC
数据字节长度,可设置为-0,1,2,3,4,5,6,7,8,12,16,20,24,32,48,64
Definition: usb2canfd.h:100
unsigned char TimeStampHigh
时间戳高位
Definition: usb2canfd.h:103
unsigned char __Res0
保留
Definition: usb2canfd.h:102
unsigned int TimeStamp
帧接收或者发送时的时间戳,单位为10us
Definition: usb2canfd.h:104
unsigned char Data[64]
报文的数据,有效数据字节数通过DLC决定
Definition: usb2canfd.h:105