精华内容
下载资源
问答
  • 前段时间项目用到can总线,用的是树莓派,于是写了一个mcp2515的驱动。不知道为啥wiringPi集成的spi函数不能实现,于是就用了bcm2835的spi函数,实测波形稳定,效果不错。
  • 树莓派上使用CAN_BUS(即CAN总线技术)来控制小物件对我来说很外行,概念也不深,只能按照小物件的说明来使用,但是使用... 硬件相关问题关于MCP2515 SPI转CAN的芯片,可能有多个“款式”的存在(有些教程里的跟我的...

    在树莓派上使用CAN_BUS(即CAN总线技术)来控制小物件对我来说很外行,概念也不深,只能按照小物件的说明来使用,但是使用之前需要进行与树莓派的连接,折腾了好多,这里简单做个梳理,但不过多介绍….因为自己对CAN协议也是一窍不通,囧~

    我之前的完成过程基本依靠Google,贴上我参考的国外教程:

    1. 硬件相关问题

    关于MCP2515 SPI转CAN的芯片,可能有多个“款式”的存在(有些教程里的跟我的芯片不一样),但是必要的针脚的插法都是一致的。1

    2

    3

    4

    5

    6

    7

    8RPi Pin RPi Label CAN Module

    02---------5V------------VCC

    06---------GND-----------GND

    19---------GPIO10--------MOSI (SI)

    21---------GPIO9---------MISO (SO)

    22---------GPIO25--------INT

    23---------GPIO11--------SCK

    24---------GPIO8---------CS其他没什么的说的,在肯定自己接线没错误之后,我们需要怀疑芯片是不是坏的,我试的时候前面两个都是坏的,导致挂不上去

    2. 配置树莓派

    编辑/boot/config.txt并添加以下行,将振荡器参数设置为模块上存在的振荡器参数。大多数模块使用16MHz振荡器作为时钟,但也有使用8MHz(即oscillator=8000000)。你可以通过查看芯片来确定频率。1

    2

    3dtparam=spi=on

    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25

    dtoverlay=spi-bcm2835-overlay

    通过uname -a查看树莓派内核,如果内核为4.4.x,则需要将最后一行配置修改:1

    2

    3dtparam=spi=on

    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25

    dtoverlay=spi1-1cs

    3. 挂载CAN设备1

    2

    3sudo apt-get update

    sudo apt-get install can-utils

    sudo reboot

    等机器起来之后,我们可以先查看连接是否准确,有没有这个MCP2515设备,有了我们才能继续挂载。1

    2

    3

    4[email protected]:~ $ ls /sys/bus/spi/devices/spi0.0

    driver modalias net of_node subsystem uevent

    [email protected]:~ $ ls /sys/bus/spi/devices/spi0.0/net

    can0

    如果连接不准确基本上看不到上面的net文件夹,也就没有can0这个设备了

    之后,设置你想要的波特率挂载,我这里用的是125000,sudo ip link set can0 up type can bitrate 125000,挂载成功后,就能在ifconfig中看到:1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13[email protected]:~ $ sudo ifconfig

    can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

    UP RUNNING NOARP MTU:16 Metric:1

    RX packets:0 errors:0 dropped:0 overruns:0 frame:0

    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

    collisions:0 txqueuelen:10

    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

    etho xxxx

    ....

    ....

    wlan0 xxxx

    ....

    ....

    每当机器重启之后,这个挂载就会失效,需重新挂载。可以直接做成服务或者放在rc.local中,开机自动启动就行

    4. 发送CAN数据

    Usage: cansend 1cansend can0 127#DEADBEEF

    具体的can_frame格式也不用担心,当你格式数据输的不准确时,命令会自动提示所需的格式。

    同时可以再开个终端查看收到的数据:1candump can0

    5. 使用Python第三方库向CAN发送数据

    当有需求要将功能写入Python脚本中时,可以使用python-can模块,具体的用法这里不多讲,看官方手册即可。

    6.尾声

    对CAN BUS知之甚少,只能依葫芦画瓢,一步一步慢慢走验证结果,当觉得自己的操作都正确却没有得到正确结果时,怀疑一下硬件本身是否有问题!

    展开全文
  • 树莓派+MCP2515 实现 CAN 通信

    千次阅读 2019-12-13 10:11:35
    项目原件控制由 Adruino 转 CAN , 基础配置过程...任何带SPI口的设备都可以使用MCP2515进行通信 软件 备注 can-utils apt / can 口测试 python-can py2 py3 / python脚本 can 收发 1 连线 按照MCP251...

    项目原件控制由 AdruinoCAN , 基础配置过程。
    在这里插入图片描述

    硬件 数量
    树莓派3 2
    杜邦线 6 * 2
    MCP2515 2

    任何带SPI口的设备都可以使用MCP2515进行通信



    软件 备注
    can-utils apt / can 口测试
    python-can py2 py3 / python脚本 can 收发

    1 连线

    连线细节按照MCP2515引脚连接后,有如图两点需要注意
    1 . CAN 总线可以直接用 1 所示连接
    2. 1对1 CAN 网测试需要把 2 所示穿起来才可以通信(CAN 网络需两个 120Ω总线电阻)

    2 配置CAN

    2.1 打开SPI

    sudo raspi-config
    

    Interfacing Options - SPI
    打开SPI

    2.2 配置CAN

    sudo vim /boot/config.txt
    

    dtparam=spi=on 下一行添加

    dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25,spimaxfrequency=1000000 
    
    sudo reboot 
    
    dmesg | grep -i '\(can\|spi\)'
    

    会出现如下结果
    Output
    配置网络can口 ( 仅有一个can口 )

    sudo ip link set can0 type can bitrate 500000 restart-ms 100
    sudo ifconfig can0 up
    

    添加启动项

    sudo vim /etc/network/interfaces
    

    添加

    allow-hotplug can0
    iface can0 can static
        bitrate 500000
        restart-ms 100
    

    3 测试

    3.1 使用 can-utils

    sudo apt install can-utils
    

    发送

    cansend can0 111#00000000
    

    接收

    candump can0
    

    3.2 使用 python-can

    pip3 install python-can
    
    import can 
    
    bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000)
    
    msg_snd = can.Message(arbitration_id=0xc0ffee,
                          data=[0, 25, 0, 1, 3, 1, 4, 1],
                          is_extended_id=True)
                          
    # send message
    try:
            bus.send(msg_snd)
            print("Message sent on {}".format(bus.channel_info))
    except can.CanError:
            print("Message NOT sent")
    
    
    # recieve message
    msg_recv = bus.recv(0.0)
    
    展开全文
  • 在开始之前,硬件方面你需要一块树莓派4,MCP2515模块和一个CAN分析仪。我这里的MCP2515模块的晶振为8M的树莓派4内核为:pi@raspberrypi:~ $ uname -aLinux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41...

    在开始之前,硬件方面你需要一块树莓派4,MCP2515模块和一个CAN分析仪。

    我这里的MCP2515模块的晶振为8M的

    树莓派4内核为:

    pi@raspberrypi:~ $ uname -a

    Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

    树莓派与MCP2515模块的连接方式为:

    PIN Pi ----------------> MCP2515

    #02 5V -----------------> VCC

    #06 GND ----------------> GND

    #24 (SPI_CE0)GPIO08 ----> CS

    #21 (SPI_MISO)GPIO09 ---> SO

    #19 (SPI_MOSI)GPIO10 ---> SI

    #23 (SPI_CLK)GPIO11 ----> SCK

    #22 (GPIO_GEN6)GPIO25 --> INT

    硬件工作准备好后,就让我们开始吧~!

    1、首先,你要打开你的树莓派SPI功能,可以通过编辑/boot/config.txt文件来实现:

    pi@raspberrypi:~ $ sudo vi /boot/config.txt

    在config.txt文件中找到dtparam=spi=on,把它前面的#号去掉,也就是取消这一行的注释。然后在下面新起一行,加入下面的语句:

    dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25 dtoverlay=spi-bcm2835

    这一步做完以后,你的config.txt文件可能看起来是这样的:

    2、安装CAN tools:

    pi@raspberrypi:~ $ sudo apt-get install can-utils

    安装好之后重启树莓派。

    3、看看你的SPI设备中,是否有CAN接口:

    pi@raspberrypi:~ $ ls /sys/bus/spi/devices/spi0.0/net/

    can0

    如果你做完第2步后,成功在/net/目录下有can0这个文件夹,那就说明你的CAN的收发功能能够正常使用。

    4、设置你的CAN通信接口:

    pi@raspberrypi:~ $ sudo ip link set can0 up type can bitrate 125000

    5、向CAN分析仪发送一些数据

    首先把MCP2515模块和CAN分析仪连接到一起,再把分析仪连上电脑,打开分析仪专用软件USB_CAN_Tool.exe,打开CAN接收,启动设备:

    这里CAN参数的波特率设置为125k。

    在树莓派终端向CAN分析仪发送一些数据:

    pi@raspberrypi:~ $ cansend can0 123#6666666666666666

    可以在USB_CAN_Tool中看到树莓派发送过来的数据:

    6、向树莓派发送一些数据

    首先,我们要让树莓派准备好接收CAN数据,在终端输入:

    pi@raspberrypi:~ $ candump can0

    树莓派会进入接收数据的模式,我们用USB_CAN_Tool发送一个ID为0x0100,数据位为99 99 99 99 99 99 99 99的数据,如下图:

    点击发送消息后,在树莓派终端可以看到接收到的数据:

    按下Ctrl+C即可退出接收模式。

    7、关闭CAN接口

    pi@raspberrypi:~ $ sudo ip link set can0 down

    进阶

    怎么样才能在树莓派保存接收过来的CAN数据呢?

    比如说把接收过来的CAN数据保存在本地txt文件,或者将CAN数据在IDE中的控制台中显示(print出来),而不是在树莓派终端显示。

    我这里用树莓派自带的Thonny IDE来演示把树莓派接收到的数据,打印在控制台上。

    首先,需要你在终端设置好CAN通信接口,也就是第4步骤。

    然后,打开Thonny,输入以下python程序:

    import subprocess

    p = subprocess.Popen('candump can0',shell=True,stdout=subprocess.PIPE)

    for i in iter(p.stdout.readline,'b'):

    if not i:

    break

    print(i.decode('gbk'))

    运行,

    然后你就可以用USB_CAN_Tool向树莓派发CAN数据啦!而且这些数据是实时的,也就是说你可以一直向树莓派发数据,而Thonny的控制台也会持续显示接收到的数据。

    如果你想保存数据到本地或者另作他用,只需要更改一点程序就行了,这里就不赘述了。

    以上。

    展开全文
  • 硬件数量树莓派32杜邦线6 * 2MCP25152任何带SPI口的设备都可以使用MCP2515进行通信软件备注can-utilsapt / can 口测试python-canpy2 py3 / python脚本 can 收发1 连线按照MCP2515引脚连接后,有如图两点需要注意1 ....

    项目原件控制由 Adruino 转 CAN , 基础配置过程。

    硬件

    数量

    树莓派3

    2

    杜邦线

    6 * 2

    MCP2515

    2

    任何带SPI口的设备都可以使用MCP2515进行通信

    软件

    备注

    can-utils

    apt / can 口测试

    python-can

    py2 py3 / python脚本 can 收发

    1 连线

    按照MCP2515引脚连接后,有如图两点需要注意

    1 . CAN 总线可以直接用 1 所示连接

    2. 1对1 CAN 网测试需要把 2 所示穿起来才可以通信(CAN 网络需两个 120Ω总线电阻)

    2 配置CAN

    2.1 打开SPI

    sudo raspi-config

    Interfacing Options - SPI

    打开SPI

    2.2 配置CAN

    sudo vim /boot/config.txt

    dtparam=spi=on 下一行添加

    dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25,spimaxfrequency=1000000

    sudo reboot

    dmesg | grep -i '\(can\|spi\)'

    会出现如下结果

    配置网络can口 ( 仅有一个can口 )

    sudo ip link set can0 type can bitrate 500000 restart-ms 100

    sudo ifconfig can0 up

    添加启动项

    sudo vim /etc/network/interfaces

    添加

    allow-hotplug can0

    iface can0 can static

    bitrate 500000

    restart-ms 100

    3 测试

    3.1 使用 can-utils

    sudo apt install can-utils

    发送

    cansend can0 111#00000000

    接收

    candump can0

    3.2 使用 python-can

    pip3 install python-can

    import can

    bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000)

    msg_snd = can.Message(arbitration_id=0xc0ffee,

    data=[0, 25, 0, 1, 3, 1, 4, 1],

    is_extended_id=True)

    # send message

    try:

    bus.send(msg_snd)

    print("Message sent on {}".format(bus.channel_info))

    except can.CanError:

    print("Message NOT sent")

    # recieve message

    msg_recv = bus.recv(0.0)

    展开全文
  • 本文介绍如何在树莓派上配置CAN总线模块MCP2515,并使用基于SocketCAN的工具Can-utils实现CAN消息的收发。 MCP2515概述: Microchip 的MCP2515 是一款独立控制器局域网络(Controller Area Network, CAN)协议...
  • 本文介绍如何在树莓派上配置CAN总线模块MCP2515,并使用基于SocketCAN的工具Can-utils实现CAN消息的收发。MCP2515概述:Microchip 的MCP2515 是一款独立控制器局域网络(Controller Area Network, CAN)协议控制器...
  • 树莓派3 (ubuntu)mcp2515驱动

    千次阅读 2016-08-25 22:30:44
    1、在mcp251x.c文件中添加 static struct mcp251x_platform_data mcp251x_info ={ .oscillator_frequency = 8000000, } static struct spi_board_info spi_board_info[] = { ... .modalias = “mcp2515”,
  • 树莓派3b上完成基于MCP2515和BCM2835的SPI转CAN,实现树莓派与外界的CAN通信。代码可以直接调用CAN_Send_Buffer(unsigned char *CAN_TX_Buf,unsigned char len, unsigned char msgID)和CAN_Receive_Buffer(unsigned ...
  • 树莓派利用MCP2515实现SPI转CAN通信(C) 1、主要硬件 树莓派3b、ubuntu16.04、RS485_CAN_HAT、CAN分析仪 2、主要实现方法 之前使用PYTHON库工具直接实现了CAN的通信,但项目上层使用C++,也因为不知道如何去...
  • 树莓派3b(ubuntu16.04)使用MCP2515

    千次阅读 2016-07-18 22:18:12
    1、首先在系统上添加spi驱动(请参考以前的教程) 2、安装bcm2835 C library 树莓派3b的引脚图: 这里选用11脚作为CS信号。...4、编写MCP2515.c /******************************************
  • 树莓派3b(ubuntu16.04)安装mcp2515驱动

    千次阅读 2016-07-23 16:09:35
    1、在/lib/modules/4.1.19xx/kernel/drivers/net/can下这道can的驱动文件can-dev.ko 然后sudo insmod can-dev.ko 这个文件是mcp251x.ko的依赖文件 2、在spi目录下找到mcp251x.ko文件 然后insmod即可
  • M 0b11110111 #define CH 0 #include "MCP2515.h" #include "bcm2835.h" #include #include #include #include //#include //采用bcm2835spi void MCP2515_WriteByte(unsigned char addr,unsigned char dat) { ...
  • 特点基于Raspberry Pi 40pin GPIO接口,适用于Raspberry Pi系列主板具备CAN功能,使用SPI接口CAN控制器MCP2515,搭配收发器SN65HVD230具备RS485功能,使用UART控制,半双工通讯,收发器为SP34...
  • 基于树莓派3的CAN总线编程

    万次阅读 热门讨论 2016-09-08 10:16:13
    简介树莓派3使用Python控制SPI接口的MCP2515 CAN模块。实现命令行控制CAN的收发。
  • 树莓派GPIO和PWM控制教程

    万次阅读 2019-02-07 11:05:57
    树莓派GPIO和PWM 1. 目的 在汽车电子开发中,CAN通讯是很难避开的一个技术点,当前CAN已经形成了行业内较为稳定的开发...所以笔者尝试使用树莓派配合MCP2515模块,进行低成本的CAN网络节点搭建和报文模拟,试图拓宽...
  • 树莓派ubuntu mate16.04配置实现SPI转CAN

    千次阅读 2018-08-15 21:24:32
    树莓派ubuntu mate16.04配置...RS485 CAN HAT树莓派扩展模块,mcp2515 CAN分析仪 系统 ubuntu mate16.04 desktop 安装必备库 WiringPi 的安装 WiringPi 官网下载: https://projects.drogon.net/raspberr...
  • 树莓派】CAN测试

    2017-01-20 09:11:00
    mcp2515芯片是spi转can,在树莓派上设置开机加载其驱动程序,就可以直接使用,具体详细的使用CAN,博文里没有讲解。 待完善。。。 转载于:https://www.cnblogs.com/isha2088/p/6321838.html...
  • 控制器:MCP2515 收发器:TJA1050
  • 前文说过了硬件使用的是树莓派MCP2515模块。 MCP2515模块 MCP2515是一个CAN总线控制器,其实上面还集成了一个CAN收发器。但是由于MCP2515占主要功能(将SPI总线扩展称CAN总线),因此我们就暂且叫它MCP2515模块...
  • 0x00 前由上一篇文章:CAR_Hacker_车辆CAN环境搭建 介绍了车辆CAN模拟环境的搭建和... 本文使用的工具有:树莓派4b(3b/+也行),MCP2515开发板,CAN接收器(本文采用STM32的开发板作代替)0x01 环境搭建一、树莓派和...
  • 1. 配置CAN接口 编辑启动配置文件: sudo leafpad /boot/config....dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25,spimaxfrequency=1000000 然后重启: sudo reboot 测试接口,执行: dmesg | grep -...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

mcp2515树莓派