• 树莓派4b+mcp2515实现CAN总线通讯和系统编程(一.配置树莓派CAN总线接口)


    前言

    树莓派本身是没有CAN通讯能力的,但他有mcp2515模块的驱动,可以通过SPI来控制mcp2515进行CAN的通讯。
    本章主要讲,如何使能树莓派的mcp2515驱动,然后用can-utils的工具来测试CAN的通讯。

    硬件连线

    树莓派和mcp2515模块是通过spi进行通讯的,除了spi的4根线mosi、miso、sck、cs,和电源的vcc和gnd,我们还需要连接MCP2515的INT引脚。
    树莓派引脚图如下:
    在这里插入图片描述

    树莓派的引脚分布参考:https://pinout.xyz/pinout/ground
    连线如下:

    RPi Pin    RPi Label     CAN Module
    02---------5V------------VCC
    09---------GND-----------GND
    19---------GPIO10--------MOSI (SI)
    21---------GPIO9---------MISO (SO)
    22---------GPIO25--------INT
    23---------GPIO11--------SCK
    24---------GPIO8---------CS
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    树莓派环境准备

    启用树莓派ssh

    输入命令sudo raspi-config,进入树莓派的设置工具界面,选择interface option=》SSH,开启SSH功能。这样就可以远程连接树莓派,而不需要占用鼠标键盘和显示器了。

    推荐一款免费开源的ssh工具,FinalShell, 替代XSHELL的ssh连接工具,也具备ftp的功能.
    官网:https://www.hostbuf.com/

    请添加图片描述

    启用mcp2515驱动

    树莓派内置了mcp2515模块的驱动,

    • sudo nano /boot/config.txt,编辑该文件,增加如下内容。
    dtparam=spi=on
    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
    #dtoverlay=spi1-1cs #该命令是打开spi1,如果不用spi1可以不加
    
    • 1
    • 2
    • 3

    dt(device tree)设备树
    dtoverlay 设备树覆盖,动态覆盖设备树

    • 保存好文件后,重启sudo reboot -h now

    • 重启后,ifconfig -a,可以看到多了一个can0的网络
      在这里插入图片描述

    • 输入以下命令

    ls /sys/bus/spi/devices/spi0.0/net
    dmesg | grep -i can
    
    • 1
    • 2

    得到一下结果,证明成功加载mcp2515。
    l's

    下载can-utils工具

    sudo apt install can-utils

    测试CAN通讯

    开启CAN网卡

    sudo ip link set can0 type can bitrate 500000 loopback on #设置can0网卡波特率250k,回环模式
    sudo ip link set can0 up #开启can0网卡
    
    • 1
    • 2

    开启完成后,输入ifconfig -a,可看到can0网卡状态变成了,up和running状态
    在这里插入图片描述

    测试发送和接收

    在终端中输入 candump can0,开启接收can总线的信息。
    新建一个终端,输入 cansend can0 123#1122334455667788,往can总线上发送,canid为0x123,数据为1122334455667788的报文。
    结果如下,则代表已经正确开启can通讯:
    接收报文的终端:
    在这里插入图片描述
    发送报文的终端:
    在这里插入图片描述

  • 相关阅读:
    Spring中IOC容器的基本配置使用
    ChatGPT、GPT-4 Turbo接口调用
    Cobbler 搭建方法
    Qt界面实现中英文切换
    Linux :vim ,gcc ,makefile 三件套之vim的基本使用
    TypeScript 学习笔记
    CSAPP BOMB LAB part2
    淘宝获取收货地址列表的 API
    【JavaSE】多线程篇(五)线程专项练习题
    世界坐标系,相机坐标系,像素坐标系转换 详细说明(附代码)
  • 原文地址:https://blog.csdn.net/weixin_42968757/article/details/127774345