nano的CAN通信

2023-05-16

我买的是微雪的树莓派用的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 time

print("--------------------------------------------------------")
# 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nano的CAN通信 的相关文章

  • CAN通信数据帧介绍

    CAN通信有五个帧 xff0c 其中最重要的是数据帧 xff01 xff01 xff01 xff01 我们下面开始讨论数据帧 一 数据帧的格式 xff08 数据帧有七个段组成 xff09 xff0c 帧起始 表示数据帧开始的段 xff0c
  • CAN通信矩阵的理解(CAN报文信号的属性)

    CAN通信矩阵 1 CAN通信矩阵是什么 CAN通信矩阵 xff08 CAN Communication Matrix xff09 通常由整车厂完成定义 xff0c 车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享 我们知道C
  • jetson nano 编译pyrealsense2 运行t265

    在win10 的环境下 xff0c 安装pyrealsense2 xff0c 只需要简单的pip就可以了 xff0c 没想到在jetson nano下却花了那么多时间和精力 其实解决方案网上都有 xff0c 但是比较零碎 xff0c 只能遇
  • CAN总线协议:标准CAN和扩展CAN

    CAN通讯协议是一个载波侦听 基于报文优先级碰撞检测和仲裁 xff08 CSMA CD 43 AMP xff09 的多路访问协议 CSMA的意思是总线上的每一个节点在企图发送报文前 xff0c 必须要监听总线 xff0c 当总线处于空闲时
  • 在Jetson Nano上编译FastDeploy

    1 C 43 43 库的编译 span class token function git span clone https github com PaddlePaddle FastDeploy git span class token bu
  • CAN扩展帧过滤器设置

    纪要 CAN xff08 Controller Area Network xff09 总线是一种广泛应用于工业控制和汽车电子领域的串行通信协议 在CAN总线中 xff0c 节点间通过CAN总线发送和接收消息 每个CAN帧包含一个标准或扩展标
  • IMX6ULL与STM32F103的CAN通信实现

    IMX6ULL与STM32F103的CAN通信实现 硬件连接驱动层实现IMX6ULLSTM32F103ZET6 应用层实现IMX6ULLSTM32F103ZET6 结果 在上一篇博文中 xff0c 我们利用USBCAN设备及其上位机软件 x
  • linux-can编程(一)

    建立can的socket int can create socket char name int fd struct sockaddr can addr struct ifreq ifr socklen t len 61 sizeof ad
  • 在Jetson Nano上实现单目相机 apritag_ros识别

    一 xff0c apritag ros安装 最开始采用克隆源码编译的方式进行安装 xff0c 后来在Jetson nano上有opencv4与opencv3的依赖问题 xff0c 后来索性直接采用二进制安装 xff1a sudo apt g
  • 链接mysql数据库 Navicat,2003-can‘t connect to MYSQL server on192.168.1.122 (10060)

    可能的原因如下 xff1a 一 关闭防火墙 xff1b 1 firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 x
  • CAN 与 CANFD数据报文格式解读

    ISO 11898 1 2015 协议详细定义了CAN网络报文的格式 xff0c 包含了传统CAN与CANFD帧格式 CAN网络的帧类型共有4种 xff0c 分别为数据帧 远程帧 错误帧 过载帧 本章将主要介绍CAN网络数据帧报文的格式 x
  • kvaser pcie can 在ros中使用socketcan开发

    kvaser pcie can 在ros中使用socketcan开发 0 系统配置 Ubuntu 16 04 6 LTS Linux version 4 15 0 45 generic 1 官网下载地址 https www kvaser c
  • Linux之Nano文本编辑器的使用

    nano 的使用其实很简单 你可以直接加上档名就能够开启一个旧档或新档 比如 nano text txt 第一行反白的部分 那仅是在宣告 nano 的版本的档名 File text txt 而已 之后你会看到最底下的三行 分别是档案的状态
  • 如何使用 Linux 命令行文本编辑器 Nano

    使用命令行时 您经常需要创建或编辑文本文件 Vim 和 Emacs 是两个最强大和流行的命令行编辑器 它们都有一个陡峭的学习曲线 可能会让新用户感到害怕 对于那些需要简单编辑器的人来说 有 nano GNU nano 是一款适用于 Unix
  • CAN与CANOpen(一)

    CAN与CANOpen 一 基本概念 CAN与CANOpen 二 报文格式 CAN与CANOpen 三 错误处理 CAN与CANOpen 四 CANOpen对象字典 CAN与CANOpen 五 PDO和SDO CAN与CANOpen 六 网
  • STM32学习心得三十二:CAN通信基础知识、原理、配置及实验

    记录一下 方便以后翻阅 主要内容 1 CAN通信基础知识 2 STM32 CAN控制器简介 3 相关实验代码解读 参考资料 STM32中文参考手册 V10 第22章 控制器局域网 bxCAN 实验功能 CAN实验需要两个开发板 系统启动后
  • STM32 CAN/CANFD软件快速配置(HAL库版本)

    STM32 CAN CANFD软件快速配置 HAL库版本 目录 STM32 CAN CANFD软件快速配置 HAL库版本 前言 1 软件编程 1 1 建立工程 1 2 初始化 1 2 1 引脚设置 1 2 2 CAN基本参数设置 1 2 3
  • Ubuntu 周立功CAN分析仪 USBCAN-II 驱动

    首先从官网https www zlg cn Index Search search key linux的下载资料界面下载 Linux驱动 USBCAN I I II II 2A I MINI安装驱动 USBCAN II新版驱动基于libus
  • jetson nano 安装pytorch装不上

    可以尝试 先把依赖装上在安装whl文件 安装依赖的指令如下 sudo apt get install libopenblas base libopenmpi dev
  • pico示波器使用

    文章目录 Pico示波器保存波形 Pico示波器录制数据 Pico示波器解析CAN报文 Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形 在示波器上选择要保存的波形 连接示波器到计算机上 可以使用USB或者Ethernet连接

