nano的CAN通信

article/2025/8/30 0:49:54

我买的是微雪的树莓派用的SPI转CAN。现在用在jetson nano上。我看了一下俩模块的芯片用的都是一样的,引脚也都对得上,所以我就打算拿这个模块给nano做can通信。

具备CAN功能,使用SPI接口CAN控制器MCP2515,搭配收发器SN65HVD230。 Microchip 的 MCP2515是一款CAN协议控制器,完全支持 CAN V2.0B 技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。 MCP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的报文。 CAN 控制器的输出引脚 Tx 接到 SN65HVD230 的数据
输入端 D,可将此 CAN 节点发送的数据传送到 CAN 网络中;而 CAN 控制器的接收引脚 Rx 和 SN65HVD230 的数据输出端R 相连,用于接收数据。
我购买的针对树莓派用的can扩展板

总之开始安装

专门为了nano做的can通信转接板
在这里插入图片描述
minicom可以通过串口控制外部的硬件设备.适于在linux通过超级终端对嵌入式设备行管理.同样也可以使用minicom对外置Modem进行控制.
linux超级终端minicom的使用方法
minicom 是一款串口终端调试工具

在这里插入图片描述
使用/etc/modules-load.d/来配置系统启动时加载哪些模块
Linux模块加载流程及如何让系统开机自动加载模块

在这里插入图片描述
按照网页教程步骤,可以看到我们的nano的spi1引脚和我的can模块上的spi引脚对应

【艹 设置完重启失败,现在显示屏一直黑屏,只能重新烧录镜像。重新烧录重新操作之后教程没问题了,但我这边模块引脚和波特率对不上】

安装好之后有这么几个问题

  1. 我买的是微雪的树莓派的SPI转can,那个模块把中断输出引脚设置在了nano的20号引脚的位置,我应该把模块引脚设置改成26号引脚。不过看nano的SPI转can的模块也是乱设置中断引脚的位置。可能这个改不改无所谓。
  2. 波特率对不上
  3. 解压来的代码文件只可读
# 商家写的nano的cantest.py  测试例程将会在接收到信息时发送1-8
#!/usr/bin/env python
# -*- coding: utf-8 -*-import MCP2515
import timeprint("--------------------------------------------------------")
# try:
# This setup is referred to CAN SPI click mounted on flip n click device slot A 
can = MCP2515.MCP2515()
print("init...")
can.Init()
print("send data...")
data = [1, 2, 3, 4, 5, 6, 7, 8]
can.Send(data, len(data))readbuf = []
# while(1):
while(1):readbuf = can.Receive()print(readbuf)time.sleep(0.5)print("--------------------------------------------------------")
# except Exception as e:# print(e)

关于文件权限的问题,我在鸟哥那边学过

sudo chmod 777 -R 文件夹名/
这句就把所有权限都开放了

0(0+0+0)-没有权限。
1(0+0+1)-仅执行权限。
2(0+2+0)-仅写入权限。
3(0+2+1)-写入和执行权限。
4(4+0+0)-只读权限。
5(4+0+1)-读取和执行权限。
6(4+2+0)-读写权限。
7(4+2+1)-读取、写入和执行权限。

