# **CAN概述**

CAN的全称为Controller Area Network，也就是控制局域网络，简称为CAN。CAN最早是 由德国BOSCH(博世)开发的，目前已经是国际标准(ISO 11898)，是当前应用最广泛的现场总线 之一。BOSCH主要是做汽车电子的，因此CAN一开始主要是为汽车电子准备的，事实也是如 此，CAN协议目前已经是汽车网络的标准协议。当然了，CAN不仅仅应用于汽车电子，经过 几十年的发展，CAN协议的高性能和高可靠性已经得到了业界的认可，目前除了汽车电子以外 也广泛应用于工业自动化、医疗、工业和船舶等领域。

# **硬件简介**

AUKUN-UTX-3568JT 主板总共外设2路CAN

# **DTS驱动配置**

板级使能can,配置位置：arch/arm64/boot/dts/rockchip/aukun-utx-rk3568-base.dtsi

```bash
&can1 {  
assigned-clocks = <&cru clk\_can1="">;  
assigned-clock-rates =<150000000>;  
pinctrl-names = "default";  
pinctrl-0 = <&can1m1\_pins>;  
status = "enable";  
};  
  
&can2 {  
assigned-clocks = <&cru clk\_can2="">;  
assigned-clock-rates =<150000000>;  
pinctrl-names = "default";  
pinctrl-0 = <&can2m1\_pins>;  
status = "enable";  
};
```

# **实验调用**

## ****CAN总线配置****

将can1总线的TX与can2总线的TX相连，将can1总线的RX与can2总线RX相连接。

## ****CAN测试工具****

1、can-utils 工具包内含 5 个独立的程序：canconfig、candump、canecho、cansend、cansequence

安装命令：

sudo apt installcan-utils

2、工具包含的常用命令

```bash
cansend：
```

向指定的CAN总线接口发送十六进制数据，如：cansend can1 123#AABBCC，向can1接口发送0XAABBCC

```bash
candump：
```

使CAN总线接口保持监听状态。从CAN 总线接口接收数据并以十六进制形式打印到标准输出

## ****通讯案例测试****

1、设置比特率。当需要修改can模块的属性时，必须先关闭can模块

```bash
ip link set can0 down  #关闭CAN总线接口
```

```bash
ip link set can0 type can bitrate 500000  ##设置比特率为500000
```

2、打开can模块

```bash
ip link set can0 up  #打开CAN0模块
```

3、向指定的CAN总线接口发送数据

```bash
cansend can1 123#AABBCC  #从总线接口发出数据

```

can1：表示CAN通道名称，即被发送的CAN数据从该通道发出

发送CAN帧是标准帧;123表示can帧的帧id。后面6个字节表示具体的CAN帧报文。

4、开启终端的监听打印模式

```bash
candump can0

```

![](/upload/public/wiki/markdown/8facc0c483f64574b5596764d1689961/1792986173405_image.png)