随机推荐

  • std::set_difference用法

    std set difference 是 C 43 43 STL 中的一个算法 xff0c 用于计算两个有序范围之间的差集 xff0c 并将结果存储到另一个有序范围中 std set difference 的函数签名如下 xff1a spa
  • __builtin_xxx指令学习【1】__builtin_expect

    builtin expect是GCC编译器提供的一个内置函数 xff0c 用于告诉编译器一个分支的执行概率 xff0c 以便编译器在生成机器码时进行优化 它的语法如下 xff1a span class token function buil
  • __builtin_xxx指令学习【2】__builtin_prefetch

    builtin prefetch是GCC编译器提供的一个内置函数 xff0c 用于预取数据到CPU的缓存中 xff0c 以便提高程序的执行效率 它的语法如下 xff1a builtin prefetch const void addr in
  • __builtin_xxx指令学习【3】__builtin_popcount & __builtin_popcountll

    builtin popcount是GCC和Clang编译器提供的一个内置函数 xff0c 用于计算一个整数中二进制位为1的个数 该函数的使用背景是在一些位运算和计算机视觉等领域中 xff0c 需要对二进制数据进行处理和分析 xff0c 而二
  • 当arduino遇到树莓派(usb串口)

    arduino与树莓派cm4通过usb串口连接 xff1a 问题描述 前两天尝试了很久arduino和树莓派连接 终于找到了连接的方法 xff01 可恶 这是在简书找到的过程 主要是先在树莓派端导serial包 pip install se
  • Linux的rc.local自启动服务

    Linux的rc local自启动服务 网址 xff1a http blog csdn net 21aspnet article details 6826659 Linux有自己一套完整的启动体系 xff0c 抓住了linux启动的脉络 x
  • __builtin_xxx指令学习【4】__builtin_clz&__builtin_ctz & __builtin_clzll & __builtin_ctzll

    builtin clz是GCC和Clang编译器提供的一个内置函数 xff0c 用于计算一个整数的二进制表示中 xff0c 从最高位开始连续的0的个数 该函数的使用背景是在一些位运算和计算机视觉等领域中 xff0c 需要对二进制数据进行处理
  • __builtin_xxx指令学习【5】__builtin_bswap16/32/64

    builtin bswap16 32 64是GCC和Clang编译器提供的内置函数 xff0c 用于交换一个整数的字节顺序 其中 xff0c builtin bswap16用于交换一个16位整数的字节顺序 xff0c builtin bsw
  • 【Python】@cache装饰器使用 (依赖cachetools)

    介绍 cachetools 是一个 Python 缓存库 xff0c 可以用于缓存函数的计算结果 xff0c 以提高程序的性能和响应速度 使用 cachetools 可以避免重复计算 减少网络请求 降低数据库负载等问题 xff0c 从而提高
  • Python常见装饰器使用(实用向)

    目录 1 96 64 staticmethod 96 2 96 64 classmethod 96 3 96 64 classmethod 96 与 96 64 staticmethod 96 比较4 96 64 property 96 5
  • 【C++】std::transform、std::back_inserter使用

    std transform函数可以用于对一个序列中的每个元素进行转换 xff0c 并将结果存储到另一个序列中 们需要传递三个参数 xff1a 源序列的起始迭代器 源序列的结束迭代器和目标序列的起始迭代器 此外 xff0c 我们还需要传递一个
  • std::inner_product与std::accumulate初始值设置踩坑

    std inner product函数可以用于计算两个序列的内积 在这个函数中 xff0c 我们需要传递四个参数 xff1a 两个源序列的起始迭代器 一个初始值和一个二元函数对象 std inner product函数将对两个源序列中的每个
  • 树莓派无法连接vnc,树莓派 vnc viewer 显示 cannot currently show the desktop 的解决方法

    最近新买了一块树莓派4B xff0c 正常启动ssh xff0c vnc服务 但vnc viewer上却显示黑屏 cannot currently show the desktop 在网上查找了许多解决方法 xff0c 都不能用 但后来调整
  • 'gbk' codec can't encode character '\xa0' XXX解决方法

    在运行py文件时 xff0c 出现 UnicodeEncodeError gbk codec can t encode character xa0 in position XXX 让人摸不着头脑 注意这三个方面 xff0c 一般都能解决 1
  • 基于stm32cubeIDE学习can通信

    can通信 TO DO 1 CAN FilterTypeDef 中的SlaveStartFilterBank 为从过滤器配置 xff0c 用来选择从过滤器的寄存器号 当选择双CAN模式的时候 xff0c 这个参数要跟CAN2的filtern
  • jetson nano 的GPIO使用

    依次输入以下指令 python span class token comment 进入python编程界面 span span class token operator gt gt span span class token operato
  • 多态的基础语法

    1 向上转型和向下转型的概念 向上转型 自动转型 xff1a 子类 gt 父类 当我们是用父类引用指向子类对象的时候 xff0c 系统会自动向上转型 向下转型 强制转型 xff1a 父类 gt 子类 当父类引用指向子类对象时 xff0c 父
  • qt画个灰度直方图

    步骤 导入图表库在ui界面新建一个wight窗口并提升为那个图表库的类型写函数 输入参数是 xff08 图表 xff0c 待处理图片 xff09 图表的横轴是像素值 从0 255 纵轴是此灰度的像素点数量或者占比所以要挨个判断图像里的每一个
  • 找特征点的算法 SIFT和SURF算法

    SIFT 特征点算法 SIFT算法是记录每个极值点附近的梯度方向 xff0c 并以一个主要梯度方向为基准来兼顾特征旋转的情况 它通过不同模糊程度的灰度图相减找极值 xff0c 筛选确定出真实关键点后按梯度和权重求出关键点的主方向 xff0c
  • nano的CAN通信

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