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.

[参考译文] RM48L952:N2HET 32位捕捉支持

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/870705/rm48l952-n2het-32bit-capture-support

器件型号:RM48L952

您好 TI

我对服务器指令(例如 PCNT)有疑问、以便测量脉冲长度。 根据 TRM、TI 说 PCNT 指令使用的是一个32位数据字段、该数据字段包含25位实际数据以及用于 HR 结构的8位数据字段。 根据电气数据表、时序要求被限制在25位、因为我假设这是您可以在这个引脚上测量的最大值(0..2^(25)-1)。 此外、当使用 HR 结构时、TRM 有时指的是32位捕获功能、尽管说明中说明当 HR 被激活时、您可以看到的唯一区别是测量值在 HR 延迟(HR 激活)之后更新 或在环路分辨率的末尾(HR 未激活)。 但我看不到任何位增加、这将允许我对 PCNT 指令使用[0..2^(32)-1]的值范围。 此外、电解质数据表提到了几个支持此类32位特性的 N2HET 引脚。

因此,我不明白当您提到“32位捕捉功能”时如何处理这个“问题”? 应用工程师在读取数据字段时是否需要应用一些额外的计算以获得有效的32位捕捉值? 或者我是否遇到了此问题,25位值是您可以针对 PCNT 指令测量的最大值,具体取决于您当前的(hr)和(LR)设置?

当 C 应用程序读取 PCNT.data 字段时、我如何使用该功能、由于大多数指令只引用25位数据字段、因此在大多数时候第一个字节被移出、需要准备什么?

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

    您好!

    高端定时器时基由两个不同分辨率的独立时钟组成。 高分辨率(HR)时钟从 VCLK2分频、环路分辨率(LR)时钟进一步从 HR 时钟分频。 PCNT 指令(和其它指令)的32位数据字段由25位循环分辨率计数和7位高分辨率计数组成。

    这在高端定时器一章的第802页的第20.2.3.2节 TRM SPNU503c 中进行了解释。

    数据表中指定的输入时序限制对输入信号脉冲宽度和周期的限制、以便正确测量。 一些输入通道具有增强的输入时序捕获功能、因此这些通道的最小输入脉冲宽度和周期比其他通道的输入脉冲宽度和周期短。

    希望这对您有所帮助。

    此致、Sunil

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

    您好、Sunil、

    为了更好地理解、我再次阅读了该章以及示例 pdf (spraba0b)。 对我来说、我仍然在同一个位置挂着。 最后、您无法扩展输入捕捉的最大时序约束的25位限制、因为在两种情况下(环路分辨率和高分辨率)、它都指定为(2^25)* hr* lr* tclk (表20.7、表20.8 - TRM)。 高分辨率结构只允许您提高将电气规格的下限阈值从[2*(LR)*(hr)*tclk]移动到[(LR)*(hr)*tclk]的精度。

    这一假设是否正确?

    无论如何、当我在 PCNT 指令上启用 HR 结构、并且将循环分辨率分频比(LR)设置为128时、PCNT.DATA 域中的所有7位(针对 HR 结构的 LSB)都将生效。

    当 C 应用程序正在读取该数据字段时、您应该如何处理包含32位最大值(= 0xFFFFFFFF)的 PCNT.DATA 字段?

    当我假设我不能仅获取32位值并将其与(hr)*(lr)* tclk 进行多层处理时,将其转换为具有计时单元的有效值

    (0xFFFFFFFF *((hr)*(lr)* tclk) ),因为您将违反/绕过最大计时加速,即(hr)*(lr)*(2^(25))* tclk。

    该假设是否正确以及如何正确转换?

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

    是的、没错。 根据您的配置、每个 LR 周期中有128个 HR 周期。 数据字段的低7位为您提供 HR 周期数、而高25位为您提供 PCNT 等输入捕捉指令的 LR 周期数。

    因此、时间计算将为(PCNT.data & 0x3F)* hr * tclk +(PCNT.data >> 25)* hr * lr * tclk

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

    您好、Sunil、  

    感谢您的澄清。 关于第二部分的数学表达式、只需要一个小问题。

    数据字段(32位)的高25位[31D:7D]包含输入捕捉的 LR 周期数,因此需要向右移位7位,但表达式会向右移位25位  

    我假设这是一个拼写错误、因此它应该是:((PCNT.data & 0x3F)* hr * tclk +(PCNT.data >> 7)* hr * lr * tclk)

    是这样吗?

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

    是的、没错。 感谢您抓住错误。

    此致、Sunil