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.

[参考译文] LAUNCHXL-F2800157:通过 F2800157上的 DCAN 闪存编程器实用程序分析固件更新期间的错误处理

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1519426/launchxl-f2800157-analyzing-error-handling-during-firmware-updates-via-dcan-flash-programmer-utility-on-f2800157

器件型号:LAUNCHXL-F2800157
主题:C2000WARE 中讨论的其他器件

工具/软件:

您好 TI 社区、

我们将使用 F2800157 LaunchPad 上的 DCAN 闪存编程器实用程序测试固件刷写的可靠性、希望更好地了解此过程中的 CAN 行为较低。

设置概述:

  • 目标:LaunchPad F2800157
  • CAN 接口:PCAN USB Pro (双通道)
  • 编程工具:dcan_flash_programmer 实用程序、C2000Ware
  • 闪存内核:DCAN 闪存内核
  • 监控:在第二个通道上进行扫描查看(仅监听模式)

目标:
我们希望了解引导加载程序如何对位翻转、缺少 ACK 或 CRC 错误等通信错误做出反应、以便使更新过程在生产中更加可靠。

遇到的挑战:
在更新期间监控 CAN 总线时、我们只观察到与闪存内核和应用程序固件内容匹配的应用级有效载荷(例如 Rx 2 AA 08、Rx 2 C0 7A 等)。 但是、我们无法观察到:

  • CAN ACK 位或错误帧
  • 重传尝试次数
  • 任何协议级错误处理

我们要求澄清:

  1. 是否有诊断功能或工具可以更好地了解协议级别的更新过程?
  2. 我们如何模拟或观察更新过程中的通信错误?  
  3. 引导加载程序对损坏的 CAN 帧的响应是什么? 具体来说:

    1. 是否使用校验和或验证方法?

  4. 对于电气噪声环境中的生产环境、除了标准实用程序中实施的措施之外、我们还应考虑哪些额外的错误处理措施?

为了避免量产更新过程中出现问题、我们正在寻找改进错误处理方式的方法。 任何建议都将非常有帮助。

提前感谢您的支持。

此致、
Taif Shamsi

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

    尊敬的 Taif:

    在您正在执行的 CAN 协议测试中、您是否有意在运行 DCAN 闪存内核时向发送到 Launch-F2800157的 CAN 帧注入错误?  如何完成错误注入?  您是否尝试过查看我们有关 CAN 错误注入的应用手册?  

    SPRACQ3 (控制器局域网的可配置错误发生器)介绍了如何生成 DCAN 帧以及如何在 CAN 帧的任何部分中配置错误注入。  实现该目的的方法之一是在找到注入错误的所需位位置时使用 GPIO 进行位操作。  错误可在仲裁、控制、有效载荷和 CRC 部分中注入(位翻转)。 它还可以生成 CAN 帧而不会产生位填充。  GPIO 方法是最简单的方法、可通过另一个 LaunchPad 来完成该操作、该 LaunchPad 具有可直接驱动待测 Launch-F2800157中的 CAN 帧、或在环回模式下使用 launchF2800157本身接收具有注入错误的修改后 CAN 帧。

    所有 C2000器件中的 DCAN 都具有寄存器 CAN_ES (CAN 错误状态寄存器)、并包含字段 LEC (最后一个错误代码)。  在错误注入后检查该寄存器内容将报告错误、错误可以是填充、格式、ACK、位1、位0或 CRC。  相应的错误会使错误计数器递增、并且 CAN 协议会在满足错误阈值时采取措施。  应用手册以及注入的错误如何根据注入的错误影响 LEC 状态中也介绍了这一点。  TI 符合 CAN 协议错误处理标准。

    在重新传输方面、CAN 协议将自动重新传输仲裁失败、 受到错误干扰或尚未接收到任何 ACK 的帧。  只要未通过设置 CAN 控制寄存器中的 DAR 位禁用自动重传、这是正确的。  默认情况下、自动重新发送处于启用状态。

    最后、CAN 通信非常稳定、因为它可以耐受电气噪声、因为它使用差分总线(CANL/CANH)来消除共模噪声。  该检查还会检查使用 CAN 协议中的内置 CRC (15位多项式)例程、并作为传输帧的一部分自动计算和添加的数据完整性。  CAN 协议还会自动引入填充位、其中它添加了一个与最后一个位状态相反的位(其中至少有5个相同状态的连续位)、以确保传输的帧具有连续性。

    为了确保 CAN 总线正常运行、CAN 节点需要使用120欧姆阻抗端接、以更大限度地减少反射。  CAN 也对时序敏感、因此 要确保 CAN 时钟源稳定(有关位时序和容差、请参阅应用手册 SPRAC35;有关 物理层问题的调试检查清单和硬件调试提示、请参阅应用手册 SPRACE5)。

    此致、

    Joseph

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

    您好、Joseph:

    非常感谢您的详细说明。 这是非常有帮助的。

    只是为了确认:

    我是否正确理解 PCAN-View 等工具没有显示 ACK 位、重新传输尝试或错误帧等低级协议详细信息? 这些事件是否仅通过 CAN_ES 等内部寄存器(尤其是 LEC 字段)可见或通过重复消息间接可见?

    此外、您是否会建议使用任何诊断工具来提供对这些低级协议事件的更多可见性?

    再次感谢您的支持。

    此致、
    Taif

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

    尊敬的 Taif:

    对于我使用的峰值 CAN 或具有 CAN 功能的示波器、我不知道这些示波器能够显示 CAN 协议的简要详细信息。  因此、我们开发了可配置错误发生器来检查我们的 C2000 MCU 如何报告帧错误。  我认为可能有来自第三方的 CAN 诊断工具、但没有机会使用任何工具。

    此致、

    Joseph