Raspberry Pi 3上的CAN FD比特率开关

2024-04-20 03:59:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图让两个带CAN FD屏蔽(MCP2517FD)的Raspi通过CAN FD进行通信。它实际上工作得很好,但一旦我将BRS设置为真,奇怪的事情就会发生,并且消息没有正确发送出去

我为这两个PI使用的设置与那一个非常相似:https://github.com/GBert/misc/tree/master/RPi-MCP2517

我在my/boot/config.txt中添加了以下行:

core_freq=250
kernel=ms7/zImage
device_tree=ms7/bcm2710-rpi-3-b.dtb
overlay_prefix=ms7/overlays/
dtoverlay=mcp2517fd-can0
dtparam=interrupt=25
dtparam=oscillator=40000000
dtparam=spimaxfrequency=20000000

发送和接收文件是用python编写的,几乎是从:https://github.com/skpang/PiCAN-FD-Python-examples复制的

如果我在BRS未激活的情况下发送消息,我会收到:


pi@raspberrypi:~/Desktop $ python receive.py 

CAN Tx test
Bring up CAN0....
Ready
 1585041201.788182 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.808952 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.830066 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.851458 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.872531 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.893586 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.914766 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.935900 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.957289 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.978357 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041201.999257 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041202.020625 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041202.042069 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041202.062888 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041202.083847 1 0 123 8 1 2 3 4 5 6 7 8 
 1585041202.104733 1 0 123 8 1 2 3 4 5 6 7 8 

到目前为止一切都很好。 现在我发送相同的消息,但BRS设置为True:


CAN Tx test
Bring up CAN0....
Ready
 1585042868.352613 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.372650 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.372807 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.372949 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.373283 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.393287 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.393603 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.414106 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.414431 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.434750 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.435073 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.455482 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.455801 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.476293 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.476358 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.476461 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.476531 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.476863 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.497091 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.497158 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.497273 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.497595 1 1 123 8 1 2 3 4 5 6 7 8 
 1585042868.517904 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518014 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518133 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518226 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518320 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518439 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518558 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518678 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518815 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518870 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.518991 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.519087 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.519267 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.519425 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.519550 0 0 8 8 0 0 0 0 0 0 0 0 
 1585042868.519683 0 0 8 8 0 0 0 0 0 0 0 0 

结果在大多数情况下是不同的。我发送了16条消息,但只收到其中的一部分(总是一个不同的号码)。此外,如果我从同一RasPi发送更多消息,则在发送RasPi时会出现以下错误:


Traceback (most recent call last):
  File "send.py", line 32, in <module>
    bus.send(msg)
  File "/home/pi/.local/lib/python2.7/site-packages/can/interfaces/socketcan/socketcan.py", line 626, in send
    sent = self._send_once(data, msg.channel)
  File "/home/pi/.local/lib/python2.7/site-packages/can/interfaces/socketcan/socketcan.py", line 649, in _send_once
    raise can.CanError("Failed to transmit: %s" % exc)
can.CanError: Failed to transmit: [Errno 105] No buffer space available

有时拉斯皮会冻僵,我不得不让他闭嘴

两种配置的比特率和采样点相同

在设置BRS时如何使其正常运行,或者为什么会发生这种情况

提前非常感谢


Tags: inpysend消息linepi情况can