首先的搞清楚一个“线与”概念,也就是说如果一个设备单元向总线发出了0(即显性),则总线上的就呈现0(显性),总线是不受隐形控制的。
所以问题1错误帧出现时总线是由主动错误状态的那个设备单元控制的,其他只能监听或者处于“发送”显性状态(这个显性状态不会影响到总线)。
8位隐形位这个概念可能只对这个被动错误的这个单元设备有意义,规范上不是有这么一句话嘛,“如果与此同时另一站开始发送报文(由另一站引起),则此站就作为这个报文的接收器。”可见这8位是可被打断的。
问题2. 规范里面有这么一句话 “如果在使用位填充法进行编码的信息中,出现了第 6 个连续相同的位电平时,将检测到一个填充错误”。(如果连位填充的概念都不清楚,那我建议你先去贴吧看看)这个概念先放到这儿,待会儿会用到。
假设一个设备单元检测到了错误,并他的Error counter小于127,则他处于主动错误状态,这个时候总线由他控制,所以他会发送6个显性位,根据鉴定符的动作“错误标志传送了以后,每一站就发送“隐性”的位并一直监视总线直到检测出一个“隐性”的位为止。然后就开始发送其余7 个“隐性”位。”,这个时候总线就不由该主动错误设备控制了。但是6个“显性”位本身就构成了一个填充错误,所以这个时候还会触发其他设备的主动错误,其他主动错误的设备也会发送6个显性位,所以显性位序列最大就是12位了,由于前面数据位传输位就有可能是“显性”,这个数字也可以是比12小比6大的任何数字。
问题3. 根据错误检测定义,有5种错误类型,具体参见协议。所以错误检测本身就是某个设备的主动操作,只要满足错误出现的条件,就会被检测到。
这些东西都在规范里面有说,细细体会都能迎刃而解。有问题可以加我QQ 568727801
这个问题原本可以回答你的,可惜前不久看的。忘得差不多了。
1对于错误认可和错误主动这两个家伙,你最好看看英文是怎么写的。这样有利于你理解。
2从你问的问题,可以看出你是个搞学问的人,认真啊。其实老大,你问的这些个问题只有设计can芯片的人才需要深刻理解。如果你是搞应用的,大可不必追的太认真。
3这个按我的理解是不知道的。应该是这个节点自己知道,然后把自己关闭了。以免影响其他的节点。因为can的节点都是平等,发出信息采用广播的方式。也就是一广播大家都知道了,大家根据收到的信息作出反应(这个节点的程序里可以操作)。发送的信息根据优先级,由总线进行仲裁不至于大家冲突。
问题2:一个检测到出错状态的“错误激活”节点通过发出一个活动错误标志来对出错结果进行通报。这种出错标志的形式违反了位填充规则,也破坏了固定的位场形式。结果,所有其他节点也检测到一个出错状态,都各自送出一个人出错标志,所以在总线上实际检测到的显性位序列是由多个节点各自发出的不同出错标志叠加而成的。该序列的总长度最少为六位,最多为12位。
1.等待下一次总线空闲
2.因为每个节点都要发,可能有一定延迟
3.每个节点都会检测到,并且跟着发送错误标志
额