二、远程帧

通过发送远程帧,总线的节点发出远程帧,请求以前发送给它数据帧的节点再发送一遍。具体发送哪个数据帧,由远程帧的标识符决定。

与数据帧类似,远程帧也有标准格式和扩展格式,而且都由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。

与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码DLC的数值是不受制约的(可以标注为容许范围0~8里的任何数值),此数值是相应于数据帧的数据长度代码。远程帧结构如图所示:

远程帧结构

三、错误帧

错误帧由两个不同的场组成,第一个场是不同节点提供的错误标志(Error Flag)的叠加,第二个场是错误界定符。

为了能正确地终止错误帧,“错误认可”的节点要求总线至少有长度为3个位时间的总线空闲。因此,总线的载荷不应为100%。错误帧结构如图:

错误帧结构(图中统一起见出错帧改为错误帧)

(1) 错误标志,有两种形式的错误标志:激活错误标志 和 认可错误标志

“激活错误”标志由6个连续的“显性”位组成;

“认可错误”标志由6个连续的“隐性”的位组成,除非被其他节点的“显性”位重写。

(2) 错误界定符,错误界定符包括8个“隐性”的位。

错误标志传送了以后,每一个节点就发送一个“隐性”的位,并一直监视总线直到检测出一个“隐性”的位为止,然后就开始发送其余7个“隐性”位。

四、过载帧

过载帧(Overload Frame)包括两个位场:过载标志 和 过载界定符,其结构如图:

过载帧结构图

有三种过载的情况会引发过载标志的传送:

接收器的内部情况,需要延迟下一个数据帧和远程帧。

在间歇(Intermission)的第1和第2字节检测到一个“显性”位。

这里有个间歇的概念。我们可以讲讲。间歇属于帧间空间的一部分。它包含三个隐性位。间歇期间,所有的站不允许传送数据帧或远程帧。它唯一要做的就是标示一个过载条件。

如果CAN节点在错误界定符或过载界定符的第8位(最后一位)采样到一个显性位,节点会发送一个过载帧。该帧不是错误帧,错误计数器不会增加。

(1)过载标志(Overload Flag)

过载标志由6个“显性”的位组成。过载标志的所有形式和“激活错误”标志的一样。

(2)过载界定符(Overload Delimiter)

过载界定符包括8个“隐性”的位。

五、帧间空间

数据帧(或远程帧)与先行帧的隔离是通过帧间空间实现的,无论此先行帧类型如何(数据帧、远程帧、错误帧、过载帧)。

帧间空间包括间歇、总线空闲的位场。如果“错误认可”的节点已作为前一报文的发送器,则其帧间空间除了间歇、总线空闲外,还包括称作“挂起传送”(暂停发送)(Suspend Transmission)的位场。

对于不是“错误认可”的节点,或作为前一报文的接收器的节点,其帧间空间如图:

非 “错误认可”帧间空间

对于作为前一报文发送器的“错误认可”的节点,其帧间空间如图:

“错误激活”帧间空间

(1)总线空闲(Bus Idle)

总线空闲的时间是任意的。只要总线被认定为空闲,任何等待发送报文的节点就会访问总线。在发送其他报文期间,有报文被挂起,对于这样的报文,其传送起始于间歇之后的第一个位。

总线上检测到的“显性”的位可被解释为帧的起始。

(2)挂起传送(Suspend Transmission)

“错误认可”的节点发送报文后,节点就在下一报文开始传送之前或总线空闲之前发出8个“隐性”的位跟随在间歇的后面。

如果与此同时另一节点开始发送报文(由另一节点引起),则此节点就作为这个报文的接收器。

最后用脑图总结:

再来几张实物图:

CAN总线接收芯片

CAN总线控制器芯片

标准数据帧波形捕获

扩展数据帧波形捕获

