微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux MCP2551 CAN 总线:一帧后停止工作

如何解决Linux MCP2551 CAN 总线:一帧后停止工作

我这几天遇到了一个问题,我的 Can Bus 在发送第一条消息后停止工作。

我使用 IOT-Gate-RPI 作为客户端,它具有 raspBerry pi 3 计算模块和带有用于 can 总线的 MCP2551 芯片的集成帽子。 在线路的另一边,作为监视器,我使用在 W10 上运行的 IXXAT 软件 CANAnalyzer 3 Mini。

这是我在 Linux 上的设置: 在 /Boot/config.txt 上,我添加了:

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi0-hw-cs #(For Kernel > 4.4.x)

我还确保它将在启动时安装:

auto can0
iface can0 inet manual
    pre-up /sbin/ip link set can0 type can bitrate 125000 triple-sampling on restart-ms 100
    up /sbin/ifconfig can0 up
    down /sbin/ifconfig can0 down

然后,使用 can-utils:

$sudo ip link set can0 up
$cansend can0 111#1122334455667788 #Random message

到目前为止,很好,消息出现在另一边的监视器上。但是,如果我再次发送它,什么也没有出现,我必须将 can0 设置为向下然后再向上设置才能发送新消息。

[编辑 2021-02-10] 正如@Lundin 所问,我使用 oscillo 检查信号形状。 所以只是为了解释新设置,数据由连接在 CAN 总线上的 BMS(电池管理系统)连续发送。在第一张图片上,只有这个 BMS 和一个 IXXAT CAN 到 USB 加密狗。信号非常整齐,所有数据都安全到达。在第二张图片上,我只是插入了 IOT-Gate-RPI 的 MCP2515 帽子,信号就变得凌乱了。而且我只能发送如上所述的一帧。

Picture_1

Picture_2

Compulab 在 IOT-Gate-RPI 上给出的引脚排列也是第三张图片中的引脚排列。你会根据图 4 给出哪个引脚?

1 = ? 2 = ? 3 = ? 4 = ? 5 = ? 6 = ?

Picture_3

Picture_4

非常感谢您的帮助。

最好的问候

解决方法

所以我刚收到 Compulab 支持的回复,声明的中断引脚有问题,它是 13 而不是 25。

在 /Boot/config.txt 上:

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=13
dtoverlay=spi0-hw-cs #(For Kernel > 4.4.x)

感谢大家的帮助,我学到了很多!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。