天天看点

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

我买的是微雪的树莓派用的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通信转接板

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

minicom可以通过串口控制外部的硬件设备.适于在linux通过超级终端对嵌入式设备行管理.同样也可以使用minicom对外置Modem进行控制.

linux超级终端minicom的使用方法

minicom 是一款串口终端调试工具

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

使用/etc/modules-load.d/来配置系统启动时加载哪些模块

Linux模块加载流程及如何让系统开机自动加载模块

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

按照网页教程步骤,可以看到我们的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晶振,所以要按照手册重新计算通信阶段的各个占比,参考上面那个博客就可以了。

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

计算过程比较复杂,还是需要一点经验的。说实话,要是有那功夫去理解我上面的计算过程,还不如直接看博客自己推导。

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

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

【当然了,我没挨个去测试】

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

改好这两处就能通信了【要先连好硬件哈】

在代码目录下 执行

python cantest.py

就能接收信息了

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

所以引脚的事确实没关系,我现在用的是29号引脚作为中断输出

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

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

no module named ‘spidev’

我重新去检查了以前的各项设置以及挂载的spi都没问题。

然后我就

sudo python cantest.py

笑死,成功了。

但sudo python3 cantest.py 会失败

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

后来用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就好了

琢磨信息发送

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

商家设置成这样 只做了一个send函数。想发扩展帧估计只能自己写。

附图

nano的对应的引脚接口

这个是啥也不设置的时候默认就有的引脚功能

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

nano的另一个更详细的表,是可以设置开启的对应引脚。

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

这个是nano的设置界面

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

【这里或许就是设备树使能了吧】

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

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

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

nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读
nano的CAN通信总之开始安装安装好之后有这么几个问题琢磨信息发送附图扩展阅读

扩展阅读

英伟达Jeston nano<3>使用Python实现三种方式串口通信

Jetson Nano 配置40引脚扩展接头

linux 编辑文件时提示swp文件已经存在

MCP2515的英文手册

树莓派CAN通讯教程 - MCP2515

继续阅读