跳转至

CAN

CAN (Controller Area Network) 总线,即控制器局域网总线,是一种有效分布式控制或实时控制的串行通信网络。

Warning

拓展引脚上的 CAN 为芯片原生接口,没有通过 CAN 收发器,使用时需外接 CAN 收发器模块。

Rockchip 平台拓展引脚 CAN 信息如下:

主板 SOC 拓展引脚
K1 RK3568 CAN X2
K1B RK3568
K3 RK3562
K7 RK3576 CAN X1
K7C RK3576 CAN X1
K8 RK3588 CAN X1

DTS 节点配置

下面为 Rockchip 平台 CAN 设备 0 节点配置示例:

&can0 {
      pinctrl-names = "default";
      pinctrl-0 = <&can0m2_pins>;
      status = "okay";
};

驱动文件

RK3568/RK3588 平台 CAN 总线驱动路径如下:

drivers/net/can/rockchip/rockchip_canfd.c

RK3562 平台 CAN 总线驱动路径如下:

drivers/net/can/rockchip/rk3562_canfd.c

RK3576 平台 CAN 总线驱动路径如下:

drivers/net/can/rockchip/rk3576_canfd.c

查询当前CAN设备

查询当前网络设备:

ifconfig -a

操作示例

console$ ifconfig -a
...
can0      Link encap:UNSPEC    Driver rk3576_canfd
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:10 
          RX bytes:0 TX bytes:0 
          Interrupt:63 
...

CAN 配置

关闭 CAN:

ip link set can0 down

设置 can0 为 500Kbps 的比特率,并关闭 CAN FD 模式:

ip link set can0 type can bitrate 500000 fd off

设置 can0 仲裁段 1M 波特率,数据段 3M 波特率,启动 CAN FD 模式:

ip link set can0 type can bitrate 1000000 dbitrate 3000000 fd on

查看 can0 配置信息:

ip -details link show can0

启动 CAN:

ip link set can0 up

CAN 发送

发送(标准帧,数据帧,ID:123,date:DEADBEEF):

cansend can0 123#DEADBEEF

发送(标准帧,远程帧,ID:123):

cansend can0 123#R

发送(扩展帧,数据帧,ID:00000123,date:DEADBEEF):

cansend can0 00000123#12345678

发送(扩展帧,远程帧,ID:00000123):

cansend can0 00000123#R

CAN 接收

开启打印,等待接收:

candump can0