13#include "offline_type.h"
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)
164#define CAN_LOOP_BACK 1
165#define CAN_EN_RESISTOR 0x80
204int WINAPI
CAN_Init2(
int DevHandle,
unsigned char CANIndex,
int BaudRateBps,
unsigned char EnResistor);
227int WINAPI
CAN_FilterList_Init(
int DevHandle,
unsigned char CANIndex,
unsigned int *pIDList,
unsigned char IDListLen);
260int WINAPI
CAN_SendMsg(
int DevHandle,
unsigned char CANIndex,
CAN_MSG *pCanSendMsg,
unsigned int SendMsgNum);
345int WINAPI
CAN_SetSchedule(
int DevHandle,
unsigned char CANIndex,
CAN_MSG *pCanMsgTab,
unsigned char *pMsgNum,
unsigned short *pSendTimes,
unsigned char MsgTabNum);
358int WINAPI
CAN_StartSchedule(
int DevHandle,
unsigned char CANIndex,
unsigned char MsgTabIndex,
unsigned char TimePrecMs,
unsigned char OrderSend);
372int WINAPI
CAN_UpdateSchedule(
int DevHandle,
unsigned char CANIndex,
unsigned char MsgTabIndex,
unsigned char MsgIndex,
CAN_MSG* pCanMsg,
unsigned char MsgNum);
393int WINAPI
CAN_SetRelayData(
int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData);
404int WINAPI
CAN_GetRelayData(
int DevHandle, CAN_RELAY_HEAD *pCANRelayHead, CAN_RELAY_DATA *pCANRelayData);
429int WINAPI
CAN_Stop(
int DevHandle,
unsigned char CANIndex);
464int WINAPI
CAN_BL_NodeCheck(
int DevHandle,
int CANIndex,
unsigned short NodeAddr,
unsigned int *pVersion,
unsigned int *pType,
unsigned int TimeOut);
477int WINAPI
CAN_BL_Erase(
int DevHandle,
int CANIndex,
unsigned short NodeAddr,
unsigned int FlashSize,
unsigned int TimeOut);
492int WINAPI
CAN_BL_Write(
int DevHandle,
int CANIndex,
unsigned short NodeAddr,
unsigned int AddrOffset,
unsigned char *pData,
unsigned int DataNum,
unsigned int TimeOut);
504int WINAPI
CAN_BL_Excute(
int DevHandle,
int CANIndex,
unsigned short NodeAddr,
unsigned int Type);
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