can总线的示波器检测方法

2023-11-04



整理自网络::

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总线的详细说明书:PDFcan2spec.pdf

CAN Bus Frame
一个CAN总线的数据帧

CAN总线数据帧

CAN总线数据帧在CAN上运作。CAN的整个过程实质上是在网络控制器之间发送数据,这就需要数据帧来实现这个功能了。

数据帧是以一个单一的SOF(起始帧)位开始的,跟着就是CAN标识符。CAN标识符是用来标识报文和接下来的节点报文。标识符可以有11位长或者是29位长,这主要是根据保留位的状态来决定。

SOF and CAN ID
CAN数据帧以一个SOF位开始,跟着就是ID位

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

CAN DLC and Data Bytes
在CAN帧中数据字节跟着数据长度(DLC)

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

CAN CRC and ACK
CAN 的CRC检查数据的完整性,同时ack表示从另一个节点接收

跟着CRC的是Ack 场,这个场是在所有的其他的正确接收帧的网络节点上进行设置的。
Ack位后,有一段静态时间,它称为紧跟着一个最小的内插帧空间的帧空间结束符。

 

Image一个CAN数据帧图片

扩展数据帧

可扩展标识符CAN 帧使用29位用于辨识目的,而不是标准的CAN帧的11位。由于这个额外的ID空间增加了20位(18个ID和两个保留位),它通常不使用于希望得到最高性能的网络当中。

在J1939和GMLAN协议中,较大的ID分为不同的部分,每一个部分都有它的意义。比如,对于J1939和GMLAN的最低的8个ID位表明了一个字节的源地址。

Extended ID
单线CAN扩展ID是有29位长(还没有算入缓冲位)。许多系统设计者不使用这个ID长度,
因为它要求比较高的费用

CAN总线远程数据帧

CAN总线远程帧是可选帧,它用于请求数据。远程帧没有包含数据段,即使数据长码位大于0。你能够从RTR位的状态来判决一个帧是否是远程帧(RTR=1)。远程帧通常不使用在汽车的应用当中。

CAN Remote Frame
在这个CAN L波形中显示了一个远程帧

CAN总线错误



 

请看图片 >

CAN总线位填充

CAN波形是一系列的位。由于在CAN总线节点之间没有共享时钟,那么对于所有的节点则一定有方法从波形中得到时钟信息。因此接收器使用CAN波形转换来使得发射器与接收器实现同步时钟。

为了确保有足够的转换,CAN总线执行位填充功能。位填充在连续5个相同的位之后,插入一个额外的码流的相反位。由于填充位的出现要根据消息序列的容量,CAN帧的长度要根据在帧里面的数据位进行改变。这些额外的填充位自动被接收器丢掉,因此在CAN节点的应用软件中就从来不会接触到这些填充位了。

CAN Stuff Bits
填充位,用黄色突出,增加消耗在一个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节点的电源管理有选择性。

Single Wire CAN Voltages
这是两个不同的单线CAN帧。一个在高电压模式下发送,另一个为正常电压


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

