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.

[参考译文] TMS570LC4357:LIN 帧错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/657437/tms570lc4357-lin-framing-error

器件型号:TMS570LC4357

您好!

我正在尝试在主控模式下使用 TMS570LC4357。 我发送报头并接收来自另一个电路板(Arduino)的响应。 但是、在几次传输后、我会得到一个组帧错误并且传输停止。 我不明白为什么帧错误只在一段时间后发生? 接收到报头后、我立即在 LIN 总线上发送响应。 两端使用相同的波特率。 我不知道 Hercules 板的内部以及它如何检测组帧错误。 我尝试用8N1和8N2发送 reponse。 两者都有相同的问题。 为什么 Hercules 电路板检测到停止位错误?

谢谢、

S

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

    您好 Sa、

    在发送响应之前、您是否检查总线忙标志或 NRE 标志?

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

    这是来自 TI 电路板的发送接头:

    while (!(linIsTxReady (LIN)))||(LIN->FLR & 0x8U = 0x8U);

    LinSetLength (LIN、8U);//+校验和
    linSendHeader (LIN、linIdentifier);



    这将在 TI 电路板中接收响应数据:

    if ((LIN->FLR & LIN_RX_INT)== LIN_RX_INT)

    LinSetLength (LIN、8U);
    linGetData (LIN、&entry.data[0]);


    我不知道如何从 Arduino 端检查总线状态? 检查收发器的 RX 引脚是否空闲是否足够了? 在我发送响应数据之前、它应该空闲多长时间? 我在 LIN 规范中找不到这方面的信息。

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

    尊敬的 S:

    我不知道 Arduino 部件。 SCIFLR 寄存器的#3位是总线忙位。 在接收到报头的第一个位时总线忙标志被置位、直到报头接收完成、并且在接收到响应的第一个位时再次被置位。

    TRM 建议执行以下序列:

    1、一旦报头接收完成(轮询 RXID 标志)、等待总线忙标志置1或 NRE 标志置1。

    2.如果在 NRE 标志之前总线忙标志未被置位、那么这是一个真正的无响应情况(没有数据被传送到总线上)。

    3.如果总线忙标志被置位、那么等待 NRE 标志被置位或成功接收。 如果 NRE 标志被置位、那么在这种情况下总线上发生了一个冲突。

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

    您好 QJ、

    如何在发生 NRE 或 FE 错误时清除这些标志?

    谢谢、

    S

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

    尊敬的 S:

    SCIFLR 是 SCI 标志寄存器。 向 SCIFLG 的位字段写入0无效、但向这些位字段写入1会将这些位清零。