无人驾驶(一)---汽车can总线通信之 peak pcan驱动安装与通信
CAN盒是CAN总线通信的必要设备,USBCAN盒大致可以分为Vector/Kvaser/周立功/PCAN。国内的pcan大都是兼容周立功,peak兼容pcan, 那种便宜的一般不支持linux。 汽车can总线一般是使用pcan,今天主要讲解PEAK PCAN。
1.安装pcan驱动
驱动下载地址: http://www.peak-system.com/fileadmin/media/linux/
sudo apt-get install libpopt-dev
tar -xzf peak-linux-driver-8.15.1.tar.gz
cd peak-linux-driver-8.15.1/
make clean
make
sudo make install
安装成功后查看
pcaninfo
2.多can盒接入,通过devid进行通信
(1) 修改devid
因为多个can盒接入同一个设备上,往往devid统一默认为0, 所以需要修改其值,保证每个设备编号唯一
方法一:通过文档修改
有时同一个工控机需要接入多个can分析仪,会用到devid 值,但是can分析仪都是默认值为devid=0x00, 容易重复,所以需要修改devid值。在路径/sys/下搜索 devid文档,修改内容即可
方法二:命令修改
##修改id号为2
pcan-settings -f=/dev/pcanusbX -d 2 或
echo 2 | sudo tee /sys/class/pcan/pcanusbX/devid
PEAK 说明书
方法三:devid 永久固定
以上两种方法,重新上电后,devid还是会改变,所以建议永久固定
估计是需要烧写程序 ,但是我不会,哪位大佬有好的建议,欢迎留言,一起交流!!!
(2) 编写程序,实现通信
import os
import cancan.rc['interface'] = 'pcan' # 配置硬件类型
can.rc['channel'] = 'PCAN_USBBUS1' # 配置通道,根据具体的硬件,int或者str
can.rc['bitrate'] = 500000 # 波特率def getPcanChannel(id):channel = Noneresult = os.popen('pcaninfo') #执行pcaninfo 命令res = result.read() # 读取pcaninfo中的内容for line in res.splitlines(): #以"\n" 分割,将元素保存在列表if line.startswith(" * pcanusb"): #以" * pcanusb" 开头if "devid="+id in line:line_split = line.split(' ') # 空格分割for temp in line_split:if 'PCAN_USBBUS' in temp:channel = tempprint(channel) ##输出 "PCAN_USBBUS1"return channelif __name__ == "__main__":pcan_channel = getPcanChannel("0x02")if pcan_channel == None:print("PCAN通道获取失败,程序退出!")exit()print(pcan_channel) # "PCAN_USBBUS1"pcanbus = can.interface.Bus(channel=pcan_channel.replace('"', "")) #实例化can 通道
3. 多CAN盒接入,通过udev规则实现通信
(1) udev规则编写
#1. 查看pcan设备是否连接
ls -l /dev/pcan*# 2.查看设备属性
udevadm info --attribute-walk --name=/dev/pcanusb32#3.通过ATTRS{serial} 建立udev规则
cd /etc/udev/rules.d/
sudo gedit mypcan.rules#4.udev规则内容,serial 根据设备属性实际情况填写
KERNEL=="pcanusb*",ATTRS{serial}=="8D8C6EC00352",MODE:="0777",SYMLINK+="pcan_0"
KERNEL=="pcanusb*",ATTRS{serial}=="8D8C67C40352",MODE:="0777",SYMLINK+="pcan_1"#5.重新加载udev规则, 拔插设备之后生效
sudo systemctl daemon-reload
sudo service udev reload
sudo service udev restart##6.查看设备
ls -l /dev/pcan_0
(2)编写程序实现通信
import os
import candef getDev():channel = Noneresult = os.popen('ls -l /dev/pcan_0') #实现pcan_0通信res = result.read()for line in res.splitlines():if "pcan_0" in line:temp = line[-9:]# print(temp)rt = os.popen('pcaninfo')rs = rt.read()for ln in rs.splitlines():if temp in ln:ln_solit = ln.split(' ')for tp in ln_solit:if 'PCAN_USBBUS' in tp:channel = tpprint(channel)return channelif __name__ == "__main__":pcan_channel = getDev() ### "PCAN_USBBUS1"if pcan_channel == None:print("PCAN通道获取失败,程序退出!")exit()pcanbus = can.interface.Bus(channel=pcan_channel.replace('"', "")) #实例化can 通道
参考链接:PEAK-System Forum
python-can介绍
无人驾驶(一)---汽车can总线通信之 peak pcan驱动安装与通信相关推荐
- 无人驾驶中的CAN总线
原文转自 陈光-自动驾驶干货铺-https://mp.weixin.qq.com/s/C4I86Wm4yERfGqO7aZyLsg 原文标题:无人驾驶技术入门(十一)| 无人驾驶中的CAN总线 前言 ...
- can总线报文是固定的吗_新能源汽车CAN总线Bus Off处理流程
CAN总线由其高可靠和实时性被广泛应用于新能源汽车.轨道交通.医疗.工程机械等行业,本文介绍CAN总线关闭对新能源汽车的功能和安全性能产生的影响,并针对工程师关注的问题,提供有效的解决方案. 2020 ...
- can硬件结构和工作原理_汽车CAN总线工作原理及测量方法详解
点滴分享 ALtium designer 快捷键分享 ctrl+r 复制并重复黏贴 ctrl+shift+v 只能黏贴 shift+c ...
- 【汽车电子】浅谈汽车四大总线:LIN、CAN、FlexRay、MOST
目录 1.前言 2.汽车四大总线 2.1 LIN总线 2.1.1 LIN总线概述 2.1.2 LIN总线工作原理 2.2 CAN总线 2.2.1 CAN总线概述 2.2.2 CAN总线工作原理 2.2 ...
- A²B汽车音频总线介绍
A²B使远程I²S/TDM成为可能 I²S是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于设备之间的数据传输,广泛应用于各种多媒体系统.I²C是两线式串行总线,用于连接微 ...
- can总线rollingcounter_汽车CAN总线详解
概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而 ...
- Analog Devices Inc. A2B(汽车音频总线)
背景 传统的汽车音频ECU一般通过单独的模拟电缆或现有的数字总线架构来连接,这两者都存在局限性.低效率.及不必要的费用等.使用模拟传输线的汽车音频系统需要专用且昂贵的屏蔽电缆,来传输多通道音频信号.在 ...
- HMI-67-【数据】汽车CAN总线数据读取
HMI-67-[数据]汽车CAN总线数据读取 文章目录 HMI-67-[数据]汽车CAN总线数据读取 摘要 关于南京来可电子 本次使用设备 实物展示 到车上去搞数据 方便的OBD设计 使用电脑连接设备 ...
- 第三届“中国无人驾驶及汽车网络安全周”AutoSec 9月上海开幕
历史的车轮一直在不停地前进,作为21世纪的瞩目科技,无人驾驶近年来掀起阵阵热潮.多家巨头公司乃至初创公司投资无人驾驶.然而,无人驾驶的落地依然是一场马拉松.目前全球最先进的自动驾驶研发企业处在L3-L ...
- 测量汽车LIN总线信号及波形分析-示波器
汽车网络通信中除了CAN的通信方式外,还有另外一种低成本通信方式--LIN系统.它的英文是"Local Interconnect Network",LIN总线基于UART/SCI( ...
最新文章
- 力所能及的做些自己喜欢和有趣的事
- oracle地址已被占用,Listener Tns-12542:Tns:地址已被占用
- 关于Python3.9,看这张16岁高中生做的「新特性必知图」就够了
- java.util.List学习笔记
- 数据服务器性能测算依据,如何对服务器性能计算的公式参考(tpmc-tpcc).pdf
- [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]
- idea查看类关系_IDEA查看类关系图【正确姿势】,非常实用
- HTML5,CSS3,JS绘制饼图
- NAPI 方式的实现
- STM32工作笔记0018---JLINK程序下载
- 虚函数指针(vptr)与虚函数表(vptb)
- kafka性能优化入门
- 计算机视觉基本研究方向
- 思科模拟器企业网站服务器配置,cisco模拟器配置域名web服务器
- Linux下显示IP地理位置信息的小工具-nali
- Java 标准 IO 流编程一览笔录( 下 )
- 基于JavaWeb的互联网金融创意众筹网站系统
- 用matlab如何拟合曲线,用MATLAB怎么实现曲线拟合?
- JAVA语言编程练习--图形界面--简易登录界面
- 软考论文分享--论项目的沟通管理
热门文章
- smali 添加资源
- 【PPT模板】甄选100套时间轴精品
- ssm房屋中介管理系统毕业设计(附源码、运行环境)
- HMS Core 3D精准室内定位技术,打造“店铺级”出行体验
- 国外大神在GitHub上发布的打包成APP的Win95
- win10永久禁用驱动数字签名强制的方法
- 立创EDA学习笔记(2)——创建元件符号
- mysql主从配置查看_MySQL主从配置 - MySQL入门教程_数据库技术_Linux公社-Linux系统门户网站...
- 基于SSM实现微博系统
- 基于spring boot的人民医院体检预约系统