工具与软件:
各位专家、您好!
我有一个我们观察到的非常奇怪的问题。 将多个 CAN 设备连接到网络时、我们有时(大约50%的时间)可以发现除一个设备之外的所有设备。 如果网络上有5个、有时4个将是可发现的。 如果我们添加另一个设备、有时仍然只有一个设备不可发现。 我们已经发现了多达30个设备、发现了29个设备、发现了3个设备、发现了2个设备。
问题的性质如下:
- 有问题的设备仍将通过内部计时器触发发送消息。
- 这意味着中断针对 TX 正常工作
- 有问题的设备将接收到发送到 FIFO0的消息。 当消息被发送到该器件时、我们会观察 FIFO 填充情况、但器件永远不会将其从 FIFO 中取出。
- FIFO0 RX 中断永远不会被触发。
- 问题设备并非始终是同一个设备。 它通常是同一个器件、但可以通过下电上电在一段时间内自行更改/修复。
- 创建中断后、返回 systemP_SUCCESS、指示中断应正常工作。
我们有一个 CAN RX 任务、它与演示代码中的许多其他任务一样运行、在顶部有一个 while 循环、并且有一个不确定的信标、在等待信标发布(这应该在 MCAN ISR 中发生)。 虽然如果 FIFO 不为空、可以观察 FIFO 填充级别并发布信标、但这似乎并不能解决内核问题。
对于 FIFO 收到新消息时寄存器为何不发布中断、您有什么见解吗? 据我所知、寄存器已正确启用、如网络上的 n-1个其他器件所示。
提前感谢您。