2. 树莓派扩展板

2.1. 树莓派RS485/CAN扩展板

2.1.1. 简介

由于rk3566不支持CAN通信,使用该扩展板可通过spi扩展出一路CAN,支持板卡型号有鲁班猫0N、鲁班猫0w、鲁班猫1、鲁班猫1N。

购买链接: (微雪)树莓派4B/3B+/Zero W RS485 扩展板

扩展板详细说明参考官方资料: 扩展板官方资料

以下说明只针对扩展板接鲁班猫板卡情况。

2.1.2. 使用说明

注意

如果扩展板购买日期早于2019年8月份,晶振是8M的,需要修过设备树插件,将mcp251x_clk修改为8M,反之新版的,晶振是12M的则不需要。

2.1.2.1. 更新镜像

野火2024年4月20日支持了该扩展板的使用,如果使用比这个日期旧的镜像,需要更新内核,如果比这个日期更新的镜像则不需要更新。

离线更新内核deb包:

将以上两个deb包传到板卡,然后执行 sudo dpkg -i linux*.deb ,更新内核,然后修改 /boot/uEnv/uEnv.txt,取消dtoverlay=/dtb/overlay/rk3566-lubancat-0-spi-can-mcp2515-overlay.dtbo注释,最后重启板卡即可。

../../_images/expansion_board001.jpg

如果是新镜像,则直接修改/boot/uEnv/uEnv.txt,取消dtoverlay=/dtb/overlay/rk3566-lubancat-0-spi-can-mcp2515-overlay.dtbo注释,最后重启板卡即可。

2.1.2.2. 硬件连接

鲁班猫0N接扩展板实物如下:

../../_images/expansion_board002.jpg

鲁班猫1接扩展板实物如下:

../../_images/expansion_board003.jpg

2.1.2.3. CAN收发测试

确认系统是否需要更新镜像,以及打开了对应设备树插件重启后才能进行测试。

2.1.2.3.1. 安装测试工具
1
2
sudo apt update
sudo apt install  can-utils
2.1.2.3.2. 回环测试

将拓展板的CAN_H和CAN_L连接起来。

../../_images/expansion_board004.jpg

设置波特率以及回环模式:

1
2
3
4
5
6
#将CAN0接口关闭
sudo ip link set can0 down
#设置比特率为 1000000Hz,同时启用回环模式
sudo ip link set can0 type can bitrate 1000000 loopback on
#将CAN0接口启用
sudo ip link set can0 up

打开两个终端窗口,测试can0自发自收:

1
2
3
4
5
6
7
8
9
#终端1
candump can0

#终端2
cansend can0  000#11.22.33.44

#或者只使用一个终端
candump can0 &
cansend can0  000#11.22.33.44

效果如下:

../../_images/expansion_board005.jpg
../../_images/expansion_board006.jpg
2.1.2.3.3. 与CAN分析仪通信测试

将拓展板和分析仪进行连接。

扩展板

CAN分析仪

CAN_H

CAN_H

CAN_L

CAN_L

设置波特率并进行测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#将CAN0接口关闭
sudo ip link set can0 down
#设置比特率为 1000000Hz
sudo ip link set can0 type can bitrate 1000000
#将CAN0接口启用
sudo ip link set can0 up

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

#接收
candump can0
../../_images/expansion_board007.jpg
../../_images/expansion_board008.jpg

2.1.2.4. rs485使用说明

扩展板rs485使用此处只做简单说明,打开对应插件正常收发即可。

../../_images/expansion_board000.jpg

打开40pin上的8、10引脚对应的uart设备树插件,然后将485设备接到扩展板A、B进行收发。

../../_images/expansion_board009.jpg

参考串口章节说明: 串口通信