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.

[参考译文] TMS320F280025C:有关 LIN 模块同步器的必需信息

Guru**** 2418170 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1104001/tms320f280025c-required-information-about-the-synchronizer-of-lin-module

器件型号:TMS320F280025C

您好、支持团队、

我们的客户需要有关 LIN 模块同步的信息(SCIGCR1.bit.ADAPT = 1)。 我在《技术参考手册》SPRUIN7A 中找不到相关信息。

请向我提供有关 LIN 模块同步器的信息吗?

  • 控制器[位]中计数器寄存器的长度
  • SYNC 域中测得的位数
  • 计数频率[MHz]
  • 修整集成振荡器?
  • 同步区域[位/秒]的最小波特率(我认为这是 MBRSR 寄存器的设置)
  • 同步区域的最大波特率[位/秒](我认为这是 MBRSR 寄存器的设置)
  • 测量[%]时的误差
  • 计算误差[%]
  • 设置误差[%]
  • 最大波特率容差[%]

谢谢、此致、

问题

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

    您好、Quy、

    以下是有关您的问题的详细信息:

    • 控制器[位]中计数器寄存器的长度
      • 有一些由 SYSCLK 计时的内部计数器、它将检查同步字段上升和下降转换之间的时间差(即 0x55)、根据内部计数器值、将计算调整后的波特率。
      • 如果同步间隔大于13TBIT,则会产生错误,因此可以容忍的高于配置波特率的最大波特率为~10%。
    • SYNC 域中测得的位数
      • SYNC 域为8位宽、必须为0x55
    • 计数频率[MHz]
      • 计数器频率等于 SYSCLK 频率
    • 修整集成振荡器?
      • LIN 没有内部振荡器、不确定您的问题? 除非您询问精度为+/-3%的 INTOSC、否则没有需要修整的振荡器。
    • 同步区域[位/秒]的最小波特率(我认为这是 MBRSR 寄存器的设置)
      • MBRSR 寄存器是13位寄存器、因此对于一个100MHz 的 SYSCLK、可配置为自适应模式的最大波特率为100/8192=12.2Khz、所以实际最小波特率可比12.2KHz 低10%、这将是~11KHz。
      • 但是、如果您不使用自适应模式、则可以将波特率配置为低至1kHz。
    • 同步区域的最大波特率[位/秒](我认为这是 MBRSR 寄存器的设置)
      • 20kHz + 10%、即~22kHz
    • 测量[%]时的误差
      • 它是数字逻辑、因此晶体或 INTOSC 引入的 SYSCLK 中的任何误差都将是测量误差。
    • 计算误差[%]
      • 这将是 SYSCLK 的~1/16 (它是波特率计算器的分辨率)。
    • 设置误差[%]
    • 最大波特率容差[%]
      • 最大波特率必须在配置的实际波特率的10%以内。

    请问您的应用是什么?您的要求是什么?

    此致、

    Nirav

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

    Nirav、您好!

    感谢您的回答。

    我的公司为 OEM 开发了 LIN 设备、如 VW、BWM ... 我必须填写他们的问题。

    我想以绿色添加一些问题

    • 控制器[位]中计数器寄存器的长度
      • 有一些由 SYSCLK 计时的内部计数器、它将检查同步字段上升和下降转换之间的时间差(即 0x55)、根据内部计数器值、将计算调整后的波特率。
      • 如果同步间隔大于13TBIT,则会产生错误,因此可以容忍的高于配置波特率的最大波特率为~10%。
        • 我想知道您使用的是16位计数器还是32位计数器。
        • 如果您在 LIN (19200)中使用 SYSCLK (高达100MHz)以典型波特率对8位进行计数、理想情况下您将得到41666、67。 您的柜台将向下舍入至41666。 16位计数器就足够了。 但是、如果您以10kbps 计数、则计数器中的计数值将为80000 =>我假设您使用32位计数器。 请确认。
    • 修整集成振荡器?
      • LIN 没有内部振荡器、不确定您的问题? 除非您询问精度为+/-3%的 INTOSC、否则没有需要修整的振荡器。
        • 我不熟悉修整功能、但在 Page543/SPRUIN7A 中看到:加载 INTOSC 修整(12US)。 请您详细解释一下。 n ü µC 如何使用该值校准频率?
    • 同步区域[位/秒]的最小波特率(我认为这是 MBRSR 寄存器的设置)
      • MBRSR 寄存器是13位寄存器、因此对于一个100MHz 的 SYSCLK、可配置为自适应模式的最大波特率为100/8192=12.2Khz、所以实际最小波特率可比12.2KHz 低10%、这将是~11KHz。
      • 但是、如果您不使用自适应模式、则可以将波特率配置为低至1kHz。
        • 假设我将波特率设置为19200bps。 如果我设置 MBRSR = 100MHz/(19200*1.1)、我的软件能否与介于(19200*0.9)至(19200*1.1)或介于0至(19200*1.1)之间的总线波特率同步? 我想知道的是下面的圆石。
    • 测量[%]时的误差
      • 它是数字逻辑、因此晶体或 INTOSC 引入的 SYSCLK 中的任何误差都将是测量误差。
        • 除了 INTOSC 中的测量误差之外,我认为-2%。 +1.5%(SPRSP45B、第7.11.3.5.1节)、我们还会得到舍入(1LSB)或触发误差(我不知道多少)产生的误差
    • 计算误差[%]
      • 这将是 SYSCLK 的~1/16 (它是波特率计算器的分辨率)。  
        • 您能否分享您的硬件如何根据计数器值计算波特率寄存器?
        • 如果我与 SW 同步,我将执行以下操作:8位时间=(计数器值)= 8*16*(P+1+M/16)
        • 如果波特率= 19200、计数器值= 41666 => P=舍入(计数器值/8/16 - 1)= 324、M =舍入{[计数器值- 8*16*(P+1)]/8}= 8
        • HW 计算方式与我的公式类似、还是具有更好的浮点类型计算?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Quy、

    请在线查找我的回答:

    • 控制器[位]中计数器寄存器的长度
      • 有一些由 SYSCLK 计时的内部计数器、它将检查同步字段上升和下降转换之间的时间差(即 0x55)、根据内部计数器值、将计算调整后的波特率。
      • 如果同步间隔大于13TBIT,则会产生错误,因此可以容忍的高于配置波特率的最大波特率为~10%。
        • 我想知道您使用的是16位计数器还是32位计数器。
        • 如果您在 LIN (19200)中使用 SYSCLK (高达100MHz)以典型波特率对8位进行计数、理想情况下您将得到41666、67。 您的柜台将向下舍入至41666。 16位计数器就足够了。 但是、如果您以10kbps 计数、则计数器中的计数值将为80000 =>我假设您使用32位计数器。 请确认。
        • [Nirav]-是计数器为32位宽、支持低至1KBPS 的波特率
    • 修整集成振荡器?
      • LIN 没有内部振荡器、不确定您的问题? 除非您询问精度为+/-1.5%的 INTOSC、否则没有需要修整的振荡器。
        • 我不熟悉修整功能、但在 Page543/SPRUIN7A 中看到:加载 INTOSC 修整(12US)。 请您详细解释一下。 n ü µC 如何使用该值校准频率?
        • [Nirav]加载 INTOSC 修整主要用于在加电时加载 INTOSC 修整以及其他模拟修整。 这与 LIN 无关。 通过加载修整、我们可以在10MHz 时在 INTOSC 上实现+/-1.5%的精度。
    • 同步区域[位/秒]的最小波特率(我认为这是 MBRSR 寄存器的设置)
      • MBRSR 寄存器是13位寄存器、因此对于一个100MHz 的 SYSCLK、可配置为自适应模式的最大波特率为100/8192=12.2Khz、所以实际最小波特率可比12.2KHz 低10%、这将是~11KHz。
      • 但是、如果您不使用自适应模式、则可以将波特率配置为低至1kHz。
        • 假设我将波特率设置为19200bps。 如果我设置 MBRSR = 100MHz/(19200*1.1)、我的软件能否与介于(19200*0.9)至(19200*1.1)或介于0至(19200*1.1)之间的总线波特率同步? 我想知道的是下面的圆石。
        • [尼拉夫]如果您希望在两侧实现平衡的容差、则只能实现+/-5%的容差、这可以通过设置 MBRSR=100Mhz /(19200*1.05)和 BRSR=100Mhz (19200*0.95)来实现、工作波特率为19200。
    • 测量[%]时的误差
      • 它是数字逻辑、因此晶体或 INTOSC 引入的 SYSCLK 中的任何误差都将是测量误差。
        • 除了 INTOSC 中的测量误差之外,我认为-2%。 +1.5%(SPRSP45B、第7.11.3.5.1节)、我们还会得到舍入(1LSB)或触发误差(我不知道多少)产生的误差
        • [ Nirav]正确的数字化误差/舍入误差将为+/-1 1 SYSCLK、对于100MHz 时钟为10ns、对于19200波特率为0.0192%。
    • 计算误差[%]
      • 这将是 SYSCLK 的~1/16 (它是波特率计算器的分辨率)。  
        • 您能否分享您的硬件如何根据计数器值计算波特率寄存器?
        • 如果我与 SW 同步,我将执行以下操作:8位时间=(计数器值)= 8*16*(P+1+M/16)
        • 如果波特率= 19200、计数器值= 41666 => P=舍入(计数器值/8/16 - 1)= 324、M =舍入{[计数器值- 8*16*(P+1)]/8}= 8
        • HW 计算方式与我的公式类似、还是具有更好的浮点类型计算?
        • [ Nirav]如果您需要19200的波特率、即19.2kHz、那么(P+1+M/16)*16 = 100M/19.2K= 5208.33;P+1+M/16 = 5208.33/16=325.52;P=324、M=8、这将为您提供最接近19.2kHz 的频率。

    此致、

    Nirav

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

    Nirav、您好!

    感谢你的答复。 我还有两条评论:

    • 同步区域[位/秒]的最小波特率(我认为这是 MBRSR 寄存器的设置)
      • MBRSR 寄存器是13位寄存器、因此对于一个100MHz 的 SYSCLK、可配置为自适应模式的最大波特率为100/8192=12.2Khz、所以实际最小波特率可比12.2KHz 低10%、这将是~11KHz。
      • 但是、如果您不使用自适应模式、则可以将波特率配置为低至1kHz。
        • 假设我将波特率设置为19200bps。 如果我设置 MBRSR = 100MHz/(19200*1.1)、我的软件能否与介于(19200*0.9)至(19200*1.1)或介于0至(19200*1.1)之间的总线波特率同步? 我想知道的是下面的圆石。
        • [尼拉夫]如果您希望在两侧实现平衡的容差、则只能实现+/-5%的容差、这可以通过设置 MBRSR=100Mhz /(19200*1.05)和 BRSR=100Mhz (19200*0.95)来实现、工作波特率为19200。
        • 我不是真的这么认为。 上次我将寄存器设置为 MBRSR=100Mhz /(19200*1.05)和 BRSR=100Mhz (19200*1)时、我可以看到 μ µC 可以与波特率< 19200同步。 今天我将再次进行测试、以获得实际价值。
    • 计算误差[%]
      • 这将是 SYSCLK 的~1/16 (它是波特率计算器的分辨率)。  
        • 您能否分享您的硬件如何根据计数器值计算波特率寄存器?
        • 如果我与 SW 同步,我将执行以下操作:8位时间=(计数器值)= 8*16*(P+1+M/16)
        • 如果波特率= 19200、计数器值= 41666 => P=舍入(计数器值/8/16 - 1)= 324、M =舍入{[计数器值- 8*16*(P+1)]/8}= 8
        • HW 计算方式与我的公式类似、还是具有更好的浮点类型计算?
        • [ Nirav]如果您需要19200的波特率、即19.2kHz、那么(P+1+M/16)*16 = 100M/19.2K= 5208.33;P+1+M/16 = 5208.33/16=325.52;P=324、M=8、这将为您提供最接近19.2kHz 的频率。
        • 我想知道您是如何根据同步器计数器的值计算波特率的。 直接从 SYSCLK 计算仅适用于没有同步的情况。

    此致、

    问题

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

    Nirav、您好!

    我想用 MBR 更新这一点。 我今天使用不同的 MBRSR 值和相同的 BRSR 值进行了测试、测试结果为19200 P=324 M=8

    • MBRSR = 100MHz/18000:µC Ω 可与 LIN 总线上的波特率同步、范围为15860.21400
    • MBRSR = 100MHz/19200:µC Ω 可与16910.22820范围内的 LIN 总线上的波特率同步
    • MBRSR = 100MHz/20000:µC 可以与17628.23785范围内的 LIN 总线上的波特率同步
    • MBRSR = 100MHz/21000:µC Ω 可与 LIN 总线上的波特率同步、范围为185120.25000

    是否有任何公式可根据 MBRSR 值计算此范围?

    此致、

    问题

    /sca-file/__key/communityserver-discussions 组件-files/171/MBRSR100_5F00_21000.bmp

    /sca-file/__key/communityserver-discussions 组件-files/171/MBRSR100_5F00_20000.bmp

    /sca-file/__key/communityserver-discussions 组件-files/171/MBRSR100_5F00_19200.bmp

    /sca-file/__key/communityserver-discussions 组件-files/171/MBRSR100_5F00_18000.bmp

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

    您好、Quy、

    我很困惑、您说您将 BRSR 配置为19200波特率、将最大波特率(MBRSR)配置为18000、您仍然能够通过将 LIN 总线范围从15860更改为21400来成功接收数据包吗?

    此致、

    Nirav

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

    Nirav、您好!

    是的。 我使用工具进行了 LIN 一致性测试。如果您没有工具、可以使用函数发生器为您所需的波特率生成 LIN 报头。

    MBRSR = 100*10^6/18000 = 5555

    根据我的测量结果、有针对这个范围的线性公式、最大波特率= 1.2 * MBRSR 的波特率和最小波特率= 0.8 * MBRSR 的波特率

    请确认这些问题吗?

    此致

    问题

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

    您好、Quy、

    根据设计指南、MBRSR 寄存器不应配置为工作波特率(BRSR)的10%以上、在标称条件下、它可能仍在超过配置值的情况下工作、但不保证在整个过程/电压/温度范围内工作、因此不建议这样做。

    此致、

    Nirav

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

    Nirav、您好!

    感谢你的答复。

    不幸的是,这不是我所关心的。

    目前我没有公式。 如果我配置为指导线(不超过10%)、我可以将 MBRSR 配置为21k (不超过19200的10%)。 然后、我的器件可以在18512..25000 (-4.0.30%的标称波特率)范围内同步。

    我很确信 VW 不会接受这个奇怪的范围。

    此致、

    问题

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

    您好、Quy、

    如果您将上限定义为10%、如果波特率高于10%、那么这将是什么问题、我仍然不确定、如果波特率高于10%、那么它只会提供更大的裕度、但这是不能保证的。

    此致、

    Nirav