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.

[参考译文] MSPM0L1306:LIN 演示代码 LIN_Responder 问题(LIN 主器件重新启动或从器件重新加电时、TX&Rx 异常意外)

Guru**** 2553450 points
Other Parts Discussed in Thread: MSPM0L1306, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1563892/mspm0l1306-issue-with-lin-demo-code-lin_responder-tx-rx-abnormal-accidental-when-lin-master-restart-or-slave-repower

器件型号:MSPM0L1306
主题: SysConfig 中讨论的其他器件

工具/软件:

你好

我运行了演示代码 LIN_Responder 和 MSPM0L1306 LaunchPad 开发套件。 LIN 主器件是矢量 VN1630。

演示代码几乎没有变化、请参见下图。  

TX 和 RX 异常、在 DL_UART_EXTEND_IIDX_RX 中断后进入其他条件时、无法恢复。

当 LIN 主器件在 LIN 从器件保持上电的情况下开始周期性停止时、发生 意外;或者在 LIN 从器件上电关闭 周期性且 LIN 主器件保持 工作时发生意外。

为什么接收到的同步字节不是 0x55? 可以调用什么函数来重新启动 LIN,我尝试使用 DL_UART_EXTEND_RESET (),但没有变化。

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

    尊敬的:
    计算校验和时、为什么要将所有 PID 设置为零? 我认为这会影响您的 LIN 通信、因为校验和应在计算中包含 PID。 与您提到的 else 条件一样、原始示例中的状态似乎是 StateMachine = LIN_STATE_WAIT_FOR_BREAK;而不是 LIN_STATE_BREake_field。 我建议使用示例中的原始状态、看看它是否解决了问题。 我还建议将 gAutoBaudUsed 选项保留在其中、因为这有时有助于避免这种错误的功能。 您可以使用 DL_UART_EXTEND_RESET () 或切换模块的电源、但需要重新配置 UART LIN 模块。

    此致、

    Diego Abad

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

    尊敬的 Diego:

    感谢您的信息。

    PID 0x3C 和 0x3D 是经典校验和。

    变量 StateMachine 已设置为原始状态 LIN_STATE_WAIT_FOR_BREAK、但问题也是如此。

    gAutoBaudUsed 选项在哪里? 我在 TRM 中未找到自动 buad? MSPM0L1306 是否支持自动缓冲?

    复位 LIN 必须调用什么函数? 我使用 SYSCFG_DL_LIN_0_init ()、但它不起作用。

    当问题发生时、我发现同步时间无效、请在下图中输入 else 条件。

    谢谢!

    Johnny

     

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

    尊敬的:
    自动波特率是通过代码内的过程处理的选项、我们大多数示例默认都包含该代码。 这里有一个指向 您可以为该器件复制的代码的链接。  

    您将使用复位功能或关闭/打开功能来复位 UART-LIN 模块。 但是、执行此操作后、您需要重新配置它。 您可以在 ti_dl_sysconfig.c 文件中找到这些函数。  

    此致、

    Diego Abad

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

    尊敬的 Diego:

    我在其他上升沿中断检测中添加代码、问题似乎已解决。 请帮助确认变更是否存在潜在风险。 谢谢!

    BR

    Johnny

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

    尊敬的:
    我认为这不应该有问题。 很高兴听到代码似乎正常工作。

    此致、

    迭戈·巴德

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

    尊敬的:

    我建议调试代码、以便确保收到的每个数据都是正确的数据、并了解校验和为什么会为您提供错误的值。 我确实看到、您有一种方法可以找到与示例不同的校验和、但我不确定它是否会影响检查传入校验和以及您在那里计算的校验和的最终结果(第 184 到 199 行)。 但是、我建议使用两个不同的校验和变量、以避免混合这两个过程的值。

    此致、

    Diego Abad

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

    尊敬的 Diego:

    问题已解决。

     mspm0_sdk_2_06_00_05 的演示代码“lin_commander_LP_MSPM0L1306_nortos_ticlang"有“有 3 处变化。

    1、校验和计算公式;

    2、当发生上升沿中断并且 gStateMachine =LIN_STATE_SYNC_FIELD_NEG_EDGE 时、必须调用 REINIT;

    3、 在接收中断字段后调用禁用 Rx 中断