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.

[参考译文] TMS320F280025:在 Tsynbrk=14位时发生组帧错误后、不能恢复 LIN 通信

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1473138/tms320f280025-lin-communication-cannot-be-recovered-after-framing-error-with-tsynbrk-14bits

器件型号:TMS320F280025

工具与软件:

您好、支持团队:

类型的应用 紧急 软件中的 LIN 模块对于我们的客户(汽车 OEM)有问题

LIN 总线上出现干扰、之后我们的器件(作为 LIN 从器件)不再响应(电源复位后除外)。 通信未恢复。

干扰: 在从器件的响应完成之前发送新标头。

波特率: 19200bps

 Tsynbrk :14位

以下 LIN 调度表很容易引发该错误

  时间表 A {

   Published8ByteFrame 延时14毫秒;

   Published8ByteFrame 延迟6毫秒;

 }

请在下面找到一些屏幕截图。

蓝色:LIN 信号

绿色:在 ISR 开始时已切换引脚

黄色:已切换引脚(如果出现奇偶校验错误、溢出错误、组帧错误、校验和错误、位错误)

在正常通信时、我们收到1个 IDINT、然后收到8个 RXINT

在发生冲突的情况下、我们收到1个 IDINT、然后是7个 RXINT、接着是1个 feint、然后是新帧1 IDINT、最后是8个 RXINT

 

在一些冲突(仅为1或最多为3)后、我们未接收到任何中断、SW 无法处理 LIN 帧。 无法恢复通信。

发生这种情况时、我停止了调试器、这里是 LIN 寄存器的值。

仅当 T_SYNBRK 约为14位(730µs)时、通信才会恢复。

我们已经使用不同的 T_SYNBRK (从13位到26位)进行了测试、并在错误后恢复了通信。

能否请您检查并说明此行为?

您能否为此提供一些解决方案?

此致、

数量

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

    您好、Quy、

    澄清一下、F280025是 LIN 从设备、对吗? LIN 可以控制另一个 C2000器件吗?   

    此致、

    Allison

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

    您好、Allison、

    F280025用于我们的器件(作为 LIN 从器件)。

    LIN 总线上的其他器件(LIN 主器件或其他 LIN 从器件)可能使用其他微控制器。 我们没有这方面的信息。

    此致、

    数量

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

    您好、Quy、

    感谢您的跟进。 看看您发送的映像中的一些寄存器、您似乎会得到"位错误"标志(BE)、而不是 FE。  它也看起来不像你启用了 BE 中断。 您是否已遵循 TRM 关于处理碰撞导致的建议? 请看一下 LIN 部分中的详细信息、并告知我是否已考虑到这一点。 下面是一个片段:

    此致、

    Allison

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

    您好、Allison、

    我们不在多缓冲器模式下配置 LIN 模块、SCIGCR1中的位 MBUFMODE 为0、因此 TD0和 TD1的建议不会产生影响。

    我写入 FE 是因为我检查了 FE 标志并切换了 PIN (黄色信号)。

    我可以尝试启用 BE、然后复位 LIN 模块。

    此致、

    数量

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

    您好、Quy、  

    我明白了。 是的、如果有任何变化、请告诉我。

    此致、

    Allison

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

    您好、Allison、

    我激活了 BEINT、中断被触发。

    虽然我们不知道为什么只有 BEINT 出现这种情况、但我们的客户可以接受这种改变。

    最后、我要结束本示例、非常感谢您的帮助。

    此致、

    数量

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

    您好、Allison、

    由于我们的客户需要有关此代码更改(BEINT 激活)的风险评估、我有一些问题:

    如果发生位错误、首先触发哪个中断、RXINT 或 ERR INT (BEINT)还是一起触发?

    2个中断之间的距离是多少(CPU 周期数)?

    如果我只有一个 ISR 可用于读取接收缓冲区和清除位错误标志、那么是否会出现第二个中断?

    如果它是这样,我怎么能防止它? (例如、在 ISR 开始时读取缓冲区并快速清除标志)

    此致、

    Quy、

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

    您好、Quy、

    如果检测到位错误、BE 中断将优先于接收或发送中断的触发、如 LIN 的 TRM 优先级方案中所述:

    位错误应该在 BEINT ISR 内通过清除将允许 LIN 恢复通信的标志来处理。  

    两个中断之间的时序取决于分支至第二个中断前、从第一个 ISR 进行运行环境恢复和运行环境保存所花费的时间。 其中 每个通常为8个周期(总共~16个周期)。  

    如果只希望发生一个中断、则需要在为另一个中断提供服务之前清除该中断的标志。

    为了阐明您是否为同一个中断线路启用了两个中断、并且同时设置了两个标志、BE ISR 将首先发生、因为它具有更高的优先级。 如果在 BEINT ISR 内清除 RXINT 标志、在之后不应获得 RXINT。

    此致、

    Allison