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 系列

  • CANDTU-100UR/200UR

网络系列

  • CANET-TCP/UDP
  • CANWIFI-TCP/UDP
  • CANDTU-NET/NET-400

云设备

  • ZCAN_CLOUD

数据结构定义

设备信息结构体

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波特率timing0timing1
1Mbps 80%0xBF0xFF
500Kbps0x000x1C
250Kbps0x010x1C
125Kbps0x030x1C
100Kbps0x040x1C

错误码

错误码描述
0x0001CAN控制器内部FIFO溢出
0x0002CAN控制器错误报警
0x0020CAN控制器总线关闭
0x0100设备已经打开
0x0200打开设备错误
0x0400设备没有打开

应用场景

  • 工业自动化控制
  • 汽车电子测试
  • 物联网设备通信
  • 液相芯片项目驱动开发