可以随机接收,暂时失败

时间:2018-12-11 20:44:14

标签: embedded microcontroller interrupt can-bus nxp-microcontroller

我将MK60FX512VMD15处理器用于主服务器,并使用CAN总线与1Mbps上的波特率进行通信。

在闪烁序列中,主控以一种非常简单的方式与从属通信:

主控发送 PROGRAM THIS DATA
d0 06 ef 4e 6a d1 94 4e

从属回复SUCCESS
ff

重复了数千次

148.5361 1 7fe                    Rx d 8 d0 06 43 56 d9 08 7d f1 
148.5363 1 7ff                    Rx d 1 ff                      
148.5368 1 7fe                    Rx d 8 d0 06 92 76 a9 e6 55 88 
148.5370 1 7ff                    Rx d 1 ff                      
148.5376 1 7fe                    Rx d 8 d0 06 4b 4b 8e e7 a5 7c 
148.5378 1 7ff                    Rx d 1 ff                      
148.5402 1 7fe                    Rx d 8 d0 06 79 d3 27 6b 94 27 
148.5404 1 7ff                    Rx d 1 ff                      
148.5409 1 7fe                    Rx d 8 d0 06 76 de 49 b5 02 d9 
148.5410 1 7ff                    Rx d 1 ff                      
148.5416 1 7fe                    Rx d 8 d0 06 ca 81 f1 9a 61 73 
148.5418 1 7ff                    Rx d 1 ff                      
148.5423 1 7fe                    Rx d 8 d0 06 35 7c af eb 7d df 
148.5425 1 7ff                    Rx d 1 ff                      
148.5431 1 7fe                    Rx d 8 d0 06 13 56 29 4c bb 82 
148.5433 1 7ff                    Rx d 1 ff                      
148.5438 1 7fe                    Rx d 8 d0 06 ce 18 61 06 ca d6 
148.5439 1 7ff                    Rx d 1 ff                      

问题

绝大多数闪烁尝试都没有问题。但是,偶尔 master 不会收到从属SUCCESS0xFF

我的意思是,即使 master 的控制器+收发器确实在物理CAN级别上对消息进行了确认, master 上的接收中断也不会触发。

为调试此问题,我在发送counter_prg命令时在Tx中断中递增PROGRAM ,并在Rx中断中递增counter_ack 当我收到0xFF时。

当由于未收到预期的0xFF而导致超时时,在应用程序sw级命中了一个断点,我看到counter_prg != counter_ackcounter_ack = counter_prg - 1 在总线上看到从站的0xFF,在物理级别上看到控制器+收发器ACKS

此CAN总线上没有其他流量。

问题

发生这种情况的可能原因是什么?

我还要感谢任何调试策略。

0 个答案:

没有答案