本文介绍Linux系统下使用我司MPCIeCANFD-200设备。主要介绍socketCAN通信测试。
Linux系统下使用Socket CAN进行通信无需安装驱动,Linux集成了Socket CAN 环境。将设备通过USB转miniPCIEe接口转接板或者miniPCIE接口连接电脑,然后将其挂载到Linux系统。
下面简单介绍socket CAN通信操作,详细操作请参考:https://www.kernel.org/doc/html/next/networking/can.html
(1)、查看设备是否连接
输入 $ sudo ip link show 来查看设备是否已加载。如果有多个socketCAN节点,这里就会按顺序罗列,比如 can0,can1,can2,can3......
正常连接时设备的sys指示灯绿色慢闪,can指示灯绿色慢闪。
(2)、设置设备通信参数
设置超级管理员权限:
sudo su 进入 root权限。
● 设置CAN仲裁段波特率
命令行输入下面指令将设备的can0波特率设置为500Kbps:
$ ip link set can0 type can bitrate 500000
● 设置CANFD仲裁段和数据段波特率
命令行输入下面指令将设备的can0波特率设置为 500K/2Mbps。
$ ip link set can0 type can bitrate 500000 dbitrate 2000000 fd on
● 设置波特率的采样点
比如下方设置设备can0仲裁段波特率500K,采样点0.75;数据段波特率2000K,采样点0.8;
$ ip link set can0 type can bitrate 500000 sample-point 0.75 dbitrate 2000000 dsample-point 0.8 fd on
注:这里设置can0和can1要根据设备的实际接口来设置,比如设备实际can接口是 can3和can4,这里就应该输入
$ ip link set can3 type can bitrate 500000
$ ip link set can4 type can bitrate 500000
(3)、打开can口
配置好设备的波特率参数之后,命令行输入下面指令来打开CAN口。
$ ip link set can0 up
打开can口之后,设备的can指示灯绿色慢闪。
(4)、设置发送任务
在命令行输入下面指令添加一个发送任务,比如ID=0x123 Data=0x 1122334455667788
$ cansend can0 123#1122334455667788
将设备的can0 和can1连接起来,进行收发测试。
(5)、添加接收界面
如下图所示,新打开一个终端,输入 candump can1 需要安装插件
如下图所示,安装 utils 插件
输入 candump can1 之后,第一个终端发送数据,第二个终端会显示此通道接收到的数据。