目录

设置跳线

设置终止

确定是否需要使用 CANable 的板载终端电阻。CAN 总线需要在总线两端分别连接一个 120 欧姆的终端电阻才能正常工作,如果总线完全没有终端电阻,则无法正常工作。CANable 内置了终端电阻,您可以使用,但如果您的总线已经端接,请务必禁用板载终端电阻。

CANable 2.0有一个开关可以启用和禁用终止。

CANable Pro有一个跳线控制终端和一个按钮进入启动模式

原版CANable有两个跳线:“Boot”和“Term”。

连接到总线

将 CANable 的 CANH、CANL 和 GND 引脚连接到目标 CAN 总线。必须接地才能使 CAN 总线正常工作。

请勿连接原始 CANable 或 CANable 2.0 的 5v 输出,除非您需要使用 5v 为目标供电:这只是一个输出!

插入电源

确保启动跳线未处于“启动”位置,然后使用 Micro USB 线将 CANable 连接到计算机的 USB 端口。请确保您使用的是性能良好的 USB 数据线,而不是仅用于充电的线

安装驱动程序

Linux 和 Mac

Linux 和 Mac 无需驱动程序。CANable 将显示为 USB CDC 设备:Linux 上为/dev/ttyACMX/dev/ttyUSBX , Mac 上为/dev/cu.usbmodemXXXX 。

视窗

现代版本的 Windows 不需要 USB-CDC 设备的驱动程序,并且 CANable 在插入后将正确枚举。

对于旧版 Windows 用户,您可能需要安装.inf文件。您可以下载驱动程序的 zip 文件,右键单击.inf文件,然后点击“安装”。您可能需要打开设备管理器,找到未知的触摸设备,选择“更新驱动程序”,然后选择.inf文件。1

应用程序:Cangaroo

在 Windows 和 Linux 上,您可以与任何运行candlelightslcan固件的 CANable 设备一起使用。Cangaroo 会在启动时自动检测所有 CANable 接口。

Cangaroo 具有许多功能,包括:

下载

应用程序:Linux 上的 SocketCAN

CANable 提供了一个与 socketCAN 兼容的接口,可以通过slcand启动。这样您就可以使用所有标准的 Linux CAN 实用程序,例如candumpcansniffer,甚至wireshark。总线速度通过“-s”参数指定,其中:

只需运行slcand并根据总线速度指定合适的参数,新的 CAN 设备就会出现在您的系统中。运行slcand后,别忘了使用ifconfig 命令启动接口!现在,您可以使用任何标准的 Linux CAN 实用程序与总线交互。请确保指定正确的 TTY 端口,您可以在插入 CANable 后使用dmesg命令进行检查。

    sudo slcand -o -c -s0 /dev/ttyACM0 can0
    sudo ifconfig can0 up
    sudo ifconfig can0 txqueuelen 1000

    cansend can0 999#DEADBEEF   # Send a frame to 0x999 with payload 0xdeadbeef
    candump can0                # Show all traffic received by can0
    canbusload can0 500000      # Calculate bus loading percentage on can0 
    cansniffer can0             # Display top-style view of can traffic
    cangen can0 -D 11223344DEADBEEF -L 8    # Generate fixed-data CAN messages


应用程序:Windows 和 Mac 上的cantact-app

cantact-app是在 Windows 和 Mac 上启动和运行 CANable 的最简单方法。

cantact-app是一款 Java 程序,用于查看实时 CAN 总线流量并发送 CAN 数据包。此工具直接连接到 CANable(或 CANtact)设备的虚拟串行端口,无需任何其他驱动程序。只需下载最新版本,连接到您的 CANable,流量就会立即显示出来。

注意:cantact-app在 Linux 上运行,但目前无法发现串行端口。

应用程序:使用 Python 中的 CANable 和 python-can

python-can是一个 Python 库,可让您轻松地通过 Python 在 CAN 总线上进行通信。该库支持在 Windows 或 Linux 上通过串行连接直接连接到 CANable/CANtact 设备,并且还可以在 Linux 上使用 candlelight 固件直接与 socketcan 设备配合使用。

有关python-can 的文档可在此处找到

入门非常简单:

