2026-07-14
硬件-通讯电路
0

目录

一、实际电路现象情况
二、AI提供的分析思路
✅ CAN 数据段出现错误注入的常见原因
🔥 原因 1:监听节点(RX)检测到位错误(Bit Error)
🔥 原因 2:RX 节点检测到填充位错误(Stuff Error)
🔥 原因 3:CRC 错误
🔥 原因 4:硬件层问题(最容易被忽视)
■ 采样点配置不一致
🔥 原因 5:发送节点(TX)本身出错
📌 如何快速判断是 RX 还是 TX 注入错误?
📘 总结
数据段出现错误注入的核心原因可能是:
三、实际排查定位

一、实际电路现象情况

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

图片.png

图片.png

图片.png

二、AI提供的分析思路

下面我给你从工程实战角度解释:在仅有两个节点(一个发送、一个只监听)的 CAN 标准帧通信中,数据段出现“错误注入”(Error Injection)的常见原因是什么,以及如何判断。

你这个场景很典型:没有仲裁冲突,只可能是错误帧导致的中断


CAN 数据段出现错误注入的常见原因

CAN 总线上发生错误注入,意味着一个节点在错误检测到异常后,主动发送 Error Frame(主动错误标志 6 个显性位)

因为你只有两个节点(一个 TX,一个 RX),所以错误一定来自这两个节点之一。

下面按概率从高到低总结。


🔥 原因 1:监听节点(RX)检测到位错误(Bit Error)

监听节点应该被动接收,但如果它检测到:

  • 实际读取的位 ≠ 应该接收到的位
  • 且该位是非仲裁段/非 ACK 槽(即数据段)

监听节点会认为发送方发错了,会立即注入错误帧(6 个显性位)。

常见触发点:

  • 总线干扰 / EMI(电机、开关电源、继电器)
  • 总线反射(终端电阻问题)
  • 节点 A 输出隐性,但节点 B 读到显性
  • RX 采样点选择不当(比如 85% 过高或过低导致采样在边沿处)

工程经验判断:

如果你看到:
数据段中任意某位被“强行拉成显性” → 大概率是被动节点注入错误帧。


🔥 原因 2:RX 节点检测到填充位错误(Stuff Error)

CAN 在出现 5 个连续相同位后必须插入一个反转位(stuff bit)。

如果 RX 检测到:

  • 连续 6 个相同位出现 → 立即发错误帧

常见原因:

  • 波形畸变导致 RX 把某个位采样错了,使得它以为已经连续 5 个相同位
  • 发送节点填充位逻辑出错(较少见)
  • 不同节点时钟偏差太大 → 边沿漂移导致采样错误

🔥 原因 3:CRC 错误

如果 RX 计算出的 CRC 与发送方 CRC 不一致,也会发错误帧。

常见原因:

  • 总线干扰导致某位错误 → CRC 自然不一致
  • 数据段某位被误判后,CRC 校验必然失败

特点:
通常 CRC 错误发生在 CRC 字段之后,而不是数据段中,但其来源仍可能是数据段中的干扰。


🔥 原因 4:硬件层问题(最容易被忽视)

以下问题非常常见且隐蔽:

■ 终端电阻问题

  • 少终端、终端断线
  • 多终端(3 个以上)
  • 终端阻值不是 120Ω

→ 会引起反射 → 某些位畸变 → RX 误判 → 错误注入

■ CAN 收发器损坏或虚焊(重点排查)

  • TX/RX 引脚虚焊
  • CAN transceiver(如 TJA1050、SN65HVD 等)的 recessive/ dominant 输出弱驱动
  • CANH/CANL 压差不足(正常 dominant 时差值应 > 1.5V)

■ 共模偏移 / 地线差太大

两个节点之间地不一致,CAN 收发器会进入错误状态并发送 Error Frame。

■ 采样点配置不一致

  • 一个节点 87.5%
  • 一个节点 75%

会导致某些边沿处产生采样错误 → 触发错误注入。


🔥 原因 5:发送节点(TX)本身出错

虽然 TX 理论上应该牢牢控制位发送,但以下问题也可能导致 TX 误发并触发错误:

  • 它自己检测到位监测错误
    (发隐性却看到显性 → 说明总线上有干扰)
  • TX 驱动能力不足
  • TX 时钟漂移导致比特边界错误

📌 如何快速判断是 RX 还是 TX 注入错误?

如果可以抓总线波形,用示波器或 CANalyzer 观察:

① 如果出现 6 个连显性位(Error Flag)

——这就是主动错误帧。

② 看“错误帧”之前的那一位

  • 如果该位 TX 发送的是 隐性,但总线上变成了 显性 → 是 RX 注入错误
  • 如果 TX 发送显性却出现隐性 → 可能是 TX 损坏或总线断开

📘 总结

在你这个两节点系统中:

数据段出现错误注入的核心原因可能是:

  1. RX 节点检测到 Bit Error(最常见)
  2. 填充位错误(Stuff Error)
  3. CRC 校验错误
  4. 硬件层故障(终端电阻、收发器故障、线束、共模偏移)
  5. TX 自己检测错误(驱动问题/时钟问题)

三、实际排查定位

  1. 由于CAN收发器的斜率控制有点缓,到底TX->差分(上下边缘有点缓慢)->RX接收有延时。
  2. 由于发送数据里,有多个连续的0x00。CAN 在出现 5 个连续相同位后必须插入一个反转位(stuff bit)。
  3. 把CAN收发器的斜率调整为最大,就能避免CAN通讯的错误注入的问题产生。

PS:这类带斜率控制的收发器,适合使用于低速CAN(<100Kbps)。如果使用速度高的CAN通讯,配合使用CAN控制器的采样点,能提供更细的时间量子(TQ)和PH SEG1,PHSEG2更多位数(>=4bit)。

本文作者:ZeroEngineer

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!