CAN总线简明易懂教程(三)相关推荐

  1. CAN总线简明易懂教程(一)

    先看看工作原理 当 CAN 总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收. 每组报文开头的11 位字符为标识符,定义了报文 ...

  2. python3操作mysqldb_Python3操作Mongodb简明易懂教程

    Pymongo是python的一个操作Mongodb的库. 下面我们直接简列出一些常用操作命令. 连接数据库 链接数据库需要提供一个地址和接口即可.首先还是要导入包. from pymongo imp ...

  3. OpenGl文章 Android OpenGL ES 简明开发教程

    Android OpenGL ES 简明开发教程 分类:android学习笔记2011-12-14 15:04375人阅读评论(0)收藏举报 ApiDemos 的Graphics示例中含有OpenGL ...

  4. [静态时序分析简明教程(三)]备战秋招,如何看懂一个陌生的timing report

    备战秋招,如何看懂一个陌生的timing report 一.写在前面 1.1 快速导航链接· 二.Timing Report 2.1 起始点与终止点 2.2 路径时钟域的归属 2.2 建立时间检查与保 ...

  5. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  6. 《简明Python教程》读书笔记

    <简明Python教程>读书笔记 开篇: 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷,另一种是把它做得很复杂以至于找不到明显的缺陷. --C. AR. Hoare ...

  7. Visual SourceSafe简明培训教程

      名称 Visual SourceSafe简明培训教程 (Visual SourceSafe Training Short Course) 作者 晨光(Morning) 简介 对于采用Visual ...

  8. 简明docker教程

    简明docker教程 一.什么是docker 二.docker与虚拟机比较 三.安装docker 四.基本概念 1.镜像 2.容器 3.数据卷 4.挂载 五.参考资料 有收获的话请加颗小星星,没有收获 ...

  9. python简单入门_Python简明入门教程

    本文实例讲述了Python简明入门教程.分享给大家供大家参考.具体如下: 一.基本概念 1.数 在Python中有4种类型的数--整数.长整数.浮点数和复数. (1)2是一个整数的例子. (2)长整数 ...

最新文章

  1. C语言,分解质因数一个解法!_只愿与一人十指紧扣_新浪博客
  2. Vue——prop双向绑定解决方案
  3. MySQL数据库编译过程
  4. 只需一行代码,完美呈现Markdown格式,写作展示两不误
  5. php paerser,GitHub - iSinser/sinser-php-sdk: 迅析PHP SDK
  6. lisp文字上标源码_删除重叠文字源码 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - 源码,程序 - Powered by Discuz!...
  7. XJTUOJ wmq的队伍(树状数组求 K 元逆序对)
  8. [导入]屏蔽相应键盘按钮
  9. css3滚动倾斜,jQuery 3D倾斜滚动页面效果
  10. zabbix 2.2节点批量安装
  11. python是最好的语言_Python转Crystal语言或许是个不错的选择
  12. 如何终止运行中的线程
  13. php $act,PHP_php Undefined index和Undefined variable的解决方法,$act=$_POST['act']; 用以上代码总 - phpStudy...
  14. 前端响应式布局与Bootstrap栅格系统快速了解与应用
  15. 【渝粤题库】陕西师范大学209019 鲁迅研究 作业(专升本)
  16. 5、LiveCharts--简介(一)
  17. 003_创建simulink文件
  18. yum是干什么的_刨根问底:什么是yum源,yum的工作原理又是什么
  19. 【LeetCode学习计划】《算法-入门-C++》第13天 位运算
  20. Doxygen 使用说明

热门文章

  1. 一位被信号与系统耽误了的漫画家
  2. 150kHz无线导航信号接收板调试-Ver2
  3. java环境配置好了还不行,java配置环境java不行
  4. java 9宫格抽奖_前端js实现九宫格模式抽奖(多宫格抽奖)
  5. mysql 连续签到天数_天天拿帮会通宝 帮会签到真给力
  6. django安装mysql_django+mysql安装和设置
  7. eltable刷新整个表格方法_Word表格函数计算怎么做?都在这篇!
  8. android ajax 跨域更新本地html,本地webapp是怎么解决跨域问题的?
  9. mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
  10. c语言文件可用代码存放,C语言 文件(示例代码)