CAN-bus 总线是应用最广泛的现场总线之一,而很多非常熟练的CAN 工程师,面对一条 CAN报文到底有多少位的问题时,却不能非常准确地回答。今天我们就从最基本的帧格式来解惑一条 CAN 报文的到底有多少位。

CAN 报文帧分为几种呢?CAN-bus 通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔。而数据帧和远程帧又有标准帧和扩展帧两种。其帧类型以及用途如表 1 所示:

表 1  帧类型及用途

Ø数据帧

数据帧从结构上看分为 7 段,分别为起始段、仲裁段、控制段、数据段、CRC 校验段、ACK 应答段、帧结束段。如图 1:

图 1  标准数据帧跟扩展数据帧结构图

l 帧起始段:该段由单个显性位构成,在总线空闲时才允许发送,所有节点必须同步于开始发送的数据帧的起始位;

l 标准帧仲裁段:标准帧的仲裁段由 11 位 ID 码和一个显性位 RTR 码组成,RTR 码为远程帧标识位;

l 扩展帧仲裁段:扩展帧的仲裁段由 29 位 ID 码、一位显性的 SRR 码、一位隐性的 IDE 码和一位显性的 RTR 码组成;

l 标准帧控制段:标准帧的控制段由单位显性的 IDE、保留位 r0 和 4 位数据长度代码 DLC 组成,DLC 数据段采用 BCD 编码;

l 扩展帧控制段:扩展帧的控制段由两个保留位 r1 和 r0 和 4 位的 DLC 数据段组成,r1 和 r0 都为显性填充,接收时无论保留位是显性还是隐性都没有影响;

l 数据段:一个数据段为 8 个字节;

lCRC 校验段:CRC 校验段由 15 位的校验码和 1 个隐性位填充的 CRC 界定符组成,CRC 校验范围为帧起始、仲裁段、控制段和数据段;

lACK 段:ACK 段由 ACK 码和一个隐性位 ACK 界定符组成,发送节点在 ACK 段发送两个隐性位,接收节点在收到的报文 ACK 前面的帧格式没有错误时,他将发出 ACK 码为显性位的报文。

l 帧结束段:由 7 个连续的隐性位组成。

Ø远程帧

远程帧帧格式跟数据帧类似,也分为标准帧跟扩展帧,但是远程帧属于被请求发送节点发送的报文,而数据帧是发送节点的报文。如图 2,远程帧没有数据帧。

图 2  标准远程帧和扩展远程帧的结构图

参照数据帧可了解远程帧的结构,但是两者之间也有不同:

lSRR 段和 RTR 段:数据帧是显性电平,远程帧是隐性电平;

l 节点性质:数据帧是发送节点发出的报文格式,远程帧是被请求发送的节点发送的报文格式;

lCRC 校验范围:数据帧是帧起始、仲裁段、控制段和数据段,而远程帧则是帧起始、仲裁段和控制段。

了解了数据帧跟远程帧的标准报文格式后,有些人可能会问了,我有时看到的报文为什么跟你的标准格式的位数不一样呢?

Ø位填充

CAN-bus 属于异步串行通信,这种通信方式没有时钟线,所以各个收发器的时钟不可能完全一致,时钟不一致就会造成偏差。所以为了解决这个问题,CAN 总线采用同步的方式来校准时钟。CAN-bus 规定信号的跳变沿为同步信号,只要信号发生变化,节点时钟就被同步一次。CAN-bus 还规定同步的最大周期为 5 个位。

但是问题来了,要是出现连续性的 5 个位甚至更长时间没有边沿跳变(例如数据段全为 0x56),那该如何解决呢?CAN-bus 对这种情况又进行了规范,如果传输的位信号连续 5 个位是相同的,就要插入一个电平相反的位,这个就是 CAN-bus 的“位填充”规则。如图 4。

图 4  位填充规则

Ø0x00 和 0x55

由于位填充规则的存在,所以就存在即使两个帧都是标准数据帧,但发送不同 ID 或者数据段的时候报文时间会不同,图 5 为 1M 波特率下 ID 跟数据都为 0x00 的标准数据帧报文。原本 108 个位的标准数据帧的真实的报文时间为 123us。

图 5 标准数据帧 0x00 报文

而 0x55 的标准数据帧报文格式则如图 6:ID 为 555H,数据段为 55H,报文没有出现连续的相同位,所以填充位最少,8 位的数据段位时间为标准的 8us,全报文时间为 108us。

图 6  标准数据帧 0x55 报文

下表给出了标准数据帧、扩展数据帧、标准远程帧、扩展远程帧四种帧类型在发送不同 ID 和数据时位时间的差别。

表 2  不同 ID 和数据位填充位数不一样

通过 CAN-Scope 总线分析仪的报文接收和示波器,可以将每一帧报文跟波形做一一对应,快速分析总线上的报文时间和波形情况,实现 CAN 总线的快速故障定位和干扰排除。

