树莓派有can通信吗_树莓派 RS485 CAN HAT模块使用
产品概述
RS485 CAN HAT 是微雪电子为树莓派开发的一款的带 RS485 和 CAN 通信功能的扩展板,具备 RS485、CAN 通信功能。
特点
基于Raspberry Pi 40pin GPIO接口,适用于Raspberry Pi系列主板
具备CAN功能,使用SPI接口CAN控制器MCP2515,搭配收发器SN65HVD230
具备RS485功能,使用UART控制,半双工通讯,收发器为SP3485
板载TVS(瞬态电压抑制管),RS485通讯可有效抑制电路中的浪涌电压和瞬态尖峰电压,防雷防静电
预留控制接口,方便其他控制器控制
提供完善的配套资料手册(提供wiringPi与python例程)
产品参数
工作电压: 3.3V
CAN控制芯片: MCP2515
CAN收发器: SN65HVD230
485收发器: SP3485
产品尺寸: 65mmx30mm
固定孔通经: 3.0mm
接口说明
CAN总线
功能引脚
树莓派接口(BCM)
描述
3V3
3V3
3.3V电源正
GND
GND
电源地
SCK
SCK
SPI时钟输入
MOSI
MOSI
SPI数据输入
MISO
MISO
SPI数据输出
CS
CE0
数据/命令选择
INT
25
中断输出
RS485总线
功能引脚
树莓派接口(BCM)
描述
3V3
3V3
3.3V电源正
GND
GND
电源地
RXD
RXD
串口接收
TXD
TXD
串口发送
RSE
4
设置收发
对于RSE引脚,可以选择不使用,模块出厂默认使用的是硬件自动接收与发送。
硬件说明
CAN总线
CAN 模块的功能是处理所有 CAN 总线上的报文接收和发送。报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中。通过 SPI 接口设置控制寄存器中的相应位或使用发送使能引脚均可启动发送操作。通过读取相应的寄存器可以检查通讯状态和错误。 会对在 CAN总线上检测到的任何报文进行错误检查,然后与用户定义的滤波器进行匹配,以确定是否将报文移到两个接收缓冲器中的一个。
由于树莓派本身并不支持CAN总线,因此使用SPI接口的CAN控制器,搭配一个收发器完成CAN功能。
Microchip 的 MCP2515 是一款CAN协议控制器,完全支持 CAN V2.0B 技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。 MCP2515 自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的报文,因此减少了主单片机(MCU)的开销。MCU通过SPI接口与该器件连接,即树莓派通过SPI接口连接芯片,对于树莓派使用该芯片不需要编写驱动,只需要打开设备树中的内核驱动即可使用。
更多详细请参考数据手册;
SN65HVD230 是德州仪器公司生产的 3.3V CAN 收发器,该器件适用于较高通信速率、良好抗干扰 能力和高可靠性 CAN 总线的串行通信。SN65HVD230 具有高速、斜率和等待 3 种不同的工作模式。 其工作模式控制可通过 Rs 控制引脚来实现。CAN 控制器的输出引脚 Tx 接到 SN65HVD230 的数据 输入端 D,可将此 CAN 节点发送的数据传送到 CAN 网络中;而 CAN 控制器的接收引脚 Rx 和 SN65HVD230 的数据输出端 R 相连,用于接收数据。
RS485总线
SP3485接口芯片是一种RS-485驱动芯片。用于RS-485通信的低功耗收发器。 采用单一电源+3.3V工作,采用半双工通讯方式。RO和DI端分别为接收器的输出和驱动器的输入端;(RE) ̅和DE端分别为接收和发送的使能端,当(RE) ̅为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态;A端和B端分别为接收和发送的差分信号端,当A-B>+0.2V时,RO输出逻辑1;当A-B
其中:SP3485芯片的RE与DE管脚是设置接收与发送;
本模块默认的出厂设置是采用硬件自动的收发,也可以选择软件上控制管脚来选择发送与接收,可以通过焊接板上的0欧姆电阻来选择控制方式。
硬件自动控制:
数据接收:P_TX此时为高电平, 为休闲状态。这时候三级管导通,SP3485芯片的RE引脚为低电平,数据接收使能,RO开始接收数据,将485AB口接受到的数据传到MCU。
数据发送:P_TX会有一个下拉的电平,表示开始发送数据,此时三极管截止,DE引脚为高电平,数据发送使能。此时,如果发送的数据为‘1’的时候,三极管会处于导通,虽然接收会变为有效状态但由于芯片在发送阶段时是高阻状态,所以还是保持发送状态,正常传输‘1’。
注意:使用自动收发由于三级管的通断的速度问题,会导致自动收发的波特率无法做到太高,如果需要很高的波特率建议使用收动收发。
树莓派使用
安装库
安装BCM2835, 打开树莓派终端,并运行一下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo./configure
sudo make
sudo make check
sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
安装wiringPi
sudo apt-getinstall wiringpi
#对于树莓派4B可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg-i wiringpi-latest.deb
gpio-v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
python
sudo apt-getupdate
sudo apt-getinstall python-serial
sudo pip install python-can
下载例程
在树莓派终端运行:
sudo apt-getinstall p7zip-full
wget http://www.waveshare.net/w/upload/d/de/RS485_CAN_HAT_Code.7z
7zx RS485_CAN_HAT_Code.7z-r-o./RS485_CAN_HAT_Code
sudo chmod777-R RS485_CAN_HAT_Code/
CAN使用
本演示程序使用了两个树莓派以及两个RS485 CAN HAT模块
提供python与c语言程序
前置工作
将模块插在树莓派上,然后修改开机脚本config.txt
sudo nano/boot/config.txt
在最后一行加入如下:
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=25,spimaxfrequency=2000000
其中oscillator=12000000,是板载的晶振大小12M,如下图
如果购买日期早于2019年8月份,请使用下面的:
如图,红色框内为8M的晶振
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25,spimaxfrequency=1000000
保存退出后,重启树莓派:
sudo reboot
重启后,运行命令查看是否初始化成功:
dmesg|grep-i'\(can\|spi\)'
如果不接上模块可能提示如下:
请检查是否连接上模块。是否开启SPI并开启MCP2515内核驱动。是否进行重启。
确定好两边树莓派都这样处理了,把两个模块的H与L对应连接
如果使用的是其他的CAN设备,确定连线H-H,L-L即可
C
阻塞接收,树莓派打开终端,运行:
cd RS485_CAN_HAT_Code/RS485_CAN_HAT_Code/CAN/wiringPi/receive/
make clean
make
sudo./can_receive
接收程序是阻塞的,直到读取到数据就结束。
发送,树莓派打开终端,运行:
cd RS485_CAN_HAT_Code/RS485_CAN_HAT_Code/CAN/wiringPi/receive/
make clean
make
sudo./can_send
此时接收接收到对应的id的报文:
python
树莓派打开终端,运行:
cd RS485_CAN_HAT_Code/RS485_CAN_HAT_Code/CAN/python/
#先运行接收:
sudo python can_reveive.py
#发送端:
sudo python can_send.py
RS485使用
本演示程序使用了两个树莓派以及两个RS485 CAN HAT模块
提供python与wiringPi语言程序
前置工作
开启Uart接口
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config
选择InterfacingOptions->Serial,关闭shell访问,打开硬件串口
然后重启树莓派:
sudo reboot
打开/boot/config.txt文件,找到如下配置语句使能串口,如果没有,可添加在文件最后面。
enable_uart=1
对于树莓派3B用户,串口用于蓝牙,需要注释掉:
#dtoverlay=pi3-miniuart-bt
然后重启树莓派:
sudo reboot
确定好两边树莓派都这样处理了,把两个模块的A与B对应连接
如果使用的是其他的485设备,确定连线A-A,B-B即可
C
阻塞接收,树莓派打开终端,运行:
cd RS485_CAN_HAT_Code/RS485_CAN_HAT_Code/485/WiringPi/send
make clean
make
sudo./485_receive
接收程序是阻塞的,直到读取到数据就结束。
发送,树莓派打开终端,运行:
cd RS485_CAN_HAT_Code/RS485_CAN_HAT_Code/485/WiringPi/send
make clean
make
sudo./485_send
此时接收端接收到程序
python例程
cd RS485_CAN_HAT_Code/RS485_CAN_HAT_Code/485/python/
#先运行接收:
sudo python reveive.py
#发送端:
sudo python send.py
故障排查
如果485通信不正常,请分步调试:
确定树莓派的硬件版本,如果是树莓派ZERO/3B,则程序中的串口需要修改成/dev/ttyAMA0;
确定485的A,B是否与控制的485设备A,B一一对应;
可以先使用USB to 485设备与RS485 CAN HAT通信,保证树莓派的设置没有问题;
树莓派有can通信吗_树莓派 RS485 CAN HAT模块使用相关推荐
- 树莓派有can通信吗_树莓派4使用MCP2515模块CAN通信
在开始之前,硬件方面你需要一块树莓派4,MCP2515模块和一个CAN分析仪. 我这里的MCP2515模块的晶振为8M的 树莓派4内核为: pi@raspberrypi:~ $ uname -a Li ...
- 树莓派hdmi输出没声音_树莓派 4 开箱记
树莓派 4 与其前代产品相比具有令人印象深刻的性能提升,而入门套件使其易于快速启动和运行. -- Anderson Silva(作者) 当树莓派 4 在 6 月底宣布发布 时,我没有迟疑,在发布的同一 ...
- 树莓派4开机黑屏_树莓派4降价啦,2Gb内存的树莓派4降至35美元
树莓派已经发布8年了.为了庆祝树莓派的8周年生日,树莓派首席执行官在博客中宣布,2Gb内存的树莓派现在降价至35美元(约合人民币244元). 1Gb内存版本的树莓派4不再销售,但工业和商业客户仍可使用 ...
- 树莓派数据上传数据库_树莓派内部数据向domoticz的上传
树莓派的数据上传->Domoticz 树莓派的温度检测到的数据可以通过API发送到domoticz 示例代码:#!/usr/bin/env python # -*- coding:utf-8 - ...
- python树莓派串口通信实例_树莓派通过串口发送数据
可以通过串口登陆树莓派,也可以通过串口向其他主机发送数据.树莓派的串口接受数据科技爱好者博客已经写过,可以参考这篇文章:树莓派与arduino串口通信实践.这篇文章教大家如果通过树莓派的串口发送数据. ...
- 树莓派串口通信编码_树莓派3B/3B+与Rosbot通信02:USB与串口通信
前言:在上一篇中,我们已经下载和安装好通信的各种库和其他东西,在这一篇中我们将介绍如何将树莓派与Rosbot连接设置和基础的代码编程. 串口通信 串口设置 1.设置波特率:进入minicom配置界面 ...
- 树莓派串口通信编码_树莓派3B 串口通信超详细
1.下载pi3-miniuart-bt-overlay.dtb,并将dtb文件拷贝到/boot/overlays/目录下 下载地址:http://pan.baidu.com/s/1qXS0hoK 2. ...
- 树莓派支持uvi协议吗_树莓派如何控制电视机,在Raspberry Pi上安装HDMI-CEC
在本教程中,我将展示如何使用HDMI-CEC和树莓派来控制电视. HDMI-CEC是一种特殊的协议,用于电视与另一个设备通过HDMI电缆进行通信.该协议允许电视控制另一个设备,同时也允许该设备控制电视 ...
- 树莓派4外置wifi天线_树莓派打造最强车载娱乐终端(1)音乐和WiFi
开车跑长途的时候总觉得无聊,就会想起飞机上的娱乐终端,那么我们就来自己做一个吧! 这一系列文章里,我会按照功能划分,列出需要的软硬件,尽量做到互相独立,方便自由组合.今天我们先来实现最基本的音乐播放和 ...
最新文章
- AAAI 2020 论文接收结果出炉,得分 997 论文被拒,388 反而中了?
- css4个伪元素,CSS_CSS3中的content属性使用示例,CSS中主要的伪元素有四个:befo - phpStudy...
- 大连海事大学计算机调剂,大连海事大学2017年考研调剂信息
- 阿里云NAS备份服务
- windows API 第13篇 MoveFileEx
- Python使用yagmail库实现发送邮件功能
- 遗传算法MATLAB工具包简介
- java 将数据加载到内存中
- c语言实现http下载器
- 请修改服务器脱机策略,异速联/天高客户端用户已离线但服务器端用户会仍话驻留处理方法...
- 十一式:开发者思维模式-简单而纯粹
- ECSHOP微信支付插件ECSmart手机版,ECSmart微信支付手机版
- 3D游戏建模:游戏建模都要用到哪些软件?
- 超级计算机的内部图,中科院首次获得了宇宙中全尺度暗晕内部结构的清晰图像...
- 一个简单的JS(盒子移动)
- 虚幻4渲染编程(光线追踪篇)【第一卷:光线追踪篇开篇综述】
- zz from 古文中惊艳的句子
- mysql utl_file_利用UTL_FILE包实现文件I/O操作
- #2021年底大盘点#普通大专的普通学生的普通大二学年
- PostgreSQL数据库自带的命令行工具--psql