ZLGCAN 接口函数使用手册
概述
广州致远电子有限公司推出的 CAN/CANFD 接口卡配套编程接口库,提供统一的 Windows DLL 接口,支持 CAN 和 CANFD 设备。
支持的接口卡系列
USB 系列
- USBCANFD-100U/200U/MINI
- USBCAN-E-U/2E-U/4E-U
- USBCAN-I/II
- CANalyst-II+
PCIe 系列
- PCIE-CANFD-100U/200U/400U
- PCI-5010-U/5020-U
- PCI9810/9820
- PCIe-9110I/9120I/9221
- PCI5110/5121
DTU 系列
网络系列
- CANET-TCP/UDP
- CANWIFI-TCP/UDP
- CANDTU-NET/NET-400
云设备
数据结构定义
设备信息结构体
typedef struct tagZCAN_DEVICE_INFO {
USHORT hw_Version; // 硬件版本号
USHORT fw_Version; // 固件版本号
USHORT dr_Version; // 驱动程序版本号
USHORT in_Version; // 接口库版本号
USHORT irq_Num; // 中断号
BYTE can_Num; // 通道数量
CHAR str_Serial_Num[20]; // 序列号
CHAR str_hw_Type[40]; // 硬件类型
} ZCAN_DEVICE_INFO;
CAN 通道初始化配置
typedef struct tagZCAN_CHANNEL_INIT_CONFIG {
UINT can_type; // 0=CAN, 1=CANFD
union {
struct {
UINT acc_code; // 验收码
UINT acc_mask; // 屏蔽码
BYTE filter; // 滤波方式
BYTE timing0; // 波特率定时器0
BYTE timing1; // 波特率定时器1
BYTE mode; // 工作模式
} can;
struct {
UINT acc_code;
UINT acc_mask;
UINT abit_timing; // 仲裁域波特率
UINT dbit_timing; // 数据域波特率
UINT brp; // 波特率预分频
BYTE filter;
BYTE mode;
} canfd;
};
} ZCAN_CHANNEL_INIT_CONFIG;
CAN 报文结构
struct can_frame {
canid_t can_id; // 32位帧ID
__u8 can_dlc; // 数据长度
__u8 data[8]; // 报文数据
};
核心 API 函数
设备管理
ZCAN_OpenDevice(device_type, device_index, reserved) - 打开设备
ZCAN_CloseDevice(device_handle) - 关闭设备
ZCAN_GetDeviceInf(device_handle, pInfo) - 获取设备信息
ZCAN_IsDeviceOnLine(device_handle) - 检测在线状态
CAN 操作
ZCAN_InitCAN(device_handle, can_index, pInitConfig) - 初始化 CAN
ZCAN_StartCAN(channel_handle) - 启动 CAN 通道
ZCAN_ResetCAN(channel_handle) - 复位 CAN 通道
ZCAN_ClearBuffer(channel_handle) - 清除缓冲区
数据收发
ZCAN_Transmit(channel_handle, pTransmit, len) - 发送 CAN 报文
ZCAN_Receive(channel_handle, pReceive, len, wait_time) - 接收 CAN 报文
ZCAN_TransmitFD() / ZCAN_ReceiveFD() - CANFD 版本
云设备操作
ZCLOUD_SetServerInfo(httpSvr, httpPort, mqttSvr, mqttPort)
ZCLOUD_ConnectServer(username, password)
ZCLOUD_GetUserData() - 获取用户设备信息
ZCLOUD_ReceiveGPS() - 接收 GPS 数据
波特率设置参考
| CAN波特率 | timing0 | timing1 |
|---|
| 1Mbps 80% | 0xBF | 0xFF |
| 500Kbps | 0x00 | 0x1C |
| 250Kbps | 0x01 | 0x1C |
| 125Kbps | 0x03 | 0x1C |
| 100Kbps | 0x04 | 0x1C |
错误码
| 错误码 | 描述 |
|---|
| 0x0001 | CAN控制器内部FIFO溢出 |
| 0x0002 | CAN控制器错误报警 |
| 0x0020 | CAN控制器总线关闭 |
| 0x0100 | 设备已经打开 |
| 0x0200 | 打开设备错误 |
| 0x0400 | 设备没有打开 |
应用场景
- 工业自动化控制
- 汽车电子测试
- 物联网设备通信
- 液相芯片项目驱动开发