# 简介

RK3506 总共支持两路 CAN 总线，但需要外置收发器，本品 NX-RK3506-SH 评估底板已经内置集成一路 CAN 收发器 ，可以直接外接 CAN 调试器进行测试

# 驱动文件

驱动文件所在位置：

**RV1126/RV1109 使用：**

```cpp
drivers/net/can/rockchip/rockchip_can.c

```

**RK3568/RK3588 使用:**

```cpp
drivers/net/can/rockchip/rockchip_canfd.c

```

**RK3562 使用:**

```cpp
drivers/net/can/rockchip/rk3562_canfd.c

```

**驱动节点**

```c
&can0 {
	assigned-clocks = <&cru CLK_CAN0>;
	assigned-clock-rates = <200000000>;
	pinctrl-0 = <&rm_io25_can0_tx &rm_io26_can0_rx>;
	pinctrl-names = "default";
	status = "disabled";
};

&can1 {
	assigned-clocks = <&cru CLK_CAN1>;
	assigned-clock-rates = <200000000>;
	pinctrl-0 = <&rm_io17_can1_tx &rm_io18_can1_rx>;
	pinctrl-names = "default";
	status = "okay";
};

```

# 内置测试

### 接线定义

主板 CANH 和 CANL 引脚分别接入 CAN 设备的 CANH 和 CANL

# 内置 CAN 和串口切换

电阻焊接代表 CAN 通讯，去掉电阻变为普通串口或 GPIO

# 外置测试

### 参考使用 TJA1051T 模块

![](/upload/public/wiki/markdown/0d1626bd10204ddca6cabd2fe803bfa3/1792981718609_image.png)

### 接线定义

1. 3.3V 供电
2. GND
3. 将配置的 CAN 的 TX 引脚接入 CTX
4. 将配置的 CAN 的 RX 引脚接入 CRX
5. TJA1051T 模块的 CANH 和 CANL 分别对接 CAN 通信的 H 和 L 就可以通讯

# 测试命令接口

1. 查询当前网络设备:

```c
ifconfig -a
```

2. CAN 启动:
   关闭 CAN:

```c
ip link set can0 down
```

设置比特率 500KHz:

```c
ip link set can0 type can bitrate 500000
```

打印 can0 信息:

```c
ip -details -statistics link show can0
BR2_PACKAGE_CAN_UTILS=y
BR2_PACKAGE_IPROUTE2=y
```

启动 CAN:

```c
ip link set can0 up
```

3. CAN发送:
   发送（标准帧,数据帧,ID:123,date:DEADBEEF）:

```c
cansend can0 123#DEADBEEF
```

发送（标准帧,远程帧,ID:123）:

```c
cansend can0 123#R
```

发送（扩展帧,数据帧,ID:00000123,date:DEADBEEF）:

```c
cansend can0 00000123#12345678
```

发送（扩展帧,远程帧,ID:00000123）:

```c
cansend can0 00000123#R
```

3. CAN接收:
   开启打印，等待接收:

```c
candump can0
```