can总线一帧多少字节多少位_一条CAN报文到底有多少位?-汽车电子-与非网相关推荐

  1. 圆周率一千万亿位_目前圆周率已经达到十万亿位了,为何还要算?有什么用处?...

    说句大实话,计算出圆周率小数点后那么多位还真没什么用处,因为对于现实意义来说也就十几位,比如NASA计算前往太阳系外的新视野号的轨道也只要16位之内,假如取值到40位,那么即使是宇宙范围内能控制到氢原 ...

  2. 骁龙660是32位还是64位_高通骁龙手机cpu64位比32位有什么优势?

    展开全部 CPU如果仅仅说64位或者32位那么几乎无差别.CPU无论是高通或者其它或者电脑CPU主要性能参数是看多少核,频率多大32313133353236313431303231363533e586 ...

  3. 圆周率一千万亿位_圆周率已经到了十万亿位了,为什么还要计算下去?有什么意义吗?...

    初中的时候,为了显示到底谁厉害,班里有两个同学比赛背诵圆周率.这两位大神一时间成为了学校里的明星人物,因为获胜的一方将圆周率背到了100位以后.那时候,我们一起的同学都有这样一个疑问,那就是计算圆周率 ...

  4. python安装方法32位_【Python】pycharm安装32位win7出现的问题解决办法。

    1.安装 PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性,鉴于目前最新版 PyCharm 使用教程较少,为了节约时间,来介绍一下 PyCharm 在 Windows下是如何安装的 ...

  5. lcd取模如何取16位_两种方式实现取16位变量的高低8位, 不严谨对比

    程序如下,第一种方式是强制指针转换,再取结构体成员:第二种方式是简单的移位.前面这种写法得考虑大小端序, 后者不用管. #include <stdio.h>#define hi8(x) ( ...

  6. bigint最大有多少位_《追光吧哥哥》21位艺人靠实力成团?不见得,节目赛制本不公平...

    一直被说成是<浪姐>男版的<追光吧!哥哥>让人看到娱乐圈原来不只是女星到了一定年龄会影响其的事业,其实男星也不例外,看样子"当明星就是吃青春饭的"说法一点也 ...

  7. 网站服务器 64位,如何将win7系统从32位升级到64位_网站服务器运行维护,win7,32位,64位...

    win10如何重置此电脑_网站服务器运行维护 win10重置此电脑的方法是:1.点击[开始]按钮,进入设置:2.进入[更新和安全]选项,点击[恢复]:3.找到[重置此电脑],点击[开始]:4.选择[保 ...

  8. HYCON单片机_以32位MCU-HY16F198实现AC电流量测应用-测试测量-与非网

    一.内容简介 本文将介绍以HY16F198搭配Hall Sensor(WCS1800)进行交流电流数值量测,最大可量测电流范围从0.1A~17.68A.本文实验数据从0A~17.6A,比较使用电表Ag ...

  9. CAN总线错误帧详解

    1.错误帧的帧结构 在发送和接收报文时,总线上的节点如果检测出了错误,那么该节点就会发送错误帧,通知总线上的节点,自己出错了. 错误帧由错误标志和错误界定符两个部分组成. 主动错误标志:6个连续的显性 ...

  10. CAN总线多帧发送方式

    CAN总线多帧发送方式 要了解CAN总线多帧数据的发送,首先我们要知道我们发送的数据帧是属于拓展帧还是标准帧,再说多帧发送方式方法,网上资源有很多关于拓展帧和标准帧区别,以及多帧发送的方式方法,为了我 ...

最新文章

  1. mysql 安装卸载_MySQL(一)——安装、卸载以及基本操作
  2. Delphi中的指针类型
  3. 037_Dropdown下拉菜单
  4. 基于STM32系列芯片的 IAP实现的探索
  5. c语言 变量的左值和右值,C++雾中风景10:聊聊左值,纯右值与将亡值
  6. 云小课 | 华为云KYON之L2CG
  7. 将m文件通过matlab 的编译器转换为可执行文件,【转】 Matlab中提高m文件执行效率的小技巧...
  8. 嘉和生物-B确定发行价每股24.00港元 公开发售获认购1247.52倍
  9. spark学习-SparkSQL--07-SparkContext类和SparkConf类
  10. nolo手柄配对不上_nolo手柄连接不上
  11. 当技术遇上管理,Linaro 与 CSDN 掌舵人对话开源现状及下一代技术趋势
  12. linux 删除已输入的命令
  13. SQL SERVER 数据库修复方法 (数据库变为 “可疑“)
  14. 信息安全快讯丨秋风乍起,微雨渐凉
  15. SpringBoot重点详解--事件监听
  16. 区块链游戏 对战游戏NFT游戏模式开发方案
  17. Monjes Budistas - Live Mantra(2008)[古典红底红花边]
  18. 带密码的php文件管理器,PHP文件管理器Tiny File Manager账号密码修改方法
  19. BZOJ 3036 绿豆蛙的归宿
  20. 标准和非标poe交换机如何选择

热门文章

  1. 20151221jquery学习笔记--验证插件
  2. Jquery easy ui datagrid動態加載列問題
  3. 【wikioi】1014 装箱问题
  4. CCF 201809-2 买菜
  5. OneNET麒麟座应用开发之五:获取加速度传感器ADXL345数据
  6. 使用ExtJs实现文件下载
  7. (转)Android调试运行时错误之Process XXX terminated by signal (11)
  8. 卸载oracle 10g
  9. 布局--------动态添加 相对布局
  10. 漫谈 Clustering (5): Hierarchical Clustering