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.

[参考译文] TMS320F2800157-Q1:启动 LIN 通信之前的 TMS320F2800157[LIN 通信] LIN 通信错误和放大器;启动 LIN 通信之前的启动延迟

Guru**** 2445440 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1523203/tms320f2800157-q1-tms320f2800157-lin-communication-lin-communication-error-startup-delay-before-initiating-lin-communication

器件型号:TMS320F2800157-Q1
主题:C2000WARE 中讨论的其他器件

工具/软件:

我在开发过程中有一个问题。

在执行开机/关机测试时、我遇到了 LIN 通信无法运行的间歇性问题 接地平面。

为解决此问题、我应用了以下解决方案并确认它现在按预期工作:

  1. LIN 寄存器的初始化

  2. 将 LIN 通信开始延迟到上电后的 50ms

Mag 我的问题是:

  1. 什么是 可能的原因 您能解释一下 为什么会发生这种情况

  2. 什么是 建议的延迟时间 在上电后开始 LIN 通信之前?

  3. 何时 初始化 LIN 寄存器 在那里 任何副作用或其他问题的风险

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

    您好:

    我先回答几个问题、然后再作一些解释。

    1. 通过对器件进行开/关测试、您执行了哪些复位? μ s
    1. 当您看到“ LIN 通信无法运行的问题“ 、这是否意味着在下一次复位之前、LIN 总线上不会有响应? 或者启动后只需要一段时间就可以开始工作?
    2. 如何初始化 LIN 模块? 在器件启动的哪个位置会发生这种情况(您能否共享代码)?
    3. 总体而言、您能详细介绍一下您的应用、以及 LIN 模块的预期作用、以及实际行为是什么吗?

    此致、

    Delaney  

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

    尊敬的[Delaney Woodward]:

    我希望此消息能帮您找到答案。

    我们目前在系统启动期间遇到与 LIN 通信相关的问题。 请参阅下面的问题摘要:


    MCU 输入电源开启和关闭

    1. 上电后、LIN 通信偶尔会无法立即启动、大约每 50 次下电上电一次。 在这种情况下、只有经过大约 10 分钟的延迟后、它才会开始正常工作。 此间歇性问题导致系统运行中断。

    2. 我们已尝试通过执行软件复位并执行 LIN 唤醒序列来恢复通信、如下所示:

    //启用 LIN 模式
    HWREG (LINA_BASE + LIN_O_SCIGCR0)|= 0;
    HWREG (LINA_BASE + LIN_O_SCIFLR)|= 0;
    HWREG (LINA_BASE + LIN_O_SCIFLR)|= LIN_SCIGCR1_LINMODE;

    // LIN 唤醒序列
    HWREG (LINA_BASE + LIN_O_SCIGCR0)|= 0;
    HWREG (LINA_BASE + LIN_O_SCIGCR1)|= 0;
    HWREG (LINA_BASE + LIN_O_SCIGCR1)|= LIN_SCIGCR1_SWNRST;
    HWREG (LINA_BASE + LIN_O_SCIFLR)|= LIN_SCIFLR_WAKEUP;

    3. MCU 本身正常运行;但是、LIN RX 和 TX 都无响应。 接通电源大约 10 分钟后、LIN 通信变为活动状态并按预期运行。

    4. 您能否建议在上电后提供预期的 LIN 通信稳定时间? 我们非常希望为解决这一延迟问题提供任何见解或建议。

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

    您好:

    我建议遵循其中一个软件示例的初始化流程、以确保以正确的顺序完整配置 LIN 模块。 您的代码似乎与示例和驱动程序函数初始化模块的方式不同。 这些示例可在 SDK 路径中找到:[C2000ware install]/driverlib/f280015x/examples/lin/.  

    [报价 userid=“606164" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1523203/tms320f2800157-q1-tms320f2800157-lin-communication-lin-communication-error-startup-delay-before-initiating-lin-communication/5860115 #5860115“] 4. 您能否建议在上电后提供预期的 LIN 通信稳定时间? 我们非常希望为解决此延迟问题提供任何见解或建议。

    如果所有内容都在软件中正确初始化、则 LIN 应该不需要额外的稳定时间。 听起来模块有时会进入无效状态。 您能否尝试更改启动代码以按照某个 SDK 示例中的顺序使用 driverlib 函数调用、看看这样是否解决了您的问题?

    此致、

    Delaney

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

    尊敬的[Delaney Woodward]:

    我希望此消息能帮您找到答案。

    我们目前在系统启动期间遇到与 LIN 通信相关的问题。 请参阅下面的问题摘要:

    如前所述、LIN 通信正常运行、但错误标志 CE(校验和错误)和 FE(成帧错误)未被清除。 据说、它们会在接收到新的同步中断时被清除、但我想了解为什么即使接收到有效的 LIN 帧也不能清除。

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

    您好:

    如果成功接收到下一个同步中断、则应自动清除这些标志。 但请注意、如果下一个数据包出现错误、它们将再次设置。 您如何检查标志的状态? 您是否在 LIN ISR 内的断点处停止? 是否已打开持续刷新?

    此致、

    Delaney

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

    我通过调试程序连接检查了寄存器标志值。
    即使发送了同步中断信号、这些标志也不会被清除。
    此外、我没有使用断点暂停执行。
    启用连续刷新。

    如下面的波形所示、没有噪音或数据损坏—帧完全正常。
    但是、LIN 帧错误不会被清除。

    为了防止接收到由噪声引起的异常值、我们在接受数据之前检查 LIN 错误标志。
    但是、即使接收到有效帧、错误标志也不会被清除。

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

    您好:

    特别是对于成帧错误、这表示发送 LIN 和接收 LIN 之间的数据包同步已丢失。 如果是这种情况、组帧错误标志将继续出现、因为它总是查看每个帧的错误部分(也许它被移动一位)。 因此、即使在错误发生后数据看起来正常、它也可以检测到组帧错误。 该问题还会导致校验和 错误、因为模块会在消息的错误部分计算校验和并与错误的字节进行比较。   

    通常、由于存在这些类型的错误、最好通过修复软件实现而不是尝试从此状态中恢复模块、来避免所有这些错误。

    您使用的波特率和 SYSCLK 频率是多少? -这将有助于确定配置是否容易出错。

    此致、

    Delaney

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

    尊敬的[Delaney Woodward]:

    我希望此消息能帮您找到答案。

    我们目前在系统启动期间遇到与 LIN 通信相关的问题。 请参阅下面的问题摘要:  

    TX 正常传输数据。 如果位损坏或时序关闭、这种问题是否仅发生在 RX(接收器)侧?

    2、如果位损坏或时序关闭、即使手动清除(设置)错误标志、LIN 通信是否仍然失败?

    3. 要详细确定根本原因,我应该具体检查什么? 您能指出需要关注的关键领域吗?

    非常感谢您花时间回答我的多个问题。 我非常感谢您的支持。

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

    您好:

    我即将离开办公室、因此请另一位专家为您提供进一步的帮助。

    此致、

    Delaney

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

    清除 SCIFLR 寄存器中的 LIN 错误标志 (BE、CE、FE、OE) 时、我会考虑两种方法:设置 SWnRESET 位 (SCIGCR1.7) 或直接向 FLAG 位写入 1。 如果设置 SWnRESET 位 (SCIGCR1.7)、是否有任何副作用?

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

    您好:

    德拉尼在下周仍然不在办公室。 在此期间、我将尽量提供一些信息。

    关于这两种方法:

    1.使用 SWnRESET (SCIGCR1.7):  

    • 请记住、当 SWnRST = 0 时、该软件复位可确保 SCIFLR 寄存器中的所有标志都被冻结并保留其复位值。 这意味着 SW 复位影响多个标志和 LIN 功能(状态机复位)、而不仅仅影响错误标志。 当 错误处理后需要恢复通信时、这可以是一个好处、但请注意、不仅复位了一个错误标志。

    2.将 1 直接写入错误标志:  

    • 这是一种针对性更强的方法、因为它只影响要清除的特定错误标志。 这可确保您的其他配置不会如上所述复位。 但是、根据系统错误、只清除单一标志可能不足以恢复 LIN 功能。 在这种情况下、将建议重置。  

    此致、

    Allison