Skip to content

GS USB 固件 ​

CANmeleon GS USB 固件面向 Windows 的 EcuBus-Pro 和 Linux 的 SocketCAN 工作流。同一固件可分别通过 Windows WinUSB 与 Linux 内核 gs_usb 驱动使用,无需为这两条路径切换另一种固件模式。

功能与软件入口 ​

四通道实现提供经典 CAN、CAN FD 收发、硬件时间戳、软件终端电阻控制和 Identify 通道定位。实际可用通道及电阻控制能力取决于硬件和适用固件包。

平台 / 工具用途获取与说明
Windows / EcuBus-Pro通过 GS_USB(CANDLE)后端进行 CAN / CAN FD 收发EcuBus-Pro 下载与安装、GS_USB 与 CAN 操作说明
Linux / SocketCAN使用内核 gs_usb 驱动与标准 CAN 网络接口Linux SocketCAN 文档
Linux / can-utilscandump 接收、cansend 单帧发送can-utils 项目;Ubuntu 安装命令见下文
CANmeleon device manager核对适用固件、安装、更新与切换鲲弘设备管理器教程

固件获取与安装请参考设备管理器教程,并核对设备型号和实际可用包。本页介绍使用方法,不作为具体版本已上架或某型号已支持 GS USB 的清单。

接线与首次测试 ​

先确认设备已经运行适用的 GS USB 固件,再进行软件配置。首次测试使用两路 CAN:CAN_H 对接 CAN_H、CAN_L 对接 CAN_L,参考地和接口针脚按硬件手册连接;总线两端各配置一个 120 Ω 终端,不重复叠加外置与内置终端。

两个通道均需处于正常收发模式,波特率一致。CAN FD 测试还需一致的数据波特率,发送时启用 BRS。监听模式的对端不提供 ACK,不能用作本例唯一的接收节点。

本文示例参数为经典 CAN 500 kbit/s,CAN FD 500 kbit/s 仲裁 / 2 Mbit/s 数据。先发一帧核对 ID 和载荷,再进行连续收发。

Windows:EcuBus-Pro ​

1. 检查设备与驱动 ​

安装 EcuBus-Pro,接入运行 GS USB 固件的设备。在 Windows 设备管理器中检查设备是否正常枚举,相关 USB 功能接口使用 WinUSB,且没有错误标记。然后在 EcuBus-Pro 中扫描设备,核对可见通道。

此路径使用 GS_USB(CANDLE)后端,不使用 PEAK/PCAN 驱动,也不通过串口 SLCAN 连接。遇到识别问题时,先记录设备状态和驱动信息,不要对其他 USB 设备批量替换驱动。

2. 配置通道并发送一帧 ​

  1. 在 EcuBus-Pro 的设备配置中选择 GS_USB(CANDLE) 类型,绑定实际检测到的通道。
  2. 为已接线的发送端和接收端设置相同参数。经典 CAN 使用 500 kbit/s;CAN FD 开启 FD 并设置 500 kbit/s / 2 Mbit/s。
  3. 在交互发送功能中选择发送通道,添加标准 ID 0x123、8 字节载荷 11 22 33 44 55 66 77 88。进行 FD 测试时选择 FD 帧并启用 BRS。
  4. 单次发送,在接收通道检查相同 ID 和载荷;交换收发通道再测一次。发送日志或本地 echo 不等于对端实际收到报文。

界面细节请以 EcuBus-Pro CAN 操作说明为准。已有验证覆盖原装 CLI 后端,GUI 菜单和诊断工程不作为本页已验收项目。

Linux:SocketCAN ​

1. 准备工具并检查接口 ​

使用包含四通道支持的内核 gs_usb 驱动。已有验证环境是 Ubuntu 24.04.4 LTS + 6.18.0-061800-generic;Ubuntu 版本号本身不保证其默认内核具备相同支持。本教程不包含内核升级步骤。

