话不多说,直接进入主题,对我们的CAN总线错误帧之一的位错误进行刨析举例。没看过之前文章《CAN通信之错误帧(一)》的朋友,建议先看看这篇文章,本系列的文章均是以该文章为基础大纲进行展开。
目录
1、位错误
通过前面的文章 《CAN通信之错误帧(一)》,相信大家对位错误已经有了一定的概念,下面我们就对位错误进行实例解析,相信通过以下内容,位错误对大家便不再是模糊概念了。若有讲解错误的地方也欢迎大家指出,共同进步。
2、位错误之实例
假设有一个简单的CAN网络,包含两个节点A和B。节点A想要向节点B发送一个数据帧。
2.1、发送过程
数据帧中包含一系列的位(显性位和隐形位)。在发送每个几点位的同时,节点A也在监控总线状态,以确保发送的位能够正确地出现在总线上。
2.2、位错误的发生
当节点A发送一个显性位(逻辑“0”)时,它期望在总线上看见显性电平,但是由于某些原因(线缆损坏、电磁干扰、节点输出驱动器故障或总线上有其它节点同时发送显性位),节点A在监控时发现总线上出现的隐性电平(逻辑“1”)。
2.3、错误检测与响应
此时节点A检测到发送的显性位与监视到的隐性位不一致,这时就会被识别成一个位错误。一旦检测到位错误,节点A会立即停止当前帧的发送,并主动发送一个错误标志(连续6个显性位)来通知网络中的其他节点出现了错误。紧随错误标志之后,节点A发送一个错误界定符(8个连续的隐性位)来标志错误帧的结束。
2.4、错误后的处理
节点A和B中的错误计数器会增加,以记录发生的错误。如果错误计数器超过了预定的阈值,节点可能会进入错误被动状态或关闭总线,这主要是取决于错误管理策略。
3、导致位错误的原因
3.1、物理层故障
如线缆损坏、连接器问题或终端电阻不匹配
3.2、电磁干扰
外部电磁源可能干扰CAN信号,导致位错误,不过这种可能性较低
3.3、发送节点的硬件故障
类似驱动器损坏,导致无法正确驱动总线。这里不理解驱动器的,可以看看作者的历史文章《CAN通信为什么需要CAN收发器辅助?》。
3.4、总线上的冲入
如果有两个或两个以上的节点同时尝试发送显性位,就会导致总线上的冲突。
4、总结
综上,位错误的产生是不是如此简单?逻辑上相信大家已经理解了,我们第三章所说的原因,也可以帮助大家在处理错误帧时提供一定的帮助,欢迎实践后的朋友评论区留言,分享实践的成果,也让更多的朋友能得到自我提升。