can总线的示波器检测方法
stm32的can总线是在APB1上的,stm32f10x的主频是72Mhz,can外设时钟是36Mhz,stm32f2xx的主频是120Mhz,can外设时钟是30Mhz。。。
STM32 APB1和APB2区别:
APB2负责AD,I/O,高级TIM,串口1。
APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM
can总线电气特性
做一想要从车上测出can总线上的数据还不太容易。
于是我首先使用示波器(我使用的示波器型号是TDS 220)来找出汽车上can总线的接口,然后测出can总线的波特率,测量波特率的步骤如下:
1、将示波器的两个接口(接地和探头)分别接在can总线的两条线(CAN_H和CAN_L)上,
这里需要注意如果CAN线上需要接一个120欧姆的负载电阻,否则波形是不规整方波,
接上负载之后才是规整的方波。
2、此时如果can线上有数据,则会在示波器上显示出方波如图1所示。(这里使用示波器的RUN/STOP按钮捕捉波形)

图1
2、但是此时因为示波器显示的数据太多还无法读取单个脉冲的周期,
所以需要调节示波器的X轴的每格所代表的周期(调节SEC/DIV旋钮)
然后使用RUN/STOP按钮重新捕捉波形得到图2所示的波形,

图2
3、最后将图2中宽度较小的脉冲再次放大(调节SEC/DIV)直到图3所示,这时每格代表1us
可以看到这个脉冲跨度为8us

图3
所以最终得到该can总线的波特率为1s/8us=125K
在车辆电子网络中,CAN总线是一个重要的协议。它具有一个高达1兆bit的比特率, 并提供简单的微处理器网络,这需要用到一种被称为CAN控制器的专用CAN总线芯片叫做CAN控制器。
CAN的数据传输报文就是数据帧。数据帧允许有一个比较长的ID,所以称为可扩展帧。
适用于某些应用中的,但不是用于汽车中的是远程帧。远程帧允许一个节点响应一个特定的ID。
CAN功能是非常齐全的。这意味着它不仅仅发现很多的错误,同时能够实现自动化传输或者节点自动关闭。
CAN使用比特流来通过接收器到发射器。为了适合于特定的位次序,CAN必须使用位填充。位填充在传统示波器上对CAN波形进行解码很困难。
CAN是一个数据链接层。有三种正在使用的物理层来对CAN进行信号的电动发射。
在使用CAN总线的某些地方,可能用FlexRay或者LIN更合适。
CAN总线的详细说明书:can2spec.pdf

一个CAN总线的数据帧
CAN总线数据帧
CAN总线数据帧在CAN上运作。CAN的整个过程实质上是在网络控制器之间发送数据,这就需要数据帧来实现这个功能了。
数据帧是以一个单一的SOF(起始帧)位开始的,跟着就是CAN标识符。CAN标识符是用来标识报文和接下来的节点报文。标识符可以有11位长或者是29位长,这主要是根据保留位的状态来决定。

CAN数据帧以一个SOF位开始,跟着就是ID位
在CAN标识符之后,有一个数据段,数据段是以一个数据长度开始的。CAN数据帧能够有0到8个字节,这样它使用4位的编码长度。数据字节直接跟着数据长度。

在CAN帧中数据字节跟着数据长度(DLC)
跟在数据之后是CRC。CRC是基于CAN帧的第一部分在接收器和发射器中进行计算的。如果计算出来的结果与接收器呈现的结果相匹配,则说明正确接收数据。

CAN 的CRC检查数据的完整性,同时ack表示从另一个节点接收
跟着CRC的是Ack 场,这个场是在所有的其他的正确接收帧的网络节点上进行设置的。
Ack位后,有一段静态时间,它称为紧跟着一个最小的内插帧空间的帧空间结束符。
扩展数据帧
可扩展标识符CAN 帧使用29位用于辨识目的,而不是标准的CAN帧的11位。由于这个额外的ID空间增加了20位(18个ID和两个保留位),它通常不使用于希望得到最高性能的网络当中。
在J1939和GMLAN协议中,较大的ID分为不同的部分,每一个部分都有它的意义。比如,对于J1939和GMLAN的最低的8个ID位表明了一个字节的源地址。

单线CAN扩展ID是有29位长(还没有算入缓冲位)。许多系统设计者不使用这个ID长度,
因为它要求比较高的费用
CAN总线远程数据帧
CAN总线远程帧是可选帧,它用于请求数据。远程帧没有包含数据段,即使数据长码位大于0。你能够从RTR位的状态来判决一个帧是否是远程帧(RTR=1)。远程帧通常不使用在汽车的应用当中。

