您好,
我有CPU2在1MHz高精度时钟上处理Cana IO。 我正在处理一个2016 Mac工作簿,该工作簿在Parallels之上托管Windows 10安装。
要测试通信, 我使用的是PCASN-USB Pro和PCAN-Viewer。 我让PCAN查看器每隔1毫秒发送一条消息。 我注册了16个CAN对象(8 Rx,8 TX)。 其中我只使用了2。 PC到C2000的消息ID为0x200.0002万。 响应消息ID为0x100万。
下面是我想知道的问题:我 找到偶尔错过的消息(按10^5的顺序为2-6)。 我觉得奇怪的是,当我将CAN消息接收置于ISR上,接收状态中断并累积它们时,我会得到每个入站消息的状态中断,但是,我不会得到接收数据的消息对象的中断。 我认为排除测试作为错误源是合理的,因为接收状态中断始终与测试硬件/软件发送的消息数一致。 在什么情况下可以获得状态中断,但不能获得消息中断?
我尝试了几种方法来进一步确定问题的特点:
—在每次发生接收状态中断时,向CAN核心查询所有接收到的消息。
—禁用接收中断,并查询主循环中的CAN核心。
—将传输速率更改为2毫秒。
发送10^6条消息@ 2毫秒后,我没有显示丢失消息。 所以问题似乎与时间有关。 理论上,我应该能够每秒发送8K消息。 因此,总线应仅在25 % 的时间内处于繁忙状态。
我希望更好地了解这种情况如何发生,以及如何防止这种情况发生。 也许更精通此目标的CAN IO的人可以提出此问题的考虑因素。
非常感谢!
斯蒂芬