通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r–(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可。

chmod 755 设置用户的权限为:
1.文件所有者可读可写可执行
2.与文件所有者同属一个用户组的其他用户可读可执行
3.其它用户组可读可执行

can的波特率

MCP2515波特率配置
因为我这个模块是12M晶振,而程序里是默认8M晶振,所以要按照手册重新计算通信阶段的各个占比,参考上面那个博客就可以了。
在这里插入图片描述
计算过程比较复杂,还是需要一点经验的。说实话,要是有那功夫去理解我上面的计算过程,还不如直接看博客自己推导。

需要了解的还有500Kbps是对应的2us的Tbit。由1/2us得到。同理可知250Kbps是需要4us,125Kbps为8us

在这里插入图片描述
【当然了,我没挨个去测试】
在这里插入图片描述
改好这两处就能通信了【要先连好硬件哈】

在代码目录下 执行

python cantest.py

就能接收信息了
在这里插入图片描述
所以引脚的事确实没关系,我现在用的是29号引脚作为中断输出


运行时的sudo和import和pip的爱恨纠葛

过了许久,我又来用这个,结果执行python cantest.py 显示

no module named ‘spidev’

我重新去检查了以前的各项设置以及挂载的spi都没问题。
然后我就
sudo python cantest.py
笑死,成功了。
但sudo python3 cantest.py 会失败
在这里插入图片描述
后来用pip3把以前的那俩东西又安装一遍
sudo pip3 install pyserial
sudo pip3 install spidev==3.1
这样再执行
sudo python3 cantest.py
就也可以成功了。
但sudo仍然不能缺,很怪,明明已经给了权限777了

我们所使用的系统命令如ls/pwd/reboot,实际上是被加入了文件夹后然后将这个文件夹目录加入环境变量,这种之后便成为了我们日常所使用的“命令”。环境变量也有着不同的级别,有的环境变量是针对于系统的环境变量,而有的环境变量是针对于用户的。
只需使用 echo $PATH 命令便可以显示当前环境的环境变量
实际上,sudo命令使用时将PATH环境变量进行了重置,目的显然是要限制用户运行 sudo 命令的范围
linux下 su & su - & sudo命令对环境变量造成的影响 &设置环境变量

  1. 下载源码,用python编译
  2. 看pip装到哪了,加到环境变量 Python: 通过 pip 安装第三方包后依然不能 import

笑死,上面引用里的方法都不能用
就是pip安装的那句命令不要加sudo就好了

琢磨信息发送

在这里插入图片描述
商家设置成这样 只做了一个send函数。想发扩展帧估计只能自己写。

附图

nano的对应的引脚接口

这个是啥也不设置的时候默认就有的引脚功能
对,这个是我的nano的对应的引脚接口
nano的另一个更详细的表,是可以设置开启的对应引脚。
在这里插入图片描述

这个是nano的设置界面
在这里插入图片描述
【这里或许就是设备树使能了吧】

微雪的nano专用的SPI转CAN模块

在这里插入图片描述

微雪的树莓派专用的SPI转CAN模块

我购买的针对树莓派用的can扩展板
在这里插入图片描述

扩展阅读

英伟达Jeston nano<3>使用Python实现三种方式串口通信
Jetson Nano 配置40引脚扩展接头
linux 编辑文件时提示swp文件已经存在

MCP2515的英文手册

树莓派CAN通讯教程 - MCP2515


http://chatgpt.dhexx.cn/article/cl3FdX9m.shtml

相关文章

CAN通信基础知识

CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。 CAN协议经过…

CAN通信详解

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controller Area Network 的…

CAN通信总结

CAN通信总结 基本介绍 ​ 1. CAN通过两条通信线(双绞线)产生的电压差传输数据,一个CAN网络里的所有节点都挂在这两条通信线上,使用差分信号半双工通信。 ​ 2. CAN总线是广播类型的总线。所有节点都将始终接收所有通信&#xf…

CAN 通信原理学习

文章目录 CAN通信一:基本概述1.1 can总线是什么1.2 can总线协议的特点1.3 can的网络通信结构1.3.11.3.2 can协议网络层次 二:socket can在通信网络中的应用三 一个程序 CAN通信 一:基本概述 1.1 can总线是什么 CAN 是 Controller Area Net…

CAN通信协议

在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地…

CAN通信讲解(1)——基本知识

本文注意参考了《CAN入门书》,源于此书图片不再特殊标注 目录 1.1 CAN总线背景1.2 CAN总线定义1.3 CAN总线信号特性1.4 CAN总线传输1.5 OSI基本参照模型和CAN总线协议 1.1 CAN总线背景 为减少汽车线束数量,1986年,博世开发出面向汽车的CAN通…

CAN通信

通讯方式 UART:(Universal Asynchronous Receiver Transmitter:通用异步收发器/异步串行通信口),是一种通用的串行数据总线,用于异步通信,支持全双工。它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线…

CAN通信----基本原理

STM32标准库开发 文章链接: STM32F103标准库开发----目录 STM32F103标准库开发----CAN总线通信实验----初始化/波特率 STM32F103标准库开发----CAN总线通信实验----发送和接收 资源链接: 本例程已经调试成功,下载即可使用。 STM32F103标准库…

CAN通信详解(全)

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controller Area Network 的缩…

Tomcat优化禁用AJP协议

登录tomcat 在服务状态页面中可以看到,默认状态下会启用AJP服务,并且占用8009端口。 什么是AJP呢? AJP(Apache JServer Protocol) AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了…

tomcat启动出现错误:Failed to destroy end point associated with ProtocolHandler[“ajp-nio-8009“](解决非常简单)

tomcat启跑不起来而且报了很多莫名其妙的错误不知道从哪里找起 启动服务器出现这个错误 console提示:Failed to destroy end point associated with ProtocolHandler[“ajp-nio-8009”] 直接看web.xml的url-pattern这个属性是不是哪一个少了‘/’ 或者 如果没有…

Java安全-Tomcat AJP 文件包含漏洞(CVE-2020-1938)幽灵猫漏洞复现

Tomcat AJP 文件包含漏洞(CVE-2020-1938) CVE-2020-1938 又名GhostCat ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat 上所有 webapp 目录下的任意文件 该漏洞是一个单独的文件包含漏洞,依赖…

Aapache Tomcat AJP 文件包含漏洞-(CVE-2020-1938/CNVD-2020-10487)

漏洞编号 CVE-2020-1938 CNVD-2020-10487 靶机环境 Vulhub虚拟靶场 vulhub-master/tomcat/CVE-2020-1938 启动docker: 启动成功: 0x00 漏洞简介 2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏…

Apache-Tomcat-Ajp漏洞测试与修复

说明 Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。此漏洞为文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件&#xf…

解决AJP漏洞操作记录

前言 最近Tomcat爆出AJP漏洞,升级对应版本的Tomcat是比较好的规避方法。本文将记录笔者在升级Tomcat 9.0.31时踩过的一些坑,以便大家能快速升级Tomcat。 本文只针对Tomcat 9.0.31版本的操作记录。 Tomcat受影响版本: Apache Tomcat 9.x &l…

tomcat中ajp及8009端口用处

tomcat常用于提供servlet/jsp容器服务,简单方便、使用高效。但是tomcat处理静态文件资源的性能不足(应该是serviece部分),同时,如果用户直接与tomcat进行http的连接获取静态资源(连接器connector部分&#…

CVE-2020-1938 :Apache Tomcat AJP 漏洞复现和分析

一、漏洞描述 Apache Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器.默认情况下,Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互.但Apache Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意的AJP请求,可以读取或者包含Web应…

网络抓包方式复现Tomcat- AJP协议文件读取/命令执行漏洞(CVE-2020-1938 / CNVD-2020-10487)

目录 测试是否安装成功​编辑 基础简介 Tomcat Connector(连接器) ​编辑Servlet(服务程序) Tomcat内部处理请求流程 文件读取漏洞 抓包复现 需要将下图中抓取到的数据包修改一下 ​编辑 替换成二进制数据的形式: 运行结果 ​编辑 创建脚本文件&#xf…

AJP协议

由于tomcat的html和图片解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而tomcat和其他服务器的集成,就是通过ajp协议来完成的。AJP协议AJP13是定向包协议。因为…

Apache Tomcat AJP协议文件读取与包含

永远也不要忘记能够笑的坚强,就算受伤,我也从不彷徨。 0x01.漏洞情况分析 Tomcat是Apache软件基金会Jakarta 项目中的一个核心项目,作为目前比较流行的Web应用服务器,深受Java爱好者的喜爱,并得到了部分软件开发商的…