关于RDKx5的CAN驱动错误帧问题

目前系统版本3.2.2 miniboot也已更新

我的x5是用于开发一个整车CAN控制器用,can初始化ip link set can0 type can bitrate 500000这些目前是写在开机脚本中,但是我发现如果can线束在RDK启动前接入整车,板卡启动过程中这小几十秒整车can总线就会产生大量错误帧直到启动脚本以及我的can应用跑起来后恢复正常,另外尝试过将rdk提前启动,启动完成后并入整车can也不会报错

有几个疑问烦请解答~
1、可能板载的TCAN4550在上电后,加载的是寄存器默认配置,直到linux启动完成驱动接管这段时间与整车普通CAN 500k配置不匹配导致错误帧?
2、能否将TCAN4550配置成驱动接管前禁用状态,直到驱动接管后正常使能
3、我将RDK的CANH CANL GND接入示波器观察,发现CANL有两v多,CANH有4v多,超出正常3.3v的io范围,不太清楚是为什么

遇到相同问题 求解答

您好,您的猜测可能是正确的

关于驱动接管前禁用 TCAN4550 ,可能需要修改设备树或驱动来实现,我们也开放了芯片手册SDK,您可以看看有没有相关功能实现方式 1.7 下载资源汇总 | RDK DOC

CAN 总线的 CANH 和 CANL 电压不是 3.3V IO 电平,这应该是正常的:

  • CAN 总线是差分信号,CANH 通常在 2.5V-3.5V,CANL 在 1.5V-2.5V
  • 隐性状态(idle):CANH 和 CANL 都约 2.5V
  • 显性状态(active):CANH 约 3.5V,CANL 约 1.5V
  • 您测到的 CANH 4V 多和 CANL 2V 多,如果总线上有其他设备在发送,是有可能的
    建议您观察差分电压(CANH - CANL),正常应该在隐性时接近 0V,显性时约 2V。

临时解决方案:

  • 提前启动 RDK:您已经验证这个方法有效,可以先用这个
  • 尽早初始化 CAN:将 CAN 初始化脚本放到尽可能早的启动阶段(如 rc.local 最前面或 systemd early service)
  • 外加硬件隔离:在 RDK 和整车总线之间加一个 CAN 中继器或隔离器,带使能控制

有问题欢迎继续反馈