MCP2515模块CAN通信
自己掰扯CAN通信已经快四天了,这过程中不包括了解各类接口设备的过程和接线整理,了解板子的时间。下面就最近研究的一些过程做一总结。
网络上针对CAN总线通信的文章少之又少,刚开始我使用的是EML327这款OBD诊断接口设备妄图想撬开汽车CAN的大门,后来发现,到底是太年轻了。最终找到一篇长安大学车辆工程专业大佬写的MCP2525模块CAN通信,自此才算是正儿八经叩开了汽车CAN通讯的大门。不过各类文章都或多或少存在一些。这里我将问题整理进行总结,以及最关键的获取汽车CAN波特率的问题,都会在本文中提到。
PIN Pi ----------------> MCP2515
#02 5V -----------------> VCC
#06 GND ----------------> GND
#24 (SPI_CE0)GPIO08 ----> CS
#21 (SPI_MISO)GPIO09 ---> SO
#19 (SPI_MOSI)GPIO10 ---> SI
#23 (SPI_CLK)GPIO11 ----> SCK
#22 (GPIO_GEN6)GPIO25 --> INT
然后树莓派上电,开机。
当硬件接线工作操作就绪后,接下来开始在树莓派终端的工作:
1、开启树莓派SPI
首先,我们需要打开树莓派SPI功能,可以通过编辑/boot/config.txt文件来实现:
pi@raspberrypi:~ $ sudo nano /boot/config.txt
默认使用树莓派的nano编辑器,然后我们进行修改。将原本关闭的SPI功能注释取取消掉然后开启。
dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25 dtoverlay=spi-bcm2835
完全修改之后应该是如下的样式:
pi@raspberrypi:~ $ sudo reboot #重启树莓派
2、安装CAN tools:
pi@raspberrypi:~ $ sudo apt-get install can-utilscanutils介绍:工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。这几个程序的功能简述如下:canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。candump:从 CAN 总线接口接收数据并以十六进制形式打印到标准输出,也可以输出到指定文件。canecho:把从 CAN 总线接口接收到的所有数据重新发送到 CAN 总线接口。cansend:往指定的 CAN 总线接口发送指定的数据。cansequence:往指定的 CAN 总线接口自动重复递增数字,也可以指定接收模式并校验检查接收的递增数字。
PS:当完成此处之后,默认在/sys/bus/spi/devices/spi0.0/net/目录下会有CAN0,如果没有的话应该是树莓派开启SPI功能时候执行错误,网络上其他人在此处开启SPI功能五花八门,推荐使用上面第一步提供的方法开启SPI
修改配置后重启树莓派查看MCP2515是否加载成功:
具体的查看方式为:
pi@piv2:~ $ ls /sys/bus/spi/devices/spi0.0/netcan0
3、启动CAN接口:
ip link命令启动can接口:
pi@raspberrypi:~ $ sudo ip link set can0 up type can bitrate 500000 loopback on
bitrate 500000:比特率设置为500k,在这里比特率是波特率的两倍,所以波特率为250k
loopback on : 将MCP2515的工作模式设置为环回模式
4、发送&接收CAN接口数据:
这里使用的是上面安装的CAN Tools这个工具里面的candump和cansend这两个功能。
candump:从 CAN 总线接口接收数据并以十六进制形式打印到标准输出,也可以输出到指定文件。
cansend:往指定的 CAN 总线接口发送指定的数据。
(发送&接收自定义CAN总线数据)
(发送&接收随机CAN总线数据)
5、PPS①关于波特率的获取
在文章中我直接挂载的波特率是bitrate 500000,正确的操作应该是使用示波器连接CANH,CANL获取正确的波特率。可以参考文章【2】中的内容进行了解和实际测试,作者本人会在假期后进行测试,如果成功的话会继续分享。
6、PPS②汽车CAN的获取
相关问题就不细说了,给大家一张图,大家自行判断吧。
7、参考链接
【1】在树莓派上使用基于MCP2515的CAN总线模块(知乎)
【2】示波器CAN波特率(CSDN)
【3】树莓派4使用MCP2515模块CAN通信(SegmentFault)
- 点赞
- 收藏
- 关注作者
评论(0)