在这个CAN L波形中显示了一个远程帧
CAN总线错误
CAN总线位填充
CAN波形是一系列的位。由于在CAN总线节点之间没有共享时钟,那么对于所有的节点则一定有方法从波形中得到时钟信息。因此接收器使用CAN波形转换来使得发射器与接收器实现同步时钟。
为了确保有足够的转换,CAN总线执行位填充功能。位填充在连续5个相同的位之后,插入一个额外的码流的相反位。由于填充位的出现要根据消息序列的容量,CAN帧的长度要根据在帧里面的数据位进行改变。这些额外的填充位自动被接收器丢掉,因此在CAN节点的应用软件中就从来不会接触到这些填充位了。

填充位,用黄色突出,增加消耗在一个CAN报文中。这个报文有13个额外的填充位
CAN总线物理层
CAN协议介绍了1s和0s是如何使用在通讯当中的。CAN协议没有介绍发射1s和0s信号的电气方法。
最普遍流行的物理层被称为双线物理层。这个物理层使用双线CAN H和CAN L。这些线在不同的电压方向(对应着不同的信号传输)上传送1或者0。
对于特定的汽车低速应用,介绍两个其他的物理层。它们是单线CAN和低速容错CAN。如果有一条线路断了。低速容错CAN总线将会提供容错信息。
单线CAN
单线CAN是一个物理层,它是由普通的发动机生成的。它允许CAN使用一条单线在低比特率(如33.3Kbps)的情况之下进行通讯。同时对于闪存编程允许一个高速模式。最后,虽然很多CAN收发器仅仅提供了1或者0,但是单线仍能够提供一个被称为高压模式的第三状态。这种模式能够使得CAN节点的电源管理有选择性。

这是两个不同的单线CAN帧。一个在高电压模式下发送,另一个为正常电压
can总线的示波器检测方法的更多相关文章
- 目标检测方法总结(R-CNN系列)
目标检测方法系列--R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD 目录 相关背景 从传统方法到R-CNN 从R-CNN到SPP Fast R-CNN ...
- VS2005内存泄漏检测方法[转载]
一.非MFC程序可以用以下方法检测内存泄露: 1. 程序开始包含如下定义: #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __ ...
- 小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法
SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询 ...
- Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究
转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...
- C++中内存泄漏的检测方法介绍
C++中内存泄漏的检测方法介绍 首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复. 最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck, ...
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD, R-FCN系列深度学习检测方法梳理
1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 技术路线:selec ...
- 目标检测方法——R-FCN
R-FCN论文阅读(R-FCN: Object Detection via Region-based Fully Convolutional Networks ) 目录 作者及相关链接 方法概括 方法 ...
- Android root检测方法小结
转载目的,之前主要应用这里的原理解决了,手机被某个APP检测为root过的手机的问题,记录后续可能参考. 出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root ...
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 技术路线:selec ...
随机推荐
- WPF制作带明细的环形图表
效果 明细用Popup实现的,录gif时,Popup显示不出来,不知道为什么,所以静态图凑合看吧 大体思路 图表使用Arc+Popup实现 图表分为两部分,一是环形部分,一是标注的明细部分. 环形部分 ...
- [UWP 自定义控件]了解模板化控件(1):基础知识
1.概述 UWP允许开发者通过两种方式创建自定义的控件:UserControl和TemplatedControl(模板化控件).这个主题主要讲述如何创建和理解模板化控件,目标是能理解模板化控件常见的知 ...
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十五节--缓存小结与ABP框架项目中 Redis Cache的实现
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 缓存 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点. 减少寄宿服务器的往返调用(round-tr ...
- KVM虚拟机管理——虚拟机克隆
1. 概述2. 部署基本操作系统虚拟机3. 配置虚拟机3.1 修改/etc/sysconfig/network3.2 删除/etc/sysconfig/network-scripts/ifcfg-et ...
- python基础学习笔记(六)
学到这里已经很不耐烦了,前面的数据结构什么的看起来都挺好,但还是没法用它们做什么实际的事. 基本语句的更多用法 使用逗号输出 >>> print 'age:',25 age: 25 ...
- CF 1047 C. Enlarge GCD
传送门 [http://codeforces.com/contest/1047/problem/C] 题意 给你n个数,移除最少的数字使剩下的数字GCD大于初始GCD 思路 需要一点暴力的技巧,先求出 ...
- 软件工程启程篇章:结对编程和进阶四则运算(197 & 199)
0x01 :序言:无关的事 I wrote a sign called "Dead End" in front of myself, but love crossed it wit ...
- 使用docker安装paddlepaddle 和 tensorflow
1.tensorflow安装 http://blog.csdn.net/freewebsys/article/details/70237003 (1)拉取镜像:docker pull tensorfl ...
- Linux 忘记root密码
1 将系统重启,读秒的时候按下任意键就会出现如下图菜单界面 2 进入上图菜单界面之后,按e键就可以进入grub的编辑模式 3 选择第二行 kernel开头,再按 e 键进入该行的编辑界面中,然后在出现 ...
- 开发一个微信小程序实例教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
