问题描述
我这几天遇到了一个问题,我的 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 帽子,信号就变得凌乱了。而且我只能发送如上所述的一帧。
Compulab 在 IOT-Gate-RPI 上给出的引脚排列也是第三张图片中的引脚排列。你会根据图 4 给出哪个引脚?
1 = ? 2 = ? 3 = ? 4 = ? 5 = ? 6 = ?
非常感谢您的帮助。
最好的问候
解决方法
所以我刚收到 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)
感谢大家的帮助,我学到了很多!