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.

[参考译文] MSPM0G3518:询问 LIN 自动波特率配置参数 (MSPM0G351x MCAL)

Guru**** 2962460 points

Other Parts Discussed in Thread: MSPM0G3518

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1655780/mspm0g3518-inquiry-regarding-lin-auto-baud-rate-configuration-parameters-mspm0g351x-mcal

器件型号: MSPM0G3518

您好 TI 支持团队:

我目前正在为 MSPM0G3518 集成 LIN MCAL 驱动程序 (使用 AUTOSAR 版本 4.4.0)、并且有一些与 LIN 从节点的自动波特率配置相关的问题。

我看到了 LinChannelAutoBaudRate 用于为从节点启用自动波特检测的参数。 我希望进一步说明何时使用此功能以及底层硬件如何利用相关的阈值和限制参数:

  1. LinChannelAutoBaudRate(一般用例): 您能否澄清一下 TI 建议启用此功能与使用固定波特率的具体实际场景? 此外、启用后、硬件是否会在 每个 接收到的 LIN 同步字节上连续调整波特率、还是仅在初始通信/错误恢复期间?

  2. LinChannelBaudRateLimit: 如果传入的波特率略超出这个精确窗口、硬件是否会完全拒绝帧、或者它是否会触发 LIN_E_TIMEOUT /硬件错误?

  3. LinChannelAutoBaudRateTBitThreshold: 此参数配置 2 位周期偏差的阈值(从 1 到 4)。 如果我们将其配置为“2“(这意味着如果>= 2 个周期偏离容差,则会发生自动波特率)、如果偏差 小于 2、硬件如何处理帧? 它是否使用之前锁定的波特率处理帧而不进行调整?

  4. 硬件时钟注意事项: 是否 LinChannelOversampling 建议使用任何特定的硬件时钟配置(例如,特定速率,如 16X 与 8X)、以便在 MSPM0G351x 上实现可靠的自动波特率检测?

感谢您的指导!

此致、
Mohamed Abdelfatah-Mohamed

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

    尊敬的 Mohamed:

    以下是您的问题的一些答案:

    1.当指挥官的波特率可能漂移或不完全已知时、建议为响应者节点启用 LinChannelAutoBaudRate。 自动波特率功能是一种软件实现的机制、而不是纯硬件机制。 如 AUTOSAR LIN 驱动程序用户指南中所述:“自动波特率和停止位检测功能在软件中实现、如果未及时执行 ISR、这些功能很容易出现错误。“

    MSPM0G351x LIN 性能表包含作为不同 ISR 测量的状态“YNC_FIELD - RXNE(发生波特率更新的最大值,同步的最后一个负边沿)“。 这表示在每个接收到的同步字节(特别是同步字段的最后一个负边沿)上重新计算波特率、而不仅仅是在初始锁定或错误恢复期间。  

    2.如 AUTOSAR LIN 驱动程序用户指南中所述“LinChannelBaudRateLimit“应配置为波特率限制、该值可以低于/高于 LinChannelBaudRate。 对于以波特率(位于这两个字段之间)接收的帧、将进行自动波特率调整“

    这意味着这两个字段共同定义可接受的自动波特窗口。 如果传入波特率超出 LinChannelBaudRate 和 LinChannelBaudRateLimit 之间的范围、则不会进行波特率更新、并且以现有锁定的波特率处理(或失败)帧。

    此外、  AUTOSAR LIN 驱动程序用户指南提到、“ LIN 驱动程序不支持 LIN_E_TIMEOUT、因为在写入需要单独超时机制的硬件寄存器后、驱动程序不会等待任何状态更新“

    3. 该阈值定义了在触发波特率更新之前必须观察到多少个 2 位周期偏差。 如果同步位测量值的偏差小于配置的阈值(例如,< 2 个周期、阈值= 2)、则驱动程序将使用先前锁定的波特率处理帧而不进行调整。 波特率更新在该帧周期内根本不会发生。 根据设计、这是为了防止对指挥官在容差范围内运行的帧进行虚假更新。 由于自动波特率是在 ISR 中以软件方式实现的、因此同步域 ISR 延迟(根据性能表,根据优化情况,为 4.2 –8.2µs)是进行此阈值评估的窗口

    4. 我建议查看 用户指南中的配置假设使用情况。 以下是其中提到的内容:

    • LIN 应由 MCU 模块提供 2 个时钟参考点、一个是 LIN 外设时钟、另一个是 CPU 时钟、用于波特率计算和超时

    • 系统集成商应将 CPU 时钟配置为大于 LIN 外设时钟。 当 CPU 时钟为 80MHz 时、LIN 模块的功能测试在 LIN 外设时钟小于或等于 5MHz 的情况下运行。 该实现使用内部 16 位计数器、如果 LIN 配置为较高的外设时钟并以较低的波特率运行、则该计数器可能会溢出。

    • 在端口模块中配置的 LIN 接收引脚(即 UART_RX 引脚)应以通道 ID 的形式在 LinRxPinChannelId 中配置

    • LinChannelBaudRateLimit 应配置为波特率限制、它可以低于/高于 LinChannelBaudRate。 对于以介于这两个字段之间的波特率接收的帧、将进行自动波特率调整

    • LinTimeoutDuration 应用于检测不完整响应并标记错误(例如响应者节点不完整和无响应错误)、可配置的最长持续时间为 65536、它使用板载 16 位 LIN 计数器

    • 一个 LIN 驱动器可用于访问一种 LIN 硬件单元类型、该单元可通过支持的 LIN 实例包含多个 LIN 通道

    此致、

    Diego Abad

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

    您好、Diego、非常感谢您提供这些详细的答案。

    穆罕默德 ·阿卜杜勒法塔赫:如果您有其他问题,请告诉我们,或者请结束本次讨论。