
一文读懂CAN通讯错误帧.pdf
2页广州致远电子 股份 有限公司 文库 资料 ©2016 Guangzhou ZHIYUAN Electronics Stock Co., Ltd. 文章源自 ZLG致远电子,转载或引用请注明出处 1 一文 读懂 CAN通讯 错误 帧 一文读懂 CAN 通讯错误帧 当前 CAN 总线通讯技术已经运用于各行各业之中,基本是每个总线设计工程师必学的一个通讯网络但什么是 CAN 通讯中的错误帧, 很 多人还是处于只知其名,不知其所以然的状态,也因此造成许多工程师在明知总线通讯出现问题却束手无策的困扰 1.1.1 错误标定 检测到错误条件的站通过发送错误标志指示错误对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息 只要检测到的错误的条件是 CRC 错误,错误标志的发送开始于 ACK 界定符之后的位(其他的错误条件除外) 1.2 故障界定 至于故障界定,单元的状态可能为以下三种之一: ‘ 错误主动 ’ ‘ 错误被动 ’ ‘ 总线关闭 ’ “错误主动”的单元可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。
“错误被动”的单元不允许发送主动错误标志错误被动”的单元参与总线通讯,在错误被检测到时只发出被动错误标志而且,发送以后,“错误被动”单元将在初始化下一个发送之前处于等待状态见“挂起发送”) “总线关闭”的单元不允许在总线上有任何的影响(比如,关闭输出驱动器) 在每一总线单元里使用两种计数以便故障界定: 发送错误计数 接收错误计数 这些计数按以下规则改变(注意,在给定的报文发送期间,可能要用到的规则不只一个): 当接 收器检测到一个错误,接收错误计数就加 1在发送主动错误标志或过载标志期间所检测到的错误为位错误时,接收错误计数器值不加 1 当错误标志发送以后,接收器检测到的第一个位为“显性”时,接收错误计数值加8 当发送器发送一错误标志时,发送错误计数器值加 8 例外情况 1:发送器为“错误被动”,并检测到一应答错误(注:此应答错误由检测不到一“显性” ACK 以及当发送被动错误标志时检测不到一“显性”位而引起) 例外情况 2:发送器因为填充错误而发送错误标志(注:此填充错误发生于仲裁期间引起填充错误是由于:填充位〈填充位 〉位于 RTR 位之前,并已作为“隐性”发送,但是却被监视为“显性”)。
例外情况 1 和例外情况 2 时,发送错误计数器值不改变 发送主动错误标志或过载标志时,如果发送器检测到位错误,则发送错误计数器值加 8 当发送主动错误标志或过载标志时,如果接受器检测到位错误(位错误),则接收错误计数器值加 8 在发送主动错误标志、被动错误标志或过载标志以后,任何节点最多容许 7 个连续 广州致远电子 股份 有限公司 文库 资料 ©2016 Guangzhou ZHIYUAN Electronics Stock Co., Ltd. 文章源自 ZLG致远电子,转载或引用请注明出处 2 一文 读懂 CAN通讯 错误 帧 的 “显性”位以下的情况,每一发送器将它们的发送错误计数值加 8,及每一接收器的接收错误计数值加 8: 当检测到第 14 个连续的“显性”位后; 在检 测到第 8 个跟随着被动错误标志的连续的“显性”位以后; 在每一附加的 8 个连续“显性”位顺序之后 报文成功传送后(得到 ACK 及直到帧末尾结束没有错误),发送错误计数器值减 1,除非已经是 0。
如果接收错误计数值介于 1 和 127 之间,在成功地接收到报文后(直到应答间隙接收没有错误,及成功地发送了 ACK 位),接收错误计数器值减 1如果接收错误计数器值是 0,则它保持 0,如果大于 127,则它会设置一个介于 119 到 127 之间值 当发送错误计数器值等于或超过 128时,或当接收错误计数器值等于或超过 128时,节点为“错误被动 ”让节点成为“错误被动”的错误条件致使节点发出主动错误标志 当发送错误计数器值大于或等于 256 时,节点为“总线关闭” 当发送错误计数器值和接收错误计数器值都小于或等于 127 时,“错误被动”的节点重新变为“错误主动” 在总线监视到 128 次出现 11 个连续“隐性”位之后,“总线关闭”的节点可以变成“错误主动”(不再是“总线关闭”),它的错误计数值也被设置为 0 备注: 一个大约大于 96 的错误计数值显示总线被严重干扰最好能够预先采取措施测试这个条件 备注: 起动 /睡眠:如果起动期间内只有 1 个节点,以及如果这个节点发送一些报文,则将不会有应答,并检测到错误和重复报文由此,节点会变为“错误被动”,而不是“总线关闭”。
