![]() |
USB2XXX 1.2
USB2XXX接口函数说明文档
|
USB转CANFD接口函数和数据类型定义 更多...
结构体 | |
struct | _CANFD_MSG |
CANFD帧类型定义 更多... | |
struct | _CANFD_INIT_CONFIG |
CANFD初始化结构体 更多... | |
struct | _CANFD_DIAGNOSTIC |
CANFD诊断帧信息结构体定义 更多... | |
struct | _CANFD_BUS_ERROR |
CANFD总线错误信息结构体定义 更多... | |
struct | _CANFD_FILTER_CONFIG |
CANFD过滤器结构体定义 更多... | |
类型定义 | |
typedef struct _CANFD_MSG | CANFD_MSG |
CANFD帧类型定义 | |
typedef struct _CANFD_INIT_CONFIG | CANFD_INIT_CONFIG |
CANFD初始化结构体 | |
typedef struct _CANFD_DIAGNOSTIC | CANFD_DIAGNOSTIC |
CANFD诊断帧信息结构体定义 | |
typedef struct _CANFD_BUS_ERROR | CANFD_BUS_ERROR |
CANFD总线错误信息结构体定义 | |
typedef struct _CANFD_FILTER_CONFIG | CANFD_FILTER_CONFIG |
CANFD过滤器结构体定义 | |
函数 | |
int WINAPI | CANFD_GetCANSpeedArg (int DevHandle, CANFD_INIT_CONFIG *pCanConfig, unsigned int SpeedBpsNBT, unsigned int SpeedBpsDBT) |
通过波特率值获取具体的波特率参数,调用该函数后还需要调用 CANFD_Init 函数才能设置设备波特率值 更多... | |
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 实现 更多... | |
int WINAPI | CANFD_StartGetMsg (int DevHandle, unsigned char CANIndex) |
启动CAN消息自动读取功能,调用后会在后台自动读取CAN消息并将消息存储在上位机数据缓冲区中,调用该函数可以防止数据丢失 更多... | |
int WINAPI | CANFD_StopGetMsg (int DevHandle, unsigned char CANIndex) |
停止自动接收CAN消息,停止后适配器收到CAN消息后会将消息缓存到适配器内部数据缓冲区,若长时间不去读取数据,则先接收到的数据会被丢失 更多... | |
int WINAPI | CANFD_SendMsg (int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg, unsigned int SendMsgNum) |
发送CAN消息,消息发送完毕后该函数才会返回 更多... | |
int WINAPI | CANFD_SendMsgWithTime (int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg, unsigned int SendMsgNum) |
以特定帧间隔时间发送CAN消息,消息发送完毕后该函数才会返回 更多... | |
int WINAPI | CANFD_SendMsgTimeout (int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanSendMsg, unsigned int SendMsgNum, unsigned int TimeoutMs) |
发送CAN消息,消息发送完毕或者超时后该函数才会返回 更多... | |
int WINAPI | CANFD_GetMsg (int DevHandle, unsigned char CANIndex, CANFD_MSG *pCanGetMsg, int BufferSize) |
读取接收到的CAN消息 更多... | |
int WINAPI | CANFD_ClearMsg (int DevHandle, unsigned char CANIndex) |
清空CAN接收数据缓冲区 更多... | |
int WINAPI | CANFD_SetFilter (int DevHandle, unsigned char CANIndex, CANFD_FILTER_CONFIG *pCanFilter, unsigned char Len) |
配置CAN过滤器,通过配置过滤器可以只接收特定ID帧,或者指定ID范围内的帧 更多... | |
int WINAPI | CANFD_FilterList_Init (int DevHandle, unsigned char CANIndex, unsigned int *pIDList, unsigned char IDListLen) |
配置CAN过滤器,通过配置过滤器设置只接收某些帧ID数据 更多... | |
int WINAPI | CANFD_GetDiagnostic (int DevHandle, unsigned char CANIndex, CANFD_DIAGNOSTIC *pCanDiagnostic) |
获取CAN总线错误帧信息 更多... | |
int WINAPI | CANFD_GetBusError (int DevHandle, unsigned char CANIndex, CANFD_BUS_ERROR *pCanBusError) |
获取CAN总线错误帧信息 更多... | |
int WINAPI | CANFD_Stop (int DevHandle, unsigned char CANIndex) |
停止CAN总线,调用该函数后,适配器CAN节点将从CAN总线上断开,且无法正常应答其他节点发送的数据 更多... | |
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_StartSchedule (int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char TimePrecMs, unsigned char OrderSend) |
启动CAN调度表 更多... | |
int WINAPI | CANFD_UpdateSchedule (int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char MsgIndex, CANFD_MSG *pCanMsg, unsigned char MsgNum) |
更新调度表 更多... | |
int WINAPI | CANFD_StopSchedule (int DevHandle, unsigned char CANIndex) |
停止执行CAN调度表 更多... | |
int WINAPI | CANFD_SetRelay (int DevHandle, unsigned char RelayState) |
设置CAN中继状态 更多... | |
int WINAPI | CANFD_SetRelayData (int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData) |
设置CAN中继规则数据,调用该函数之前得确保两通道CAN都已经成功初始化 更多... | |
int WINAPI | CANFD_GetRelayData (int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData) |
读取CAN中继数据 更多... | |
int WINAPI | CANFD_GetMsgSendTimeUs (CANFD_MSG *pMsg, int SpeedBpsNBT, int SpeedBpsDBT, unsigned char CANFDISO) |
获取消息发送耗时时间,该值为理论值,实际值可能会大一些 更多... | |
long long WINAPI | CANFD_GetStartTime (int DevHandle, unsigned char CANIndex) |
获取CAN起始时间戳,该时间戳可以转换成实际的时间 更多... | |
int WINAPI | CANFD_ResetStartTime (int DevHandle, unsigned char CANIndex) |
复位时间戳,复位后起始时间戳为当前时间 更多... | |
int WINAPI | CANFD_SetStartTime (int DevHandle, unsigned char CANIndex, long long StartTimeMs) |
设置数据起始时间戳,主要用于将数据时间戳转换成实时时间用 更多... | |
CAN帧类型和数据类型定义 | |
在CANFD_MSG.ID中使用 | |
#define | CANFD_MSG_FLAG_RTR (0x40000000) |
#define | CANFD_MSG_FLAG_IDE (0x80000000) |
#define | CANFD_MSG_FLAG_ID_MASK (0x1FFFFFFF) |
CANFD标志定义 | |
在CANFD_MSG.Flags中使用 | |
#define | CANFD_MSG_FLAG_BRS (0x01) |
CANFD加速帧标志 | |
#define | CANFD_MSG_FLAG_ESI (0x02) |
#define | CANFD_MSG_FLAG_FDF (0x04) |
CANFD帧标志 | |
#define | CANFD_MSG_FLAG_TXD (0x80) |
发送帧标志 | |
USB转CANFD接口函数和数据类型定义
int WINAPI CANFD_GetCANSpeedArg | ( | int | DevHandle, |
CANFD_INIT_CONFIG * | pCanConfig, | ||
unsigned int | SpeedBpsNBT, | ||
unsigned int | SpeedBpsDBT | ||
) |
通过波特率值获取具体的波特率参数,调用该函数后还需要调用 CANFD_Init 函数才能设置设备波特率值
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
[out] | pCanConfig | CANFD初始化结构体,用于存储波特率参数 |
SpeedBpsNBT | CANFD仲裁域波特率,单位为bps,比如500K波特率,则传入500000 | |
SpeedBpsDBT | CANFD数据域波特率,CANFD加速帧使用该波特率传输数据 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_Init | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_INIT_CONFIG * | pCanConfig | ||
) |
初始化CAN总线,使用CAN功能时必须调用
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pCanConfig | CAN初始化相关参数,具体可以参考 CAN_INIT_CONFIG |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_Init2 | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
int | BaudRateNBTBps, | ||
int | BaudRateDBTBps, | ||
unsigned char | EnResistor, | ||
unsigned char | ISOCRCEnable | ||
) |
简易方式初始化CAN总线,若需要自定义波特率参数,需要调用 CANFD_Init 实现
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
BaudRateNBTBps | CANFD仲裁域波特率,单位为bps,比如500K波特率,则传入500000 |
BaudRateDBTBps | CANFD数据域波特率,CANFD加速帧使用该波特率传输数据 |
EnResistor | 是否接入内部终端电阻,0-不接入,1-接入 |
ISOCRCEnable | CRC校验模式 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_StartGetMsg | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
启动CAN消息自动读取功能,调用后会在后台自动读取CAN消息并将消息存储在上位机数据缓冲区中,调用该函数可以防止数据丢失
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_StopGetMsg | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
停止自动接收CAN消息,停止后适配器收到CAN消息后会将消息缓存到适配器内部数据缓冲区,若长时间不去读取数据,则先接收到的数据会被丢失
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_SendMsg | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_MSG * | pCanSendMsg, | ||
unsigned int | SendMsgNum | ||
) |
发送CAN消息,消息发送完毕后该函数才会返回
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pCanSendMsg | CAN消息指针 |
SendMsgNum | 待发送的消息帧数 |
=0 | CAN消息未发送成功 |
>0 | 成功发送消息帧数 |
<0 | 函数调用失败 |
int WINAPI CANFD_SendMsgWithTime | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_MSG * | pCanSendMsg, | ||
unsigned int | SendMsgNum | ||
) |
以特定帧间隔时间发送CAN消息,消息发送完毕后该函数才会返回
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pCanSendMsg | CAN消息指针 |
SendMsgNum | 待发送的消息帧数 |
=0 | CAN消息未发送成功 |
>0 | 成功发送消息帧数 |
<0 | 函数调用失败 |
int WINAPI CANFD_SendMsgTimeout | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_MSG * | pCanSendMsg, | ||
unsigned int | SendMsgNum, | ||
unsigned int | TimeoutMs | ||
) |
发送CAN消息,消息发送完毕或者超时后该函数才会返回
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pCanSendMsg | CAN消息指针 |
SendMsgNum | 待发送的消息帧数 | |
TimeoutMs | 等待超时时间,单位为ms |
=0 | CAN消息未发送成功 |
>0 | 成功发送消息帧数 |
<0 | 函数调用失败 |
int WINAPI CANFD_GetMsg | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_MSG * | pCanGetMsg, | ||
int | BufferSize | ||
) |
读取接收到的CAN消息
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[out] | pCanGetMsg | 存储CAN消息数据缓冲区指针 |
BufferSize | 数据缓冲区能存储CAN消息帧数,也就是数据缓冲区容量大小 |
=0 | 未读取到CAN消息 |
>0 | 成功读取到的消息帧数 |
<0 | 函数调用失败 |
int WINAPI CANFD_ClearMsg | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
清空CAN接收数据缓冲区
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_SetFilter | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_FILTER_CONFIG * | pCanFilter, | ||
unsigned char | Len | ||
) |
配置CAN过滤器,通过配置过滤器可以只接收特定ID帧,或者指定ID范围内的帧
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pFilterConfig | CAN过滤器参数,具体可以参考 CANFD_FILTER_CONFIG |
Len | 待配置的过滤器数 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_FilterList_Init | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
unsigned int * | pIDList, | ||
unsigned char | IDListLen | ||
) |
配置CAN过滤器,通过配置过滤器设置只接收某些帧ID数据
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pIDList | 需要接收的ID列表,ID的bit[31]位为扩展帧标志,ID的bit[30]位为远程帧标志 |
IDListLen | 需要接收的ID数量,最大值为32 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_GetDiagnostic | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_DIAGNOSTIC * | pCanDiagnostic | ||
) |
获取CAN总线错误帧信息
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
pCanDiagnostic | CAN错误信息存储结构体指针,可以参考 CANFD_DIAGNOSTIC |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_GetBusError | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_BUS_ERROR * | pCanBusError | ||
) |
获取CAN总线错误帧信息
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
pCanBusError | CAN错误信息存储结构体指针,可以参考 CANFD_BUS_ERROR |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_Stop | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
停止CAN总线,调用该函数后,适配器CAN节点将从CAN总线上断开,且无法正常应答其他节点发送的数据
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_SetSchedule | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
CANFD_MSG * | pCanMsgTab, | ||
unsigned char * | pMsgNum, | ||
unsigned short * | pSendTimes, | ||
unsigned char | MsgTabNum | ||
) |
设置CAN调度表数据,调度表模式发送数据可以精确控制帧之间的间隔时间,启动调度表后适配器可以自动发送调度表里面数据
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
[in] | pCanMsgTab | CAN调度表列表指针 |
[in] | pMsgNum | 调度表列表中每个调度表包含消息帧数 |
[in] | pSendTimes | 每个调度表里面帧发送次数,若为0xFFFF,则循环发送,通过调用 CANFD_StopSchedule 函数停止发送 |
MsgTabNum | 调度表数 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_StartSchedule | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
unsigned char | MsgTabIndex, | ||
unsigned char | TimePrecMs, | ||
unsigned char | OrderSend | ||
) |
启动CAN调度表
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
MsgTabIndex | CAN调度表索引号 |
TimePrecMs | 调度表时间精度,比如调度表里面最小帧周期为10ms,那么就建议设置为10 |
OrderSend | 该调度表里面帧发送模式,0-并行发送,1-顺序发送 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_UpdateSchedule | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
unsigned char | MsgTabIndex, | ||
unsigned char | MsgIndex, | ||
CANFD_MSG * | pCanMsg, | ||
unsigned char | MsgNum | ||
) |
更新调度表
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
CANIndex | CAN通道号,0-CAN1,1-CAN2 | |
MsgTabIndex | CAN调度表索引号 | |
MsgIndex | 开始更新帧起始索引,若起始索引大于调度表帧数,则将帧添加到调度表后面 | |
[in] | pCanMsg | 需要更新的CAN帧指针 |
MsgNum | pCanMsgTab里面包含的有效帧数 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_StopSchedule | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
停止执行CAN调度表
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_SetRelay | ( | int | DevHandle, |
unsigned char | RelayState | ||
) |
设置CAN中继状态
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
RelayState | CAN中继状态 CAN_RELAY_NONE 关闭中继功能 CAN_RELAY_CAN1TO2 CAN1-->CAN2 CAN1收到数据后通过CAN2转发出去 CAN_RELAY_CAN2TO1 CAN2-->CAN1 CAN2收到数据后通过CAN1转发出去 CAN_RELAY_CANALL CAN1<->CAN2 CAN1收到数据后通过CAN2转发出去,CAN2收到数据后通过CAN1转发出去 CAN_RELAY_ONLINE 根据中继数据进行在线转换,需要调用 CANFD_SetRelayData 函数设置中继数据 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_SetRelayData | ( | int | DevHandle, |
CAN_RELAY_HEAD * | pCANRelayHead, | ||
CAN_RELAY_DATA * | pCANRelayData | ||
) |
设置CAN中继规则数据,调用该函数之前得确保两通道CAN都已经成功初始化
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
[in] | pCANRelayHead | 中继规则头指针 |
[in] | pCANRelayData | 中继规则数据指针 |
=0 | 函数执行成功 |
<0 | 函数调用失败 |
int WINAPI CANFD_GetRelayData | ( | int | DevHandle, |
CAN_RELAY_HEAD * | pCANRelayHead, | ||
CAN_RELAY_DATA * | pCANRelayData | ||
) |
读取CAN中继数据
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 | |
[out] | pCANRelayHead | 中继数据头指针 |
[out] | pCANRelayData | 中继数据指针 |
>=0 | 获取到的CAN中继数据帧数 |
<0 | 函数调用失败 |
int WINAPI CANFD_GetMsgSendTimeUs | ( | CANFD_MSG * | pMsg, |
int | SpeedBpsNBT, | ||
int | SpeedBpsDBT, | ||
unsigned char | CANFDISO | ||
) |
获取消息发送耗时时间,该值为理论值,实际值可能会大一些
[in] | pMsg | CANFD消息指针 |
SpeedBpsNBT | 仲裁域波特率,单位为Hz | |
SpeedBpsDBT | 数据域波特率,单位为Hz | |
CANFDISO | CANFD校验标准,0-non-ISO标准,1-CANFD标准 |
发送该帧耗时时间,单位为us |
long long WINAPI CANFD_GetStartTime | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
获取CAN起始时间戳,该时间戳可以转换成实际的时间
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
<0 | 函数调用失败 |
int WINAPI CANFD_ResetStartTime | ( | int | DevHandle, |
unsigned char | CANIndex | ||
) |
复位时间戳,复位后起始时间戳为当前时间
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
<0 | 函数调用失败 |
int WINAPI CANFD_SetStartTime | ( | int | DevHandle, |
unsigned char | CANIndex, | ||
long long | StartTimeMs | ||
) |
设置数据起始时间戳,主要用于将数据时间戳转换成实时时间用
DevHandle | 设备号,通过调用 USB_ScanDevice 获取 |
CANIndex | CAN通道号,0-CAN1,1-CAN2 |
StartTimeMs | 开始记录数据的起始时间戳,该时间戳为实时时间戳 |
<0 | 函数调用失败 |