我在用
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
问题
绝大多数闪现的尝试,都没有问题。但是,每隔一段时间
主人
不会收到
奴隶
的
成功
又称作
0xFF
.
我的意思是
主人
不会开火即使
主人
的控制器+收发器在物理CAN级别确认消息。
为了调试这个问题,我增加了
counter_prg
在Tx中断中
当我发一封信
PROGRAM
命令和增量
counter_ack
在接收中断中
当我收到
0xFF型
.
由于未接收到预期的数据而发生超时时
0xFF型
,一个断点在应用软件级别被命中,我看到
counter_prg != counter_ack
即
counter_ack = counter_prg - 1
尽管我可以在总线上看到从机的0xFF,在物理层上看到控制器+收发器的ACK
CAN总线上没有其他通信量。
问题
发生这种情况有什么可能的原因?
我也很感激任何调试策略。