我正在尝试读取带有覆盆子的车辆上的CAN总线(CAN连接到覆盆子上的DB9连接器)。汽车也为覆盆子提供能量。
这是我的堆栈:
CAN协议博世"ISO 15765 CAN“
CAN总线板PiCAN3
机器:覆盆子π4
司机/巴士类型:socketCAN
图书馆:罐用
我按照这些指示
#added this in /boot/config.txt and reboot
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi-bcm2835-overlay
#create the can interface on divice can0 with a bitrate at 500 kbps
sudo /sbin/ip link set can0 up type can bitrate 500000
#connect the PiCAN to a CAN-BUS network, and listen to it:
candump can0
#a data stream is supposed to appear here, but nothing happens...
Note1:当我在终端中打开另一个选项卡并使用命令发送can消息时:
cansend can0 7DF#0201050000000000
两行数据确实出现在听can0的选项卡中,就像它只显示我发送的内容,而不显示车辆发送的内容。
Note2:以下是命令ifconfig用于can0设备的结果
#ifconfig (only can0)
can0: flags=193<UP,RUNNING,NOARP> mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
有人知道为什么我能从车上得到零数据吗?
下面是我尝试过的教程,尽管如此,问题仍然是一样的:
1:铜工艺
2:露天车库
3:哈里森盒子
发布于 2021-09-09 19:36:30
我们显然不能远程调试您的硬件,所以这里有一些通用的可以调试通知。
经典的CAN错误是忘记启用/安装120欧姆终端电阻。你可以很容易地用伏特来测量它(当一切都关闭时)。
另外,您应该在ip -d -s link show can0
中看到总线状态,如果一切都是正确的或者是静默的,它应该是ERROR_ACTIVE
。(嗯,也许不是每个司机都支持它。但是你应该去寻找你的司机的任何错误计数器,并了解它们的意义。)
当您断开CAN总线,然后发送几个帧时,您应该会看到错误计数器增加(因为总线ACK上没有其他设备)。最终总线状态应该改变,所以不再是ERROR_ACTIVE
。
https://stackoverflow.com/questions/69089178
复制相似问题