can-bus - 带有 RevPi CAN Connect 的 SocketCAN 错误被动。硬件或软件问题?
问题描述
我们为Revpi Connect购买了一个CAN Connect模块,并按照 Kunbus 论坛上的这个帖子中的说明进行了设置。据我们了解,这将提供适当的终止。
我们还遵循了 Revolution PI 提供的本指南。
检查 CAN 模块的驱动程序是否正确加载时,一切正常:
$ dmesg | grep can
[ 4.616900] hi3110 spi0.0 can0: 3110 successfully initialized.
[ 107.049422] IPv6: ADDRCONF(NETDEV_UP): can0: link is not ready
[ 107.049463] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
检查 ip 统计信息会给出以下结果:
$ ip -det -statistics link show can0
5: can0: mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0
can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0
bitrate 50000 sample-point 0.875
tq 1250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
hi3110: tseg1 2..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
clock 16000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 0 0 0 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
但是,当我们打开candump
并使用 发送消息cansend
时,candump
不会显示任何流量。
如果我们dmesg
再次检查 CAN,我们会得到以下结果:
$ dmesg | grep can
[ 4.616900] hi3110 spi0.0 can0: 3110 successfully initialized.
[ 107.049422] IPv6: ADDRCONF(NETDEV_UP): can0: link is not ready
[ 107.049463] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
[ 292.285353] can: controller area network core (rev 20170425 abi 9)
[ 292.297811] can: raw protocol (rev 20170425)
如果我们ip -statistics
再次检查,我们可以看到连接的状态已经进入ERROR-PASSIVE
:
$ ip -det -statistics link show can0
5: can0: mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0
can state ERROR-PASSIVE (berr-counter tx 128 rx 0) restart-ms 0
bitrate 50000 sample-point 0.875
tq 1250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
hi3110: tseg1 2..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
clock 16000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 0 1 1 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
我们正在尝试50kbps
与具有高速和 FT 设置的 Ixxat USB2CAN v2, at 的计算机进行通信,但似乎没有任何效果。重置连接,似乎将其恢复为ERROR-ACTIVE
状态。
当尝试与上述计算机通信时,使用另一台装有 Socketcan 的计算机和另一台 Ixxat USB2CAN v2 设备,一切正常。
我也许还应该提到,如果我们打开loopback
,我们可以看到我们正在发送的消息。
我们正在努力了解这是硬件还是软件错误。我们的终止安排妥当吗?SocketCAN中是否有我们忽略的神奇设置?我们应该从哪里开始调试这个问题?
任何帮助将不胜感激。
解决方案
推荐阅读
- c++ - 尝试使用类时出现标识符错误
- hyperledger-fabric - AccessException:作曲家网络 ping 不生成证书
- shell - 如何将目录中的所有内容移动到子目录中?
- javascript - 无法通过“findById”和 save() 更新文档
- mysql - MySQL 是否记录行创建日期?
- android - 从列表视图点击位置获取数据
- jquery - Jquery 改进了点击时的 .css() 动画
- javascript - Javascript 前端和 Python 后端之间的计时器延迟故障排除
- php - MySQL 查询显示没有结果
- c# - 语音识别程序随机显示预定义的单词(在'GramarBuilder()'中定义),用于那些语法中不存在的口语单词