回答

收藏

[评测分享] 【树莓派5测评】 07.玩转CAN通讯

#板卡评测 #板卡评测 2918 人阅读 | 0 人回复 | 2024-03-17

本帖最后由 stm1024 于 2024-3-17 20:02 编辑

树莓派的40 PIN标准,一直是经典的针脚定义,不光自己产品线延续这种针脚定义,甚至还影响了其他的各种派开发板。
而CAN(controller area network,控制器局域网络)作为一种十分常见的通讯协议,在汽车和工业控制中得到了很多应用,树莓派自然也支持。
不过想要通过树莓派进行CAN通讯,存在一个小问题是树莓派开发板并没有数据链路层,也就是我们通常所说的PHY,翻出了以前树莓派4B时候的一个HAT,介绍如何通过树莓派进行数据通讯。
用到的帽子(HAT)是微雪的RS485 CAN HAT,具备CAN功能,使用微芯半导体的SPI接口CAN控制器MCP2515,搭配的CAN收发器是德州仪器的SN65HVD230,支持CAN 2.0A和CAN2.0B,好处是树莓派通过SPI接口连接芯片,对于树莓派使用该芯片不需要编写驱动,只需要打开设备树中的内核驱动即可使用,缺点是由于使用的是MCP2515,因此不支持CAN-FD,虽然有点小遗憾,但是在大部分情况下还是可以满足要求的。
HAT长这样:

针脚定义的话,靠近凤凰端子那一侧是1,靠近晶振那一侧是40,因此安装方式如下:

软件环境准备工作如下:
1. 安装lgpio
脚本命令如下:
  1. wget https://github.com/joan2937/lg/archive/master.zip
  2. unzip master.zip
  3. cd lg-master
  4. sudo make install
复制代码

2. 配置config.txt
注意:config.txt现在位于/boot/firmware/目录下,而不是之前的/boot目录下。
通过nano打开该文件:
  1. sudo nano /boot/firmware/config.txt
复制代码
然后再最后添加两行:
  1. dtparam=spi=on
  2. dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=25,spimaxfrequency=2000000
复制代码
保存退出。

3. 确认打开SPI外设
在树莓派配置中通过Preference下面的Respberry Pi Configuration打开对话框,确认SPI外设是打开的,如下图所示:



4. 安装CAN-utils同样使用socketCAN,因此需要安装CAN-Utils,脚本命令如下:
  1. sudo apt-get install can-utils
复制代码
都搞完以后,reboot重启树莓派。

5. 启动CAN并检查
使用如下命令配置并启动CAN:
  1. sudo ip link set can0 up type can bitrate 100000
复制代码
然后通过ifconfig确认:
  1. ifconfig can0
复制代码
表明CAN0设置成功。

6. 测试
接下来可以测试CAN通讯了,需要一个CAN采集卡及其运行在Windows系统的上位机程序,连接好线路以后,测试如下。
在一个终端中使用cangen,生成随机CAN报文:
  1. cangen can0 -g 1000
复制代码
然后打开一个新的终端,在其中打开candump:
  1. candump can0
复制代码
最后打开Windows环境下的上位机程序,由于前面配置的波特率为100kbps,因此上位机程序也要做相应的配置,运行结果如下:

可见CAN报文的发送是很成功的,也可以将cangen终端关掉,然后在WindowsCAN上位机程序中发送报文,这是candump就可以显示接收到的报文了。


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

5300 积分
55 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条