CAN总线常见的错误帧及产生原因

  文章转载链接www.51testing.com/html/63/n-7...

  CAN(Controller Area Network)总线是一种广泛应用于汽车、工业自动化等领域的串行通信协议。在 CAN 总线通信过程中,可能会出现多种错误帧,本文介绍常见的几种

  一、位错误(Bit Error)

  1. 表现形式

  节点在发送某一位时,期望总线上出现与自己发送相同的电平,但实际监测到的电平与发送的电平不一致。

  例如,节点发送一个显性位(逻辑 0),但在总线上检测到隐性位(逻辑 1)。

  2. 产生原因

  这可能是由于电磁干扰、线路故障、收发器故障等原因导致信号在传输过程中发生畸变。

  二、填充错误(Stuff Error)

  1. 表现形式

  CAN 总线采用位填充技术,即当连续出现 5 个相同极性的位后,发送节点会自动插入一个相反极性的位。

  如果接收节点在接收数据时,发现连续出现 6 个相同极性的位而没有插入填充位,或者填充位的极性错误,就会检测到填充错误。

  2. 产生原因

  这通常是由于发送节点的位填充逻辑出现故障或者数据传输过程中的干扰导致填充位丢失或极性改变。

  或者 未接收到报文

  或者 接收节点波特率配置错误

  三、CRC 错误(CRC Error)

  1. 表现形式

  CAN 帧中包含一个 CRC 序列,用于检测数据在传输过程中是否发生错误。

  发送节点根据帧的内容计算出一个 CRC 值,并将其附加在帧的后面。接收节点在接收到帧后,会根据接收到的帧内容重新计算 CRC 值,并与接收到的 CRC 序列进行比较。如果两者不相等,则认为出现 CRC 错误。

  2. 产生原因

  这可能是由于数据在传输过程中受到干扰,导致部分位发生改变,从而使计算出的 CRC 值与接收到的 CRC 序列不一致。

  四、格式错误(Form Error)

  1. 表现形式

  CAN 帧有特定的格式,包括帧起始、仲裁场、控制场、数据场、CRC 场、应答场和帧结束等部分。

  如果接收节点在接收帧时,检测到某个场的格式不符合规定,例如帧结束位不是隐性位,或者应答场的格式错误等,就会检测到格式错误。

  2. 产生原因

  这可能是由于发送节点的帧格式生成逻辑出现故障或者数据传输过程中的干扰导致帧格式被破坏。

  五、应答错误(ACK Error)

  1. 表现形式

  在 CAN 总线通信中,当接收节点正确接收到一个有效的帧后,会在应答场中发送一个显性位作为应答信号。

  发送节点在发送完帧后,会在应答场中监测是否接收到应答信号。如果发送节点在应答场中没有检测到显性位,即没有接收到应答信号,则认为出现应答错误。

  2. 产生原因

  这可能是由于接收节点没有正确接收到帧,或者接收节点出现故障无法发送应答信号,也可能是应答信号在传输过程中受到干扰而丢失。

  六、超时错误(Timeout Error)

  1. 表现形式

  当发送节点在规定的时间内没有收到接收节点的应答信号,或者接收节点在规定的时间内没有接收到数据帧,就会产生超时错误。

  2. 产生原因

  这通常是由于网络负载过重、节点故障或者是通信线路故障等原因导致的。

相关推荐
Jiude19 小时前
AI面对真机调试也束手无策?我将方法论形成了一套SKILL 🛠️🤖
前端·后端·测试
胡图图不糊涂^_^1 天前
白盒测试——动态测试——逻辑覆盖法
笔记·测试·动态测试·白盒测试·逻辑覆盖法
胡图图不糊涂^_^2 天前
测试BUG篇
学习·bug·测试
刘棕霆2 天前
11—你的 Judge 准吗:LLM-as-Judge 偏差校准实践
测试
刘棕霆3 天前
10—把 SkillSentry 接入 CI:每次改动都有质量门禁
测试
编程探索者小陈4 天前
接口自动化测试(一)
python·测试
1candobetter4 天前
单接口性能测试实践总结:压测方案设计、成功判定与 JVM 监控分析
java·jvm·压力测试·测试
学代码的真由酱5 天前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试
小当家1057 天前
如何评估你的 Skill 质量——从触发准确率到输出质量的系统方法
测试
编程探索者小陈9 天前
【测试】之测试分类篇
测试