CAN总线简明易懂教程(三)
二、远程帧
通过发送远程帧,总线的节点发出远程帧,请求以前发送给它数据帧的节点再发送一遍。具体发送哪个数据帧,由远程帧的标识符决定。
与数据帧类似,远程帧也有标准格式和扩展格式,而且都由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总线简明易懂教程(三)相关推荐
- CAN总线简明易懂教程(一)
先看看工作原理 当 CAN 总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收. 每组报文开头的11 位字符为标识符,定义了报文 ...
- python3操作mysqldb_Python3操作Mongodb简明易懂教程
Pymongo是python的一个操作Mongodb的库. 下面我们直接简列出一些常用操作命令. 连接数据库 链接数据库需要提供一个地址和接口即可.首先还是要导入包. from pymongo imp ...
- OpenGl文章
Android OpenGL ES 简明开发教程
Android OpenGL ES 简明开发教程 分类:android学习笔记2011-12-14 15:04375人阅读评论(0)收藏举报 ApiDemos 的Graphics示例中含有OpenGL ...
- [静态时序分析简明教程(三)]备战秋招,如何看懂一个陌生的timing report
备战秋招,如何看懂一个陌生的timing report 一.写在前面 1.1 快速导航链接· 二.Timing Report 2.1 起始点与终止点 2.2 路径时钟域的归属 2.2 建立时间检查与保 ...
- 《简明python教程》笔记一
读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info 安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...
- 《简明Python教程》读书笔记
<简明Python教程>读书笔记 开篇: 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷,另一种是把它做得很复杂以至于找不到明显的缺陷. --C. AR. Hoare ...
- Visual SourceSafe简明培训教程
名称 Visual SourceSafe简明培训教程 (Visual SourceSafe Training Short Course) 作者 晨光(Morning) 简介 对于采用Visual ...
- 简明docker教程
简明docker教程 一.什么是docker 二.docker与虚拟机比较 三.安装docker 四.基本概念 1.镜像 2.容器 3.数据卷 4.挂载 五.参考资料 有收获的话请加颗小星星,没有收获 ...
- python简单入门_Python简明入门教程
本文实例讲述了Python简明入门教程.分享给大家供大家参考.具体如下: 一.基本概念 1.数 在Python中有4种类型的数--整数.长整数.浮点数和复数. (1)2是一个整数的例子. (2)长整数 ...
最新文章
- C语言,分解质因数一个解法!_只愿与一人十指紧扣_新浪博客
- Vue——prop双向绑定解决方案
- MySQL数据库编译过程
- 只需一行代码,完美呈现Markdown格式,写作展示两不误
- php paerser,GitHub - iSinser/sinser-php-sdk: 迅析PHP SDK
- lisp文字上标源码_删除重叠文字源码 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - 源码,程序 - Powered by Discuz!...
- XJTUOJ wmq的队伍(树状数组求 K 元逆序对)
- [导入]屏蔽相应键盘按钮
- css3滚动倾斜,jQuery 3D倾斜滚动页面效果
- zabbix 2.2节点批量安装
- python是最好的语言_Python转Crystal语言或许是个不错的选择
- 如何终止运行中的线程
- php $act,PHP_php Undefined index和Undefined variable的解决方法,$act=$_POST['act']; 用以上代码总 - phpStudy...
- 前端响应式布局与Bootstrap栅格系统快速了解与应用
- 【渝粤题库】陕西师范大学209019 鲁迅研究 作业(专升本)
- 5、LiveCharts--简介(一)
- 003_创建simulink文件
- yum是干什么的_刨根问底:什么是yum源,yum的工作原理又是什么
- 【LeetCode学习计划】《算法-入门-C++》第13天 位运算
- Doxygen 使用说明
热门文章
- 一位被信号与系统耽误了的漫画家
- 150kHz无线导航信号接收板调试-Ver2
- java环境配置好了还不行,java配置环境java不行
- java 9宫格抽奖_前端js实现九宫格模式抽奖(多宫格抽奖)
- mysql 连续签到天数_天天拿帮会通宝 帮会签到真给力
- django安装mysql_django+mysql安装和设置
- eltable刷新整个表格方法_Word表格函数计算怎么做?都在这篇!
- android ajax 跨域更新本地html,本地webapp是怎么解决跨域问题的?
- mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
- c语言文件可用代码存放,C语言 文件(示例代码)