can总线的示波器检测方法 的相关文章

  • C++左值与右值の深思——万能引用与完美转发

    目录 传统艺能 左值与右值 左 右值引用 意义与应用 左值引用的缺陷 移动语义 移动构造与拷贝构造的区别 编译器优化 移动赋值 移动赋值和赋值重载的区别 容器优化 右值引用引用左值 容器优化 万能引用 完美转发 使用场景 传统艺能 小编是双
  • 程序员最爱用的在线代码编辑器合集,哪款是你的最爱?

    程序员最爱用的在线 在线IDE 分享合集 有没有你最爱用的 TitanIDE 首当其冲 TitanIDE 云原生集成开发环境 打开浏览器即可编码 快捷方便 最主要的优势概括为以下几点 1 多内核支持 VSCode Jetbrains IDE
  • 【OS命令注入01】常见OS命令执行函数及其利用(system、exec、passthru、popen、shell_exec及反引号结构)

    目录 1 OS命令注入概述 2 常见可注入函数及利用方法 2 1 system 函数 2 2 exec 函数 2 3 passthru 函数 2 4 popen 函数 2 5 shell exec及反引号结构 3 防御 4 总结 1 OS命
  • anaconda使用笔记(包括pip命令)

    anaconda使用笔记 包括pip命令 1 conda命令 conda命令使用方式 方式一 直接打开Anaconda Prompt即可 方式二 打开anaconda 然后在environment中选择你用的环境 点击运行图标 选择Open
  • ajax请求图片_带你完成第一个爬虫,简单爬取百度图片

    大家好 我是润森 什么是爬虫 网络爬虫 又被称为网页蜘蛛 网络机器人 在FOAF社区中间 更经常的称为网页追逐者 是一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的名字还有蚂蚁 自动索引 模拟程序或者蠕虫 来源 百
  • 华为数据之道

    由华为董事 质量与流程IT总裁 CIO陶景文 作序推荐 华为质量与流程IT 华为云 华为大学 联合出品 总结华为公司数据治理 数字化转型方面的实践经验 从技术 流程 管理等多个维度系统讲解华为数据治理和数字化转型的著作 华为是一家超大型企业
  • CTFHub

    0x00 前言 CTFHub 专注网络安全 信息安全 白帽子技术的在线学习 实训平台 提供优质的赛事及学习服务 拥有完善的题目环境及配套 writeup 降低 CTF 学习入门门槛 快速帮助选手成长 跟随主流比赛潮流 0x01 题目描述 过
  • QDockWidget详解(二)

    上次在 QDockWidget详解文章中介绍了一些有关QDockWidget的基础用法 今天继续来讲QDockWidget的用法 自定义标题栏 如果不想使用QDockWidget自带的标题栏 那么可以通过 void QDockWidget
  • 阿里云原生大数据计算服务maxcompute学习体验

    这两天有兴趣学习了下阿里的maxcompute大数据 随便谈谈自己的感受 一 感受 阿里云相关的产品线太多了 热门产品一页已经放不下了 正因为东西太多给人一种杂乱的感觉 也可能这是给技术人员用的 所以不用太讲客户体验 反正给我的体验就不太好
  • 五、数据仓库详细介绍(建模)实践篇

    1 数仓建模在数仓建设过程中的位置 这张截图源自之前从 0 到 1 建设数据仓库的经验总结 采用的是瀑布模式的展现方式 但实际操作中经常会使用螺旋迭代模式 因为很难有人能够一步到位的考虑清楚所有细节 通过业务调研我们熟悉了相关业务过程 需求
  • 2023-Python实现巨潮资讯网数据采集

    目录 1 目标网址 2 接口分析调试 3 代码实现 学习记录 巨潮资讯网数据采集 1 目标网址 网页 深证信数据服务平台 巨潮资讯 gt 网行情中心 网页 http webapi cninfo com cn marketDataDate 数
  • 寒假小复习5

    插入排序 public class Insert public static void main String args int nums 12 4 6 2 66 1 4 for int i 1 i lt nums length i int
  • 【华为OD机试 python】新员工座位安排系统【 2023 Q1 A卷

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 工位由序列F1 F2 Fn组成 Fi值为0 1或2 其中0代表空置 1代表有人 2代表障碍物 1 某一空位的友好度为左右连续老员工数之和 2 为
  • vue3 element-plus 表格中必填项展示的星号的前后位置设置

    情况一 必填项的星号在前面 情况图片展示 实现方法 直接使用表单规则校验来实现 注意 规则校验一定要绑定prop 代码展示 html
  • Scrapy入门

    文章目录 Scrapy入门 1 目标 2 准备工作 3 创建项目 4 创建 Spider 5 创建 Item 6 解析 Response 7 使用Item 8 后续Request 9 运行 10 保存到文件 11 使用Item Pipeli
  • filebeat+kafka简单使用

    filebeat6 3 1 kafka1 1 0简单使用 前提 kafka1 1 0版本集群搭建和常用命令 下载 下载页面 https www elastic co cn downloads past releases filebeat 6

随机推荐