import can

# Candlelight firmware on Linux
#bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000)

# Stock slcan firmware on Linux
bus = can.interface.Bus(bustype='slcan', channel='/dev/ttyACM0', bitrate=500000)

# Stock slcan firmware on Windows
bus = can.interface.Bus(bustype='slcan', channel='COM0', bitrate=500000)

msg = can.Message(arbitration_id=0xc0ffee,
                  data=[0, 25, 0, 1, 3, 1, 4, 1],
                  is_extended_id=True)

try:
    bus.send(msg)
    print("Message sent on {}".format(bus.channel_info))
except can.CanError:
    print("Message NOT sent")

注意:之前,建议将 CANard 库与 CANable 配合使用。CANard仍然可用但不建议用于新项目。

备用固件:candleLight

CandleLight USB 转 CAN 固件有一个适用于 CANable 的端口。该端口在 Linux 下使用 gs_usb 驱动程序运行良好。此固件不使用 slcan,因此无法与原厂固件互换。不过,CANable 在 Linux 系统中原生显示为 CAN 接口,可在 Windows 系统中与 Cangaroo 应用程序(见下文)兼容,并且在高总线负载条件下性能出色。

您可以使用CANable Updater网站将您的 CANable 更新为candlelight,或者参考Flashing New Firmware

请注意,Linux 内核 4.9 及以下版本的 gs_usb 驱动程序存在一个 bug。我创建了一个补丁,该补丁现已包含在主线内核中。如果您需要编译独立模块,可以使用这个自定义版本

使用 Candlelight 固件,只需插入 CANable 接口,设备就会被枚举为 can0。设置波特率并使用以下命令启动接口,即可开始使用!

ip link set can0 up type can bitrate 500000

udev 规则

如果您在 candleLight 固件中使用多个 CANable 设备,您可能需要使用 udev 规则为每个序列号分配一个固定的 socketcan 设备名称(例如 can0、can1 等),该名称在设备重启以及设备插拔后保持不变。使用 udev 规则可以轻松实现这一点。

首先,创建一个新的 udev 规则文件,例如

/etc/udev/rules.d/99-candlelight.rules

此文件将包含您的规则。请将设备的序列号(插入后查看 dmesg 命令,或使用 usb-devices 命令)和所需的设备名称放入此文件中。其他值无需更改。为每个要配置的设备添加一行。我建议将设备名称设置为 can3 及更高版本,因为没有 udev 规则的设备仍会枚举为 can0、can1 等。

SUBSYSTEM=="net", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="606f", ATTRS{serial}=="000C8005574D430A20333735", NAME="can5"
SUBSYSTEM=="net", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="606f", ATTRS{serial}=="000D8005574D430A20333735", NAME="can6"
SUBSYSTEM=="net", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="606f", ATTRS{serial}=="000E8005574D430A20333735", NAME="can7"

重新启动系统或运行以下命令并拔下/重新插入设备,udev 规则将在枚举后分配接口号。

sudo udevadm control --reload-rules && sudo systemctl restart systemd-udevd && sudo udevadm trigger

固件源

原厂 CANable slcan 固件可在 Github 上获取。slcan ASCII 格式的简要文档可在仓库的 README 文件中找到。

构建

slcan 和 candleLight 固件的出厂版本可在此处下载。

更新固件

重新编程你的 CANable 相当容易。首先,将“启动”跳线移到 PCB 上标记的启动位置,然后将其插入电脑。

Web 应用程序

您可以使用 Google Chrome 浏览器访问CANable 更新程序网站,轻松更新您的 CANable 。按照说明操作,即可轻松刷新您的 CANable。

ST DFU工具

如果您运行的是 Windows,请下载 ST 的dfuse工具并按照ST 的指南安装 DFU 设备的驱动程序、生成 DFU 文件并刷新设备。

Linux 和 Mac 上的 dfu-util

如果你使用的是 Linux 或 Mac,请从发行版的包管理器或 OSX 上的 brew安装dfu-util 。运行以下命令来烧写你的设备:

sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D canable-firmware.bin

刷写固件后,将启动跳线恢复到原始位置,然后插拔设备。您现在正在运行新固件!