You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单节点CAN总线持续报错致通信失效问题求助

单节点CAN总线发送报文触发大量ERROR-PASSIVE报错及隐性失效问题

场景

  • 设备配置:搭载USB2CAN适配器的PC
  • 总线状态:仅本地一个节点在线,另一节点(车辆线缆)可能断开连接
  • 问题现象:单节点发送CAN报文时,每秒产生大量ERROR-PASSIVE报错,最终导致CAN总线隐性失效——重启PC后CAN接口状态显示正常,但无法传输任何报文
  • 尝试情况:使用cansend即可触发故障,更换gs_usb驱动(python-can)、调整qlen参数均无效

接口状态信息

$ ip a l can0
4: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
    link/can

# qlen已调至100000,无效;线缆连接后状态恢复为ERROR-ACTIVE;断开线缆时error-warn+1,error-pass每秒增长约2000
$ ip -details -statistic link show dev can1
5: can1: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 100000
    link/can  promiscuity 0 minmtu 0 maxmtu 0 
    can state ERROR-PASSIVE restart-ms 0 
          bitrate 500000 sample-point 0.875 
          tq 125 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
          gs_usb: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..1024 brp-inc 1
          clock 48000000 
          re-started bus-errors arbit-lost error-warn error-pass bus-off
          0          0          0          3          10578541   0         numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
    RX: bytes  packets  errors  dropped missed  mcast   
    84628424   10578553 0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    2          1        0       0       0       0

其他信息

  • 操作系统:Debian(Crunchbang++)
  • CAN配置命令:ip link set can1 type can bitrate 500000
  • 额外情况:换用其他厂商USB转CAN适配器仍出现相同问题;仅断电重启适配器可恢复;软件断电USB端口无效;厂商仓库存在类似未解决问题

设备日志

$ lsusb --tree -v
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        ID 0424:5534 Microchip Technology, Inc. (formerly SMSC) Hub
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        ID 0424:2134 Microchip Technology, Inc. (formerly SMSC) Hub
        |__ Port 2: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M
            ID 0eef:c000 D-WAV Scientific Co., Ltd Multitouch Capacitive Touchscreen eGalaxTouch EXC3188-4643-08.00.00.00 Sirius_4643 PCAP3188UR Series [IIyama Prolite PLT1932MSC
        |__ Port 3: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
            ID 1a40:0101 Terminus Technology Inc. Hub
            |__ Port 1: Dev 9, If 1, Class=Application Specific Interface, Driver=, 12M
                ID 1d50:606f OpenMoko, Inc. Geschwister Schneider CAN adapter
            |__ Port 1: Dev 9, If 0, Class=Vendor Specific Class, Driver=gs_usb, 12M
                ID 1d50:606f OpenMoko, Inc. Geschwister Schneider CAN adapter
            |__ Port 2: Dev 10, If 0, Class=Vendor Specific Class, Driver=gs_usb, 12M
                ID 1d50:606f OpenMoko, Inc. Geschwister Schneider CAN adapter
            |__ Port 2: Dev 10, If 1, Class=Application Specific Interface, Driver=, 12M
                ID 1d50:606f OpenMoko, Inc. Geschwister Schneider CAN adapter

$ dmesg
...
[    9.697798] usb 2-1.3.2: New USB device found, idVendor=1d50, idProduct=606f, bcdDevice= 0.00
[    9.697802] usb 2-1.3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    9.697805] usb 2-1.3.2: Product: USB2CAN v1
[    9.697807] usb 2-1.3.2: Manufacturer: InnoMaker
[    9.697810] usb 2-1.3.2: SerialNumber: 002C00...
...
[   10.154148] gs_usb 2-1.3.1:1.0: Configuring for 1 interfaces
[   10.154921] gs_usb 2-1.3.2:1.0: Configuring for 1 interfaces
[   10.155372] usbcore: registered new interface driver gs_usb
...
[   12.461996] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
...
[   15.439110] IPv6: ADDRCONF(NETDEV_CHANGE): can1: link becomes ready
[   15.572371] can: controller area network core
[   15.572501] NET: Registered protocol family 29
[   15.589581] can: raw protocol

Python CAN Viewer日志

Count   Time           dt          ID          DLC  Data (changed)
17      0.002219       0.000000    0x004       8    00 30 00 00 00 00 80 00
208182  122.054997     0.000723    0x024       8    00 30 00 00 00 00 80 00
# 我的测试报文
14      0.000000       0.000000    0x123       2    12 34

期望与待测试方案

  • 期望效果:移除CAN连接器后发送报文仅触发单次错误,无报错级联
  • 待测试方案:
    • 启用loopback模式
    • 用虚拟CAN处理未应答错误
    • 配置适配器自ACK报文

内容的提问来源于stack exchange,提问作者The Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:27:07