• 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通信转接板
    在这里插入图片描述
    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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

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

    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

    在这里插入图片描述
    【当然了,我没挨个去测试】
    在这里插入图片描述
    改好这两处就能通信了【要先连好硬件哈】
    在这里插入图片描述
    所以引脚的事确实没关系,我现在用的是29号引脚作为中断输出

    附图

    nano的对应的引脚接口

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

    这个是nano的设置界面
    在这里插入图片描述

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

    在这里插入图片描述

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

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

    扩展阅读

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

  • 相关阅读:
    元分析 | 大脑同伦共激活的性别差异
    C#实现十大经典排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、桶排序、基数排序
    学习笔记5--高精地图解决方案
    Python基础——注释、缩进、语法、标识符、关键字
    了解神经网络
    第1章 初识AOP
    2023上海工博会,正运动展位现场直击(二)
    TX Text Control .NET Server for ASP.NET 31.X
    【正点原子STM32连载】第十三章 跑马灯实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
    网络安全(黑客)——自学2024
  • 原文地址:https://blog.csdn.net/qq_42635852/article/details/125474602