我已经购买了Seeed Studio Can Bus Shield V1.2,我在以200kbps的速度收听公交车时遇到了问题,但我已成功上市到我的汽车公共汽车上。
我有一辆运行速度为200kps的无证公交车(它不是汽车公共汽车)我需要嗅探,公交车上有3台设备。 canh和canl之间的阻抗为60欧姆。我已经切断了P1跳线并检查了螺钉端子接线时阻抗仍为60欧姆。 我把公交车地面插到了盾构地面。
我正在使用lib提供的receive_check示例。我已将总线速度设置为200kbps。
这辆公共汽车很好但没有收到任何东西。接收数据时Rx指示灯闪烁,我在MCP2551的引脚4上有信号,但没有显示任何信号。
为了确保做得好,我已将盾牌/ arduino插入我的车里。我的车以500kps的速度运行公交车。我让它以正确的方式工作,Arduino开始显示一条消息。
我有一台可以解码CAN BUS信息的picoscope示波器。
我的示波器毫无困难地对can总线消息进行解码。位时间约为5微秒,示波器自动配置为200kbps。
我比较了我的汽车和我的设备消息,它们看起来非常相似。我在oscillon上使用完全相同的设置(速度除外)来解码这两个消息。 我能看到的唯一区别是我的设备信号不像汽车的信号那么干净。
这是我的汽车信号(500kbps)
这是我设备的信号(200kbps)
有时它有点吵,在这种情况下,oscillo无法解码,但大部分时间都是成功的。
这可能是问题的一部分吗? 我是否应该不时得到明确的信息?我没有得到任何。
我一直想知道配置是否适合200kbps的速度,所以我安装了维基页面上提到的中文工具。
对于我的速度200kbps,lib配置为:
#define MCP_16MHz_200kBPS_CFG1 (0x01)
#define MCP_16MHz_200kBPS_CFG2 (0xFA)
#define MCP_16MHz_200kBPS_CFG3 (0x87)
我已尝试过这种速度的其他配置,但没有成功。
#define MCP_16MHz_200kBPS_CFG1 (0x01)
#define MCP_16MHz_200kBPS_CFG2 (0xF5)
#define MCP_16MHz_200kBPS_CFG3 (0x85)
我也在CanBus lib中打开了调试模式 我在init上收到更多消息,但是当收到数据时,arduino保持沉默。
CAN BUS Shield init ok!
Enter setting mode success
set rate success!!
Enter Normal Mode Success!!
CAN BUS Shield init ok!
我使用的是Arduino Mega。
我该怎么办?问题是什么?
感谢您的帮助
答案 0 :(得分:0)
阅读数据表。 MCP2515需要处于仅侦听模式。 重置后,设备自动进入配置模式。然后,您将调用适当的功能以将设备置于仅监听模式。
所有答案都在阅读和理解的CAN总线库文件中。
仅收听模式是您需要利用库的一项私有功能。