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.

[参考译文] AM2612:RTI 计数器是否为 64 位?

Guru**** 2771175 points

Other Parts Discussed in Thread: SYSCONFIG, AM2612

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1609329/am2612-is-the-rti-counter-64-bit

器件型号: AM2612
主题中讨论的其他器件: SysConfig

您好、

我的客户对 RTI 有一些疑问。 你能回答他们下面的问题吗?

他们希望获取 RTI 的自由运行计数器的值、因此他们想使用 SDK 中包含的 RTI_counterGet。

TRM 中有一个 64 位计数器块、SDK 也有 counterLow 和 counterHigh。

因此,他们试图结合 counterLow 和 counterHigh ,但它成为了异常值。

如果仅提取 counterHigh、则它将是正常值。

 

<问题>

  1. 假设 RTI 为 64 位是正确的吗? (如果您查看 SDK 的内容、它看起来就像只是使用 counterHigh 读取 32 位自由运行计数器。)  
  2. CSL_RTI_RTIFRC0 和 CSL_RTI_RTIUC0 的含义是什么?
  3. cslr_rti.h 中列出了寄存器的偏移地址、但 TRM 没有指定哪个寄存器有什么含义。 他们可以查看哪些材料?

来自 TRM、

TRM.jpg

 

SDK 中找到

SDK.jpg

 

请访问 cslr_rti.h

cslr.jpg

 

谢谢。此致、
英明

 

 

 

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

    你好、松本山、

    在每个 RTI 实例中、都有两个 64 位计数器块(计数器块 0 和计数器块 1)。 每个块都有以下内容。

    1. 一个 32 位加法计数器。
    2. 一个 32 位自由运行计数器。
    3. 两个捕捉寄存器 — 用于特殊事件的预分频和自由运行计数器捕捉。
    假设 RTI 为 64 位吗? (如果您查看 SDK 的内容、它看起来就像只是使用 counterHigh 读取 32 位自由运行计数器。)  [/报价]

    整个块是 64 位、在内部有两个 32 位计数器 (FRC 和 UC)

    CSL_RTI_RTIFRC0 和 CSL_RTI_RTIUC0 的含义是什么?

    由于每个 RTI 实例都有两个块、每个块都有两个 32 位计数器、因此您将有 UC0、FRC0(块 0)和 UC1、FRC1(块 1)。 UC 每 RTI 时钟周期递增一次、一旦它与配置的比较值匹配、FRC 将递增、UC 将复位回 0 并再次开始计数。

    例如、递增计数器每 1 个 FCLK 时钟周期递增一次。 这意味着、如果 RTI 模块的时钟为 200MHz、则 UC 将每 50ns 递增一次。 仅当 ucx 与递增计数器比较值匹配时、FRC 才会更新。 FRC 由 UC0 预分频。 这意味着每次 UC0 达到比较递增计数器值时、FRC 递增 1、这意味着每 10,000 个节拍、FRC 递增 1 个节拍。

    cslr_rti.h 中列出了寄存器的偏移地址、但 TRM 没有告知哪个寄存器有什么含义。 他们可以查看哪些材料?

    您可以查看寄存器附录以了解寄存器级详细信息: https://www.ti.com/lit/ug/spruj94a/spruj94a.pdf?ts = 1769076208613&ref_url=https://www.253A%252F%252Fwww.google.com%252F

    若要深入了解 RTI、请参阅此 AM26x 学员模块: https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AcevDJsanUk7IY6EafZ8ZA__AM26X-ACADEMY__t0CaxbG__LATEST

    此致、
    Shaunak

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

    尊敬的 Shaunak:

    感谢您的回答。 有用的信息。  客户通常理解、但他们希望确认以下您的评论。

    这意味着每 10,000 个节拍的 FRC 会递增 1 个节拍。

      

    您能否在下面查看 他们的理解是否正确?

      

    它们使用 SysConfig 进行了如下配置。

     

    输入时钟频率:25MHz

     => uC 递增 40ns

      

    所需输出频率:1MHz

     =>递增计数器的比较值在内部设置为“25",“,当、当 uC 在“25"范围“范围内达到时、FRC 会递增。

     => FRC 递增 1us。

      

    以上是他们的理解是正确的?

     

    谢谢。此致、

    英明

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

    你好、松本山、

    1.在 25MHz 的输入时钟, UC 将增加 40ns ,这是正确的

    当输出频率为 1MHz 时、UC 计数器值在内部设置为比较递增计数器寄存器值 25-1 = 24(计数从 0 到 24 开始)(syscfg 将自动处理此计算)

    3.当计数器的值达到 24 并与比较递增寄存器中的值进行比较时、FRC 递增 1us(由于输出频率为 1MHz)

    此致、
    Shaunak

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

    尊敬的 Shaunak:

     

    非常感谢您的回答。 客户希望多确认一点。

     

    他们的理解是、没有在发生比较事件时自动清除自由运行计数器的功能。 这是正确的吗?

    如果他们想清除自由运行计数器、除了通过启用中断来清除计数器的 API 之外、还有其他方法吗?

     

    它们正在将 Renesas MCU 替换为 AM2612、并考虑使用 AM2612 上的 RTI 实现 Renesas 器件的 TPU 功能。

    TPU 具有可设置为通过比较匹配清除计数器的寄存器、但它们在 RTI 上找不到类似功能。

    这就是他们询问上述问题的原因。

     

    TPU(时间脉冲单元)具有比较匹配中断。

    比较匹配中断:当计时器计数器与计时器通用寄存器 (TGR) 中的特定设定值匹配时,可以生成中断,从而实现软件事件的精确计时。

     

    谢谢。此致、

    英明

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

    你好、松本山、

    让我与我们的硬件团队核实一下、然后返回。

    此致、
    Shaunak

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

    你好、松本山、

    如果我正确理解了您的要求、您希望在发生比较事件时自动清除 FRC 计数器的行为是否正确?

    如果是、AM261x 不会自动清除 FRC 计数器。 UC 计数器从 0 计数到匹配值、然后自动复位为零、而 FRC 将递增 1、但在任何比较事件中、FRC 将自动清除或复位为 0。

    必须通过软件手动完成此操作:

    但是、如果您只清除 FRC 而不停止其他计数器、则会存在不一致之处、因此建议的方法是停止计数器、清除计数器、然后再次恢复计数器

    如果要清除所有 RTI 计数器、请调用 API:  

    int32_t RTI_counterClear (uint32_t baseAddr、uint32_t cntIndex)
    此致、

    Shaunak