USB2XXX 1.2
USB2XXX接口函数说明文档
载入中...
搜索中...
未找到
usb2can.h
1
9#ifndef __USB2CAN_H_
10#define __USB2CAN_H_
11
12#include <stdint.h>
13#include "offline_type.h"
14#ifdef _WIN32
15#include <Windows.h>
16#else
17#include <unistd.h>
18#ifndef WINAPI
19#define WINAPI
20#endif
21#endif
31typedef struct _CAN_MSG
32{
33 unsigned int ID;
34 unsigned int TimeStamp;
35 unsigned char RemoteFlag;
36 unsigned char ExternFlag;
37 unsigned char DataLen;
38 unsigned char Data[8];
39 unsigned char TimeStampHigh;
41
45typedef struct _CAN_INIT_CONFIG
46{
47 //CAN波特率 = 主频时钟/(CAN_BRP)/(CAN_SJW+CAN_BS1+CAN_BS2)
48 unsigned int CAN_BRP;
49 unsigned char CAN_SJW;
50 unsigned char CAN_BS1;
51 unsigned char CAN_BS2;
52 unsigned char CAN_Mode;
53 unsigned char CAN_ABOM;
54 unsigned char CAN_NART;
55 unsigned char CAN_RFLM;
56 unsigned char CAN_TXFP;
58
62typedef struct _CAN_FILTER_CONFIG{
63 unsigned char Enable;
64 unsigned char FilterIndex;
65 unsigned char FilterMode;
66 unsigned char ExtFrame;
67 unsigned int ID_Std_Ext;
68 unsigned int ID_IDE;
69 unsigned int ID_RTR;
70 unsigned int MASK_Std_Ext;
71 unsigned int MASK_IDE;
72 unsigned int MASK_RTR;
74
78typedef struct _CAN_STATUS{
79 unsigned int TSR;
80 unsigned int ESR;
81 unsigned char RECounter;
82 unsigned char TECounter;
83 unsigned char LECode;
84 unsigned char ErrFlag;
86
90typedef struct _CBL_CMD_LIST{
91 unsigned char Erase;
92 unsigned char WriteInfo;
93 unsigned char Write;
94 unsigned char Check;
95 unsigned char SetBaudRate;
96 unsigned char Excute;
97 unsigned char CmdSuccess;
98 unsigned char CmdFaild;
100
106#define CAN_SUCCESS (0)
107#define CAN_ERR_NOT_SUPPORT (-1)
108#define CAN_ERR_USB_WRITE_FAIL (-2)
109#define CAN_ERR_USB_READ_FAIL (-3)
110#define CAN_ERR_CMD_FAIL (-4)
111#define CAN_BL_ERR_CONFIG (-20)
112#define CAN_BL_ERR_SEND (-21)
113#define CAN_BL_ERR_TIME_OUT (-22)
114#define CAN_BL_ERR_CMD (-23)
122#define CAN_BOOT_ERR_CONFIG (-30)
123#define CAN_BOOT_ERR_SEND (-31)
124#define CAN_BOOT_ERR_TIME_OUT (-32)
125#define CAN_BOOT_ERR_CMD (-33)
126#define CAN_BOOT_ERR_BAUD (-34)
127#define CAN_BOOT_ERR_BUFFER (-35)
135#define CAN_BL_BOOT 0x55555555
136#define CAN_BL_APP 0xAAAAAAAA
143#define CAN_RELAY_NONE 0x00
144#define CAN_RELAY_CAN1TO2 0x01
145#define CAN_RELAY_CAN2TO1 0x10
146#define CAN_RELAY_CANALL 0x11
147#define CAN_RELAY_ONLINE 0x88
154#define CAN_BUS_ERROR_FLAG_TX_RX_WARNING (0x01)
155#define CAN_BUS_ERROR_FLAG_BUS_PASSIVE (0x02)
156#define CAN_BUS_ERROR_FLAG_TX_BUS_OFF (0x04)
163#define CAN_NORMAL 0
164#define CAN_LOOP_BACK 1
165#define CAN_EN_RESISTOR 0x80
168#ifdef __cplusplus
169extern "C"
170{
171#endif
181int WINAPI CAN_GetCANSpeedArg(int DevHandle,CAN_INIT_CONFIG* pCanConfig, unsigned int BaudRateBps);
182
192int WINAPI CAN_Init(int DevHandle, unsigned char CANIndex, CAN_INIT_CONFIG *pCanConfig);
193
204int WINAPI CAN_Init2(int DevHandle, unsigned char CANIndex, int BaudRateBps, unsigned char EnResistor);
205
215int WINAPI CAN_Filter_Init(int DevHandle, unsigned char CANIndex, CAN_FILTER_CONFIG *pFilterConfig);
216
227int WINAPI CAN_FilterList_Init(int DevHandle, unsigned char CANIndex, unsigned int *pIDList, unsigned char IDListLen);
228
237int WINAPI CAN_StartGetMsg(int DevHandle, unsigned char CANIndex);
238
247int WINAPI CAN_StopGetMsg(int DevHandle, unsigned char CANIndex);
248
260int WINAPI CAN_SendMsg(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanSendMsg,unsigned int SendMsgNum);
261
273int WINAPI CAN_SendMsgSynch(int DevHandle, unsigned char CANIndex, CAN_MSG* pCanSendMsg, unsigned int SendMsgNum);
274
286int WINAPI CAN_SendMsgWithTime(int DevHandle, unsigned char CANIndex, CAN_MSG* pCanSendMsg, unsigned int SendMsgNum);
297int WINAPI CAN_GetMsg(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanGetMsg);
298
310int WINAPI CAN_GetMsgWithSize(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanGetMsg,int BufferSize);
311
320int WINAPI CAN_ClearMsg(int DevHandle, unsigned char CANIndex);
321
331int WINAPI CAN_GetStatus(int DevHandle, unsigned char CANIndex, CAN_STATUS *pCANStatus);
332
345int WINAPI CAN_SetSchedule(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanMsgTab,unsigned char *pMsgNum,unsigned short *pSendTimes,unsigned char MsgTabNum);
346
358int WINAPI CAN_StartSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex,unsigned char TimePrecMs,unsigned char OrderSend);
359
372int WINAPI CAN_UpdateSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char MsgIndex, CAN_MSG* pCanMsg, unsigned char MsgNum);
373
382int WINAPI CAN_StopSchedule(int DevHandle, unsigned char CANIndex);
383
393int WINAPI CAN_SetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData);
394
404int WINAPI CAN_GetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData);
405
419int WINAPI CAN_SetRelay(int DevHandle, unsigned char RelayState);
420
429int WINAPI CAN_Stop(int DevHandle, unsigned char CANIndex);
430
438int WINAPI CAN_GetMsgSendTimeUs(CAN_MSG* pMsg, int SpeedBps);
439
450int WINAPI CAN_BL_Init(int DevHandle,int CANIndex,CAN_INIT_CONFIG *pInitConfig,CBL_CMD_LIST *pCmdList);
451
464int WINAPI CAN_BL_NodeCheck(int DevHandle,int CANIndex,unsigned short NodeAddr,unsigned int *pVersion,unsigned int *pType,unsigned int TimeOut);
465
477int WINAPI CAN_BL_Erase(int DevHandle,int CANIndex,unsigned short NodeAddr,unsigned int FlashSize,unsigned int TimeOut);
478
492int WINAPI CAN_BL_Write(int DevHandle,int CANIndex,unsigned short NodeAddr,unsigned int AddrOffset,unsigned char *pData,unsigned int DataNum,unsigned int TimeOut);
493
504int WINAPI CAN_BL_Excute(int DevHandle,int CANIndex,unsigned short NodeAddr,unsigned int Type);
505
518int WINAPI CAN_BL_SetNewBaudRate(int DevHandle,int CANIndex,unsigned short NodeAddr,CAN_INIT_CONFIG *pInitConfig,unsigned int NewBaudRate,unsigned int TimeOut);
519
529int WINAPI CAN_DecodeListFile(char *pFileName,unsigned int *pIgnoreIDList,int IgnoreIDListLen);
530
540int WINAPI CAN_GetListFileMsg(int MsgIndex,int MsgLen,CAN_MSG *pCANMsg);
541
549long long WINAPI CAN_GetStartTime(int DevHandle, unsigned char CANIndex);
550
558int WINAPI CAN_ResetStartTime(int DevHandle, unsigned char CANIndex);
559
568int WINAPI CAN_SetStartTime(int DevHandle, unsigned char CANIndex, long long StartTimeMs);
569
570#ifdef __cplusplus
571}
572#endif
573
575#endif
int WINAPI CAN_BL_Erase(int DevHandle, int CANIndex, unsigned short NodeAddr, unsigned int FlashSize, unsigned int TimeOut)
擦出用户区数据
int WINAPI CAN_StopSchedule(int DevHandle, unsigned char CANIndex)
停止执行CAN调度表
int WINAPI CAN_SendMsg(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanSendMsg, unsigned int SendMsgNum)
发送CAN消息,消息发送完毕后该函数才会返回,发送期间会完全占用USB总线
struct _CAN_STATUS CAN_STATUS
CAN总线状态定义
struct _CAN_FILTER_CONFIG CAN_FILTER_CONFIG
CAN过滤器结构体
int WINAPI CAN_GetMsg(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanGetMsg)
读取接收到的CAN消息,若调用了 CAN_StartGetMsg 函数,则从上位机缓冲区获取数据,否则从适配器内部获取数据
int WINAPI CAN_GetListFileMsg(int MsgIndex, int MsgLen, CAN_MSG *pCANMsg)
从列表文件里面获取已经解析到的帧
int WINAPI CAN_DecodeListFile(char *pFileName, unsigned int *pIgnoreIDList, int IgnoreIDListLen)
解析列表文件
int WINAPI CAN_StartGetMsg(int DevHandle, unsigned char CANIndex)
启动CAN消息自动读取功能,调用后会在后台自动读取CAN消息并将消息存储在上位机数据缓冲区中,调用该函数可以防止数据丢失
int WINAPI CAN_BL_Write(int DevHandle, int CANIndex, unsigned short NodeAddr, unsigned int AddrOffset, unsigned char *pData, unsigned int DataNum, unsigned int TimeOut)
写数据到应用程序存储区
int WINAPI CAN_Init2(int DevHandle, unsigned char CANIndex, int BaudRateBps, unsigned char EnResistor)
简易方式初始化CAN总线,若需要自定义波特率参数,可以调用 CAN_Init 方式进行初始化
int WINAPI CAN_StopGetMsg(int DevHandle, unsigned char CANIndex)
停止自动接收CAN消息,停止后适配器收到CAN消息后会将消息缓存到适配器内部数据缓冲区,若长时间不去读取数据,则先接收到的数据会被丢失
int WINAPI CAN_BL_Excute(int DevHandle, int CANIndex, unsigned short NodeAddr, unsigned int Type)
执行程序
int WINAPI CAN_SetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData)
设置CAN中继规则数据,调用该函数之前得确保两通道CAN都已经成功初始化
int WINAPI CAN_SendMsgSynch(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanSendMsg, unsigned int SendMsgNum)
同步模式发送CAN消息,发送消息的时候不会完全占用USB总线
int WINAPI CAN_BL_NodeCheck(int DevHandle, int CANIndex, unsigned short NodeAddr, unsigned int *pVersion, unsigned int *pType, unsigned int TimeOut)
节点在线状态检测
int WINAPI CAN_Filter_Init(int DevHandle, unsigned char CANIndex, CAN_FILTER_CONFIG *pFilterConfig)
配置CAN过滤器,通过配置过滤器可以只接收特定ID帧,或者指定ID范围内的帧
int WINAPI CAN_ClearMsg(int DevHandle, unsigned char CANIndex)
清空CAN接收数据缓冲区
int WINAPI CAN_GetCANSpeedArg(int DevHandle, CAN_INIT_CONFIG *pCanConfig, unsigned int BaudRateBps)
通过波特率值获取具体的波特率参数,调用该函数后还需要调用 CAN_Init 函数才能设置设备波特率值
long long WINAPI CAN_GetStartTime(int DevHandle, unsigned char CANIndex)
获取CAN起始时间戳,该时间戳可以转换成实际的时间
int WINAPI CAN_SendMsgWithTime(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanSendMsg, unsigned int SendMsgNum)
定时间隔模式发送CAN消息,发送消息的时候会完全占用USB总线,函数是阻塞的,同时会把发送帧放到接收数据缓冲区里面
int WINAPI CAN_GetRelayData(int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData)
读取CAN中继数据
int WINAPI CAN_StartSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char TimePrecMs, unsigned char OrderSend)
启动CAN调度表
int WINAPI CAN_SetSchedule(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanMsgTab, unsigned char *pMsgNum, unsigned short *pSendTimes, unsigned char MsgTabNum)
设置CAN调度表数据,调度表模式发送数据可以精确控制帧之间的间隔时间,启动调度表后适配器可以自动发送调度表里面数据
int WINAPI CAN_UpdateSchedule(int DevHandle, unsigned char CANIndex, unsigned char MsgTabIndex, unsigned char MsgIndex, CAN_MSG *pCanMsg, unsigned char MsgNum)
更新调度表
int WINAPI CAN_Stop(int DevHandle, unsigned char CANIndex)
停止CAN总线,调用该函数后,适配器CAN节点将从CAN总线上断开,且无法正常应答其他节点发送的数据
int WINAPI CAN_GetMsgWithSize(int DevHandle, unsigned char CANIndex, CAN_MSG *pCanGetMsg, int BufferSize)
读取接收到的CAN消息
int WINAPI CAN_GetStatus(int DevHandle, unsigned char CANIndex, CAN_STATUS *pCANStatus)
获取CAN总线状态信息
int WINAPI CAN_BL_SetNewBaudRate(int DevHandle, int CANIndex, unsigned short NodeAddr, CAN_INIT_CONFIG *pInitConfig, unsigned int NewBaudRate, unsigned int TimeOut)
设置节点波特率
int WINAPI CAN_GetMsgSendTimeUs(CAN_MSG *pMsg, int SpeedBps)
获取消息发送耗时时间,该值为理论值,实际值可能会大一些
struct _CBL_CMD_LIST CBL_CMD_LIST
自定义CAN Bootloader命令列表
int WINAPI CAN_SetRelay(int DevHandle, unsigned char RelayState)
设置CAN中继状态
int WINAPI CAN_ResetStartTime(int DevHandle, unsigned char CANIndex)
复位时间戳,复位后起始时间戳为当前时间
int WINAPI CAN_BL_Init(int DevHandle, int CANIndex, CAN_INIT_CONFIG *pInitConfig, CBL_CMD_LIST *pCmdList)
CAN BOOT初始化
int WINAPI CAN_FilterList_Init(int DevHandle, unsigned char CANIndex, unsigned int *pIDList, unsigned char IDListLen)
配置CAN过滤器,通过配置过滤器设置只接收某些帧ID数据
struct _CAN_MSG CAN_MSG
CAN帧类型定义
int WINAPI CAN_SetStartTime(int DevHandle, unsigned char CANIndex, long long StartTimeMs)
设置数据起始时间戳,主要用于将数据时间戳转换成实时时间用
struct _CAN_INIT_CONFIG CAN_INIT_CONFIG
CAN初始化结构体
int WINAPI CAN_Init(int DevHandle, unsigned char CANIndex, CAN_INIT_CONFIG *pCanConfig)
初始化CAN总线,使用CAN功能时必须调用
CAN过滤器结构体
Definition: usb2can.h:62
unsigned int ID_IDE
验收码IDE,ID为扩展帧设置为1,标准帧设置为0
Definition: usb2can.h:68
unsigned int MASK_IDE
屏蔽码IDE,该项只有在过滤器模式为屏蔽位模式时有用
Definition: usb2can.h:71
unsigned int MASK_RTR
屏蔽码RTR,该项只有在过滤器模式为屏蔽位模式时有用
Definition: usb2can.h:72
unsigned int ID_RTR
验收码RTR,ID为远程帧设置为0,数据帧设置为1
Definition: usb2can.h:69
unsigned int MASK_Std_Ext
屏蔽码ID,该项只有在过滤器模式为屏蔽位模式时有用
Definition: usb2can.h:70
unsigned char FilterMode
过滤器模式,0-屏蔽位模式,1-标识符列表模式
Definition: usb2can.h:65
unsigned char Enable
使能该过滤器,1-使能,0-禁止
Definition: usb2can.h:63
unsigned char ExtFrame
过滤的帧类型标志,扩展帧设置为1,标准帧设置为0。
Definition: usb2can.h:66
unsigned int ID_Std_Ext
验收码ID
Definition: usb2can.h:67
unsigned char FilterIndex
过滤器索引号,取值范围为0到13
Definition: usb2can.h:64
CAN初始化结构体
Definition: usb2can.h:46
unsigned char CAN_Mode
CAN工作模式,0-正常模式,1-环回模式,2-静默模式,3-静默环回模式,bit7为1则接入适配器内部终端电阻,否则不接入
Definition: usb2can.h:52
unsigned char CAN_ABOM
自动离线管理,0-禁止,1-使能
Definition: usb2can.h:53
unsigned char CAN_SJW
取值范围1~4
Definition: usb2can.h:49
unsigned char CAN_RFLM
FIFO锁定管理,0-新报文覆盖旧报文,1-丢弃新报文
Definition: usb2can.h:55
unsigned char CAN_BS2
取值范围1~8
Definition: usb2can.h:51
unsigned char CAN_BS1
取值范围1~16
Definition: usb2can.h:50
unsigned char CAN_TXFP
发送优先级管理,0-标识符决定,1-发送请求顺序决定
Definition: usb2can.h:56
unsigned char CAN_NART
报文重发管理,0-使能报文重传,1-禁止报文重传
Definition: usb2can.h:54
unsigned int CAN_BRP
取值范围1~1024
Definition: usb2can.h:48
CAN帧类型定义
Definition: usb2can.h:32
unsigned int ID
报文ID。
Definition: usb2can.h:33
unsigned char TimeStampHigh
时间戳高位
Definition: usb2can.h:39
unsigned char ExternFlag
bit[0]-是否是扩展帧,bit[7]-当前帧为错误帧
Definition: usb2can.h:36
unsigned int TimeStamp
接收到信息帧时的时间标识,从CAN 控制器初始化开始计时。单位为微秒
Definition: usb2can.h:34
unsigned char DataLen
数据长度(<=8),即Data中有效数据长度。
Definition: usb2can.h:37
unsigned char Data[8]
报文数据。
Definition: usb2can.h:38
unsigned char RemoteFlag
bit[0]-是否是远程帧,bit[6..5]-当前帧通道号,bit[7]-发送帧标志
Definition: usb2can.h:35
CAN总线状态定义
Definition: usb2can.h:78
unsigned int ESR
ESR定义
Definition: usb2can.h:80
unsigned char ErrFlag
bit[0]-EWGF:错误警告标志 (Error warning flag),bit[1]-EPVF:错误被动标志 (Error passive flag),bit[2]-BOFF:总线关闭标志 (B...
Definition: usb2can.h:84
unsigned char TECounter
CAN控制器发送错误计数器。
Definition: usb2can.h:82
unsigned int TSR
TSR定义
Definition: usb2can.h:79
unsigned char RECounter
CAN控制器接收错误计数器。
Definition: usb2can.h:81
unsigned char LECode
最后的错误代码
Definition: usb2can.h:83
自定义CAN Bootloader命令列表
Definition: usb2can.h:90
unsigned char CmdFaild
命令执行失败
Definition: usb2can.h:98
unsigned char SetBaudRate
设置节点波特率
Definition: usb2can.h:95
unsigned char Write
以多字节形式写数据
Definition: usb2can.h:93
unsigned char Excute
执行固件
Definition: usb2can.h:96
unsigned char Erase
擦出APP储存扇区数据
Definition: usb2can.h:91
unsigned char WriteInfo
设置多字节写数据相关参数(写起始地址,数据量)
Definition: usb2can.h:92
unsigned char CmdSuccess
命令执行成功
Definition: usb2can.h:97
unsigned char Check
检测节点是否在线,同时返回固件信息
Definition: usb2can.h:94