SocketCAN插件封装了访问CAN设备的Linux套接字API。这个API是一组开源CAN驱动程序和网络堆栈,由Volkswagen Research为Linux内核贡献。
这个插件需要一个支持SocketCAN的Linux内核和用于CAN硬件的SocketCAN设备驱动程序。
SocketCAN usage
要列出所有(包括未配置的)网络接口,可以使用命令ifconfig -a。
要使用SocketCAN,必须加载相应的Linux内核模块,并配置相应的网络接口。
Setting up real CAN hardware
本节假设设备驱动程序已经加载(很可能在连接CAN硬件时自动加载)。
Default settings
设置设备can0的比特率为250kbit /s。
sudo ip link set up can0 type can bitrate 250000
要在100毫秒后自动从“bus off”错误中恢复,可以使用以下命令:
sudo ip link set up can0 type can bitrate 250000 restart-ms 100
CAN FD settings
设置设备的仲裁比特率为500kbit /s,数据比特率为4mbit /s(对于带比特率开关标志的帧)。
sudo ip link set can0 up type can bitrate 500000 dbitrate 4000000 fd on
Setting up a virtual CAN bus
注意:对于CAN FD使用,MTU(最大传输单元)必须设置为72字节。
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0 mtu 72
下面使用的命令行测试程序来自can-utils包:
//显示接收到的具有绝对时间戳和标志的CAN消息
candump -ta -x vcan0
//发送一个带有BRS和EFI标志的CAN - FD消息
cansend vcan0 123##3112233445566778899aabbccddeeff
//生成随机CAN报文
cangen vcan0
Creating CAN Bus Devices
首先,有必要检查QCanBus是否提供所需的插件:
if (QCanBus