我正在使用 16 位 MCU PIC24HJ64GP504 来编写基于 CAN 的应用程序。基本上,这是我的板子和另一个节点之间的通信,它使用 CAN 以 1 Mbit/s 的速度不断地向我的板子发送数据。我正在将我的 PIC24 中的 ECAN 模块配置为以 1 Mbit/s 的速度工作。我编写代码的方式是,在前 10 毫秒内,ECAN 模块将接受来自另一端的所有消息,之后我重新配置 ECAN 模块以仅接受那些消息 ID 为 0x13 的消息。
现在问题来了……另一个节点和我的电路板同时通电。另一个节点在上电 40 毫秒左右后开始发送消息。但我无法在我的板上收到任何消息。现在,如果我先给我的电路板加电,给它一些时间用新的过滤器重新配置 ECAN 模块并稳定下来,然后给另一个节点加电,然后一切正常。
现在最奇怪的部分...如果我在我的板子和另一个节点之间连接了一个 CAN 总线分析器,即使我同时给两个节点加电,一切正常...不需要先给我的板加电. 我已经用来自不同制造商的三种不同的总线分析仪进行了尝试,并得到了相同的结果。
在我看来,在重新配置 ECAN 模块期间,需要一些时间来安定下来。并且随着总线分析器在总线中的引入,这段时间不知何故被缩短了,这样一切都可以完美运行。但我不确定问题到底是什么。