This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8335万:F2.8335万的CAN通信错误处理

Guru**** 2553440 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/630934/tms320f28335-can-communication-error-handling-of-the-f28335

部件号:TMS320F2.8335万

尊敬的各位:  

我正在使用连接到CANBus的三个F2.8335万 DSP。 由于应用程序需要高可靠性,我必须保证CAN 通信中的数据传输以及读取正确完成。 读取 错误消息 并在以后相应地进行确认对应用程序来说是致命的。 因此,我提出了以下问题:

  1. 在应用程序级别,我如何使用与CAN通信相关的各种错误和状态标志?何时使用它们?
  2. 如果给定消息的CRC不匹配,是丢弃消息还是设置了错误标志,让其进入?
  3. 如果给定消息的ACK不匹配,则消息是被丢弃还是被设置了错误标志而被允许?
  4. 对于这种情况,如果设置了“错误和状态寄存器(Canes)”中的任何错误,消息会发生什么情况?
  5. 是否可以中断“错误和状态寄存器(Canes)”中设置的任何位?

提前感谢大家的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Manex,
    CAN使用CRC来验证接收到的消息的完整性。 虽然使用的机制相当强大,但100 % 并非万无一失。 换言之,虽然未检测到的错误发生的概率非常小,但它不是零。 (见 users.ece.cmu.edu/.../etran.pdf)
    因此,任何邮件损坏(传输过程中)都很可能被CRC机制捕获。

    1.在应用程序级别,如何使用与CAN通信相关的各种错误和状态标志?何时使用它们?
    答:这完全取决于应用程序。 没有一种"正确"的方法可以做到这一点。


    2.如果给定消息的CRC不匹配,则消息是被丢弃还是被设置了错误标志而被允许?
    答案:消息被丢弃。 根据协议规范,接收帧并检测到CRC错误的接收器应在ACK分隔符后发送错误帧。


    3.如果给定消息的ACK不匹配,则消息是被丢弃还是被设置了错误标志而被允许?
    答:ACK只是一个位,因此不存在“匹配”问题。 如果发射器没有收到ACK,它将永久地重新传输。


    4.对于这种情况,如果设置了“错误和状态寄存器(Canes)”中的任何错误,消息会发生什么情况?
    回答:任何错误都会导致生成错误帧并丢弃该消息。


    5.是否可以中断“错误和状态寄存器(canes)”中设置的任何位?
    答案:仅适用于总线关闭,错误被动和警告级别(请参阅CANGIF0/CANGIF1说明)