bash
sudo apt update
sudo apt install can-utils iproute2 ethtool usbutils
uname -r
lsusb
sudo modprobe gs_usb
ip -br link show type can

接口可能是 can0 至 can3,已有其他 CAN 设备时编号可能不同。用下面的命令核对所选接口驱动;示例要求返回路径末尾为 /gs_usb:

bash
readlink -f /sys/class/net/can0/device/driver
readlink -f /sys/class/net/can1/device/driver
sudo ethtool -p can0 2

最后一条命令让对应通道定位闪烁 2 秒,结束后恢复当前灯语。先确认物理通道与接口的对应关系。下文以已接线的 can0 和 can1 为例,其他命名请统一替换。

2. 经典 CAN 单帧收发 ​

先配置两个接口;切换参数前将接口置为 DOWN:

bash
sudo ip link set can0 down
sudo ip link set can1 down
sudo ip link set can0 type can bitrate 500000 fd off
sudo ip link set can1 type can bitrate 500000 fd off
sudo ip link set can0 up
sudo ip link set can1 up
ip -details -statistics link show can0

终端 A 接收:

bash
candump can1

终端 B 发送:

bash
cansend can0 123#1122334455667788

终端 A 应在 can1 上看到 ID 123、长度 8 和相同载荷。只在 can0 上看到本地回显不能证明接线或对端接收正常。

3. CAN FD 单帧收发 ​

先在终端 A 按 Ctrl+C 停止接收,再重新配置两路为 500 kbit/s / 2 Mbit/s:

bash
sudo ip link set can0 down
sudo ip link set can1 down
sudo ip link set can0 type can bitrate 500000 dbitrate 2000000 fd on
sudo ip link set can1 type can bitrate 500000 dbitrate 2000000 fd on
sudo ip link set can0 up
sudo ip link set can1 up

在终端 A 重新运行 candump can1,然后在终端 B 发送:

bash
cansend can0 123##11122334455667788

## 表示 CAN FD,紧接的第一个 1 是 BRS 标志,后面的 1122334455667788 才是 8 字节载荷。检查 can1 收到对应报文;反向测试时在一个终端运行 candump can0,另一个终端执行:

bash
cansend can1 321##18877665544332211

4. 软件终端电阻与退出 ​

有软件终端电阻的适用硬件,可在接口 DOWN 时设置并读回状态:

bash
sudo ip link set can0 down
sudo ip link set can0 type can termination 120
ip -details link show can0
# 关闭内置终端时使用:
sudo ip link set can0 type can termination 0

按实际接线选择 120 或 0 Ω,不要在已使用外部终端时额外开启。该设置用于当前运行配置,不将读回值等同于电气阻值测量,也不依赖其掉电保存。修改后如需继续收发,重新执行 sudo ip link set can0 up。

测试结束,在接收终端按 Ctrl+C,并关闭本次使用的接口:

bash
sudo ip link set can0 down
sudo ip link set can1 down

常见问题 ​

现象检查方向
USB 可见,但没有 CAN 网络接口核对当前固件、内核版本、gs_usb 模块及 dmesg 中的枚举信息
四路没有全部出现核对驱动的多通道支持,并检查是否被其他 USB 软件或虚拟机占用
有发送记录但对端收不到核对物理通道、CAN_H/CAN_L、终端、双方时序和正常收发模式
发送报错或 bus-off先停止发送;检查 ACK、接线和时序,修正后将接口 DOWN/UP 再测试

虚拟机 USB 直通时,同一设备只交给一个系统使用。Linux SocketCAN 使用期间不要让其他用户态 USB 后端同时接管设备。

SysMax 维护本页固件使用资料;第三方工具名称仅用于标识接入方式。反馈时请提供硬件型号、固件、操作系统/内核、驱动、软件版本和接线方式:SysMax CANmeleon 问题反馈。

雪球电子 · 专注通讯