码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 树莓派4b+mcp2515实现CAN总线通讯和系统编程(一.配置树莓派CAN总线接口)


    文章目录

    • 前言
    • 硬件连线
    • 树莓派环境准备
      • 启用树莓派ssh
      • 启用mcp2515驱动
      • 下载can-utils工具
    • 测试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通讯:
    接收报文的终端:
    在这里插入图片描述
    发送报文的终端:
    在这里插入图片描述

  • 相关阅读:
    计算机毕设(附源码)JAVA-SSM基于框架的旅游管理系统
    Lua05——Lua基本数据类型
    水库大坝安全监测方案,筑牢水库安全防线!
    【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
    安装开源的apache的依赖库apr
    Kubernetes Replicaset
    simple_php (攻防世界)
    简单的咖啡文化静态HTML网页设计作品 DIV布局咖啡馆文化网页模板代码 DW咖啡网站制作成品
    172基于matlab的MPPT智能算法
    【ROS入门】机器人系统仿真——相关组件以及URDF集成Rviz
  • 原文地址:https://blog.csdn.net/weixin_42968757/article/details/127774345
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号