BeagleBone Black CAN通信无报文、config-pin报错问题咨询
BeagleBone Black CAN1通信故障修复方案
配置修正
- 删除
/boot/uEnv.txt中多余的CAN0 overlay配置,避免引脚资源冲突,仅保留CAN1配置:
删掉uboot_overlay_addr4=/lib/firmware/BB-CAN0-00A0.dtbo行,修改后对应配置段为:uboot_overlay_addr4=/lib/firmware/BB-CAN1-00A0.dtbo - 加载CAN设备树overlay后,对应引脚的pinmux控制权直接交给设备树,
config-pin命令无法再操作这些引脚,你遇到的ERROR: open() for /sys/devices/platform/ocp/ocp:P9_24_pinmux/state failed, No such file or directory属于正常现象,不属于故障,无需额外处理。
驱动与接口状态验证
- 重启后执行
dmesg | grep can,确认输出包含CAN核心驱动、c_can平台驱动加载日志,无报错信息。 - 执行
ip link show can1,确认can1接口正常存在,无消失、报错情况。
接口参数配置
- 执行接口启动命令,补全与对端设备一致的波特率,以下为250K波特率配置示例:
ip link set can1 up type can bitrate 250000 - 配置完成后执行
ip -s link show can1,确认接口状态为UP,RX/TX错误计数为0。
硬件排查
- 必须外接TJA1050、MCP2551这类CAN收发器:BeagleBone Black引脚输出的是CAN控制器的TTL电平,不是CAN总线所需的差分电平,无收发器的情况下无法输出正常CAN报文,示波器也无法捕获到有效信号。
- 接线确认:P9.24连接收发器的RX引脚,P9.26连接收发器的TX引脚,收发器的CAN_H、CAN_L接总线,总线两端必须各接一个120Ω终端电阻。
- 测试发送
cansend can1 300#AC.AB.AD.AE.75.49.AD.D1,用示波器接CAN_H与CAN_L可捕获到差分电平跳变。
内容的提问来源于stack exchange,提问作者Seth
相关产品推荐
相关产品推荐

