代码之家  ›  专栏  ›  技术社区  ›  Bob

可以随机接收,暂时失败

  •  0
  • Bob  · 技术社区  · 5 年前

    我在用 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总线上没有其他通信量。

    问题

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

    我也很感激任何调试策略。

    0 回复  |  直到 5 年前