关于CAN总线的被动错误标志的问题?
关于CAN总线的被动错误标志的问题?
4 个回答
谢谢。
挺久没接触相关内容了,我凭印象答一下,不一定对,供参考。
1. 检测到任何错误的情况下发送,比如Bit Error、Stuff Error等,我没记错的话应该是检测到错误的下一位就发送,有特例。
CAN总线有一条设计原则:当节点自身出现错误时,避免干扰其它正常节点的运行。当节点进入Error-Passive时,表明自身已检测到较多次错误且未恢复,但此时从宏观来看,无法确定错误是否由自身导致,因此将其Error Flag缄默掉是符合CAN总线的设计原则的。
(以上原因是我脑补的。)
2. 违反位填充,但未必触发Stuff Error,因为CAN总线具有显性位“吃掉”隐性位的特性。当其它节点仍在正常通信时,Error-Passive节点发送的Error Flag对总线不造成影响;但如果总线上只剩下Error Frame,则能够触发Stuff Error。
收藏感谢
CAN总线中主动错误和被动错误的通俗解释
首先建议把广泛使用的“主动错误”和“被动错误”概念换成“主动报错”和“被动报错”。
1. 主动报错站点
只要检查到错误,它立即“主动地”发出错标识。所谓“出错标识“,它本身就是一个“错误的位序列”(连续的6个显性位,不满足CAN协议的“最多5个连续的同性位”要求),目的是“主动地”告诉大家:即使你们没有发现“刚才我已发现”的错误,现在我“以身作则”出错啦!你们该看到这个错误了吧!
2. 被动报错站点
如果检查到错误,它只能干瞪眼“被动地”等别人(主动报错站点)报错,等待的时候它可不能去动总线(发了的隐性错误标志,也不能被总线上其他节点察觉到),直到识别出由主动报错站点发出 的“错误的位序列”,它才松了一口气:有人正式报错了!然后他就可以去竞争总线,该干啥干啥。
3. 出错标识本身没有什么优先级的问题。
4. 对于通过竞争得到总线使用权的发送站点来说,它在一边发一边听,有可能出现以下几种情况:
(a) 它自己就发现错误,它就干脆哗啦哗啦,乱发一气(连续的发六个同性位)。目的就是告诉别人(别的站点):出错了!
(b) 它自己没有发现错误,但作为主动报错的接收站点发现了错误(比如因为线路长,干扰大引起的错误),这个发现错误的站点就会立即哗啦哗啦往总线上乱发一气(连续的发六个显性位)。目的就是告诉你自己以及告诉别人(发送站点和别的站点):出错了!
(c) 它自己没有发现错误,但作为被动报错的接收站点发现了错误(比如因为线路长,干扰大引起的错误),这个发现错误的站点只能慢慢的等待,等待别的主动报错站点报错。如果别的主动报错站点没发现错误,那就继续等,一直等到该发ACK的时候不给发送站发这个显性的ACK信号,当然了其他站点可能会发这个ACK,那说明其他站点没有发生错误,没办法,别人能正常通信,你不能!然后积攒到一定的时候,你就脱离总线吧!再继续等待一段时间,脱胎换骨,重新回到总线上(这个时候错误记录都清0了,你变成了主动报错站!)。
就象你在学校课堂黑板上写字,写错一个笔画你自己没发现,但被别的经常写错字的同学(被动报错站点)发现了,但他不能说,非常尬(老师同学们早不信他了,他自己经常写错字),他就只能等,等老师来发现你的错误(等待主动报错站点报错),但有时候老师没眼力,那他就只能等到老师问大家“他写的对不对”的时候,他不说话表示抗议(不发ACK)(他的抗议没人吊他的),不过老师却主动说你写的对(给你发ACK)!那位同学没办法,只能含着泪默默的在心里记一刀(错误计数+1)继续等,等到他也当老师了(脱胎换骨了)终于看到别人错误的时候,能跳出来叫一声!你丫写错了傻比!...
以上为转自网络,已经找不到源头了,再加上我的一点杜撰,应该比较好理解CAN错误帧这一段了
收藏感谢收起
对于第二个问题,发送出的被动错误标志是六个连续的隐性位,总线上的规则是线与,所以如果还有其他信息发送的话这些隐性位会被盖掉(遇到显性位的话),所以不会引起位填充错误,感觉你问的主要是这个
收藏感谢
1 被动错误的发送时机?
错误帧分两种情况
a 位错误、位填充错误、格式错误、应答错误产生后,都是在当前发送的下一位发送错误帧;
b CRC检验错误发生后,不立即发送错误帧,而是放在ACK界定符后发送。
2 被动错误标志(6个连续隐性位)也违反了位填充,是否会触发位填充错误?
任何状态下的六个连续相同位都违反位填充,但不是所有的都会触发位填充错误,要看有没有在总线上表现出来六个连续相同的位。如果总线上只剩下错误被动被动节点,则会触发位错误;
收藏感谢
关于CAN总线的被动错误标志的问题?的更多相关文章
- CAN总线学习总结——错误帧和错误状态
CAN总线学习总结——错误帧和错误状态 标签: 数据 / 错误帧 / 错误状态 / CAN总线 / 总线协议 253 一.五种CAN总线可能发生的错误 1.CRC错误: 接收节点计算出的CRC校验值, ...
- CAN总线学习记录之三:总线中主动错误和被动错误的通俗解释
首先建议把广泛使用的"主动错误"和"被动错误"概念换成"主动报错"和"被动报错". 1. 主动报错站点 只要检查到错误, ...
- CAN总线远程帧和错误帧
远程帧 通常,数据传输是由数据源节点(例如,传感器发出数据帧)自主完成的.但也可能存在目标节点向源节点请求发送数据的情况.要做到这一点,目标节点需发送一个远程帧,其中的标识符应与所需数据帧的标识符相匹 ...
- 【单片机通信协议】CAN总线基础知识
CAN总线基础知识(一) 1.1 CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠 ...
- CAN总线基础知识(三)
1.CAN协议 1.1 帧类型 通讯时使用下面5个类型的帧: 数据帧 遥控帧 错误帧 过载帧 帧间空隙 在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置. 数据和遥控帧有两种格式: ...
- CAN总线基础知识(一)
1.CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠性. CAN控制器通过组成总线 ...
- CAN总线要点
前言 CAN总线的应用在现在看来越来越广泛,我厂设备从最初的ARM9与ARM7平台.期间升级过度到CortexA8与Cortex M3平台,再到现在的Cortex M4平台,围绕CAN进行了一系列产品 ...
- 【转】汽车CAN总线
概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而 ...
- CAN总线协议 学习笔记
1.CAN总线网络 CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻,但是 ...
随机推荐
- 【代码笔记】iOS-Transition动画
一,工程图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...
- html页面跳转传递参数
效果如下: a页面 点击跳转按钮后 在b页面可以获取到对应的值. 代码如下: a页面: <!DOCTYPE html> <html> <head lang="e ...
- onlyoffice文档协作的权限开发,利用casbin和golang语言
登录用户,对于已经进行了权限设置的文档,将根据权限数据库,比对用户名,当与用户有关时,就显示相对应的权限,当都与登录用户无关时,则显示拒绝访问: 对于未登录用户,已经设置了权限的文档,都将显示拒绝访问 ...
- Expo大作战(十四)--expo中消息推送的实现
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- win10 安装microsoft.net framework3.5
转载于:https://www.windows10.pro/win10-net-framework-3-5/ 之前手残不小心把microsoft.net framework3.5删了,结果导致Sql ...
- Oracle EBS FA 资产编号跳号
- SQL Server 合并复制遇到identity range check报错的解决 (转载)
最近帮一个客户搭建跨洋的合并复制,由于数据库非常大,跨洋网络条件不稳定,因此只能通过备份初始化,在初始化完成后向海外订阅端插入数据时发现报出如下错误: Msg 548, Level 16, State ...
- http的断点续传
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段. HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Co ...
- Year 2038 problem (2038年问题)
From Wikipedia, the free encyclopedia Animation showing how the date would reset, represented ...
- MYSQL导入csv类型的数据出现The MySQL server is running with the --secure-file-priv option
今天尝试使用 into outfile导出数据的时候出现错误: The MySQL server is running with the --secure-file-priv option so it ...