我是CAN协议的新手,通过了Robert Bosch的CAN规范ver2.0 B部分.我无法理解第63页的以下几行
"注意:启动/唤醒:如果在启动期间只有一个节点在线,并且该节点发送了一些消息,它将不会得到确认,检测到错误并重复该消息.它可能变为'错误被动'但不是'由于这个原因,巴士关闭."
据我所知,当发送器检测到错误时(如确认错误),它会重新发送消息并将发送错误计数(TEC)增加8.因此,如果只有一个节点,则每次发送时其TEC应增加8一旦TEC超过255,就应该进入"总线关闭"状态.
有人可以解释为什么规范说它只能"错误被动"而不是"总线关闭"?
我想你错过了规范的这一部分(第62页):
"例外1:
如果TRANSMITTER是'错误被动'并且由于未检测到"显性"ACK而检测到ACKNOWLEDGMENT ERROR,并且在发送其PASSIVE ERROR FLAG时未检测到"显性"位."
在这种情况下,TEC不会改变!
因此,在您的情况下,当网络中的唯一节点每次重新发送并且TEC变为> = 128时,它变为"错误被动".然后上面的异常情况变得有效!TEC不再变化!因此没有'公共汽车'.