1、一个CAN节点,主动发送标准帧数据,偶发错误注入位信息; 2、统计Log数据和示波器波形,在发送多个0x00的时候,就容易出现偶发错误注入位信息;并且是发送端发送错误注入位。 3、CAN收发器选择SIT65HVD230DR,带斜率控制;



下面我给你从工程实战角度解释:在仅有两个节点(一个发送、一个只监听)的 CAN 标准帧通信中,数据段出现“错误注入”(Error Injection)的常见原因是什么,以及如何判断。
你这个场景很典型:没有仲裁冲突,只可能是错误帧导致的中断。
CAN 总线上发生错误注入,意味着一个节点在错误检测到异常后,主动发送 Error Frame(主动错误标志 6 个显性位)。
因为你只有两个节点(一个 TX,一个 RX),所以错误一定来自这两个节点之一。
下面按概率从高到低总结。
监听节点应该被动接收,但如果它检测到:
监听节点会认为发送方发错了,会立即注入错误帧(6 个显性位)。
常见触发点:
工程经验判断:
如果你看到:
数据段中任意某位被“强行拉成显性” → 大概率是被动节点注入错误帧。
CAN 在出现 5 个连续相同位后必须插入一个反转位(stuff bit)。
如果 RX 检测到:
常见原因:
如果 RX 计算出的 CRC 与发送方 CRC 不一致,也会发错误帧。
常见原因:
特点:
通常 CRC 错误发生在 CRC 字段之后,而不是数据段中,但其来源仍可能是数据段中的干扰。
以下问题非常常见且隐蔽:
■ 终端电阻问题
→ 会引起反射 → 某些位畸变 → RX 误判 → 错误注入
■ CAN 收发器损坏或虚焊(重点排查)
■ 共模偏移 / 地线差太大
两个节点之间地不一致,CAN 收发器会进入错误状态并发送 Error Frame。
会导致某些边沿处产生采样错误 → 触发错误注入。
虽然 TX 理论上应该牢牢控制位发送,但以下问题也可能导致 TX 误发并触发错误:
如果可以抓总线波形,用示波器或 CANalyzer 观察:
① 如果出现 6 个连显性位(Error Flag)
——这就是主动错误帧。
② 看“错误帧”之前的那一位
在你这个两节点系统中:
PS:这类带斜率控制的收发器,适合使用于低速CAN(<100Kbps)。如果使用速度高的CAN通讯,配合使用CAN控制器的采样点,能提供更细的时间量子(TQ)和PH SEG1,PHSEG2更多位数(>=4bit)。
本文作者:ZeroEngineer
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!