设置终止
确定是否需要使用 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
在 Windows 和 Linux 上,您可以与任何运行candlelight或slcan固件的 CANable 设备一起使用。Cangaroo 会在启动时自动检测所有 CANable 接口。
Cangaroo 具有许多功能,包括:
下载
CANable 提供了一个与 socketCAN 兼容的接口,可以通过slcand启动。这样您就可以使用所有标准的 Linux CAN 实用程序,例如candump、cansniffer,甚至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
cantact-app是在 Windows 和 Mac 上启动和运行 CANable 的最简单方法。
cantact-app是一款 Java 程序,用于查看实时 CAN 总线流量并发送 CAN 数据包。此工具直接连接到 CANable(或 CANtact)设备的虚拟串行端口,无需任何其他驱动程序。只需下载最新版本,连接到您的 CANable,流量就会立即显示出来。
注意:cantact-app在 Linux 上运行,但目前无法发现串行端口。
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 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
如果您在 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
刷写固件后,将启动跳线恢复到原始位置,然后插拔设备。您现在正在运行新固件!