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.

[参考译文] TMS320F280049:使用 HRCAP、eCAP、eQEP 进行精确的频率测量

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/993382/tms320f280049-precise-frequency-measurement-with-hrcap-ecap-eqep

器件型号:TMS320F280049

大家好、

我已经在 这里询问了有关使用 HRCAP 进行精确频率测量的相关问题。

我想比较这三个模块(HRCAP、eCAP、eQEP)、以测量 方波的频率。

假设我们有一个占空比为50%的方波、运行频率为1-2MHz。 每个脉冲的宽度 取决于频率:0.25 μ s (2MHz 占空比为50%)至0.5 μ s (1MHz 占空比为50%)。  

请参见下图、其中显示了测量的信号:

我的问题:

Q1:这些模块中的每个模块是否都可以用于测量此类信号?

Q2:每个模块在最小和最大输入频率、占空比等方面有哪些限制?

Q3:每个模块可实现的时序分辨率是多少?

对于 SPRAAH1   和 SPRU807B 中的 eCAP I 、其中 eCAP 的时序分辨率为1/SYSCLKOUT。 那么、eCAP 在100MHz SYSCLK 上具有10ns 的时序分辨率是否正确?

对于 HRCAP I、 SPRS945F (7.11.2.1)中的时序分辨率为450ps、测量时间大于5usec。

对于 eQEP、我找到 SPRSP14D (7.12.4-1)、 其中时序分辨率被指定为 2个 SYSCLK。 在这里、我不确定是什么是分辨率。

您能总结一下每个模块的输入频率要求吗?   

感谢你的帮助。

谢谢、

Michael  

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

    您好、Michael、

    以下是您的问题的答案:

    1.是的 eCAP、HRCAP 或 eQEP 可用于测量频率和占空比。

    2.唯一的限制是最大频率/最小脉宽持续时间。 (请参阅有关要求的数据表)

    几乎所有这些器件的最小输入脉冲宽度持续时间都是2*SYSCLK 周期=2*10ns =20ns。 除非您将 eCAP 与 GPIO 输入限定符一起使用(有关更多详细信息、请参阅数据表)

    3.分辨率是您列出的、eCAP=10ns (SYSCLK 周期)、HRCAP = 450ps (>5us)和 eQEP = 20ns (2*SYSCLK 周期)。

    所有模块的输入频率要求都差不多为50MHz。 它应满足您的1-2MHz 要求。 从占空比的角度来看没有限制。

    此致、

    Nirav

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

    Nirav、您好!

    非常好。 因此、理想情况下使用 HRCAP 模块以获得最佳分辨率。

    在上 一个问题 中、我从 Frank 得到了答案、即最小输入频率必须为9MHz。 与您的答案无关。  

    您的意思是:

    [引用 userid="214940" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993382/tms320f280049-precise-frequency-measurement-with-hrcap-ecap-eqep/3670099 #3670099">所有模块的输入频率要求都差不多为50MHz。 它应满足您1-2MHz 的要求。[/QUERP]

    Q1:测得信号所需的最低频率是多少? (我假设信号的最大测量输入频率为50MHz)。

    此外、我还想进一步了解一下 HRCAP 的工作原理。 主要是为了更好地了解内部的流程、以及是否降低 MCU 的流程功耗等

    Q2:HRCAP 是否有一些深入的手册? (我找到了一些 SPRUI10  、但它们通常只描述性能、要求等。)

    它是否用作独立的硬件模块、而该模块不像 GPIO 等常规外围设备那样占用大量 MCU 处理时间?  

    Q3: 最重要的是、在捕获信号和将数据输入以便进一步处理之间是否存在任何延迟? 例如、HRCAP 作为软件工作、为其提供独特的分辨率。  

    如果 HRCAP 和数据之间有几十微秒的延迟、我可能无法使用它。

    Q4:HRCAP 类型0和类型1之间的功能(延迟、分辨率等)是否存在差异?  

    我拥有 F28069M、但我可能更喜欢使用 F280049C、因为它是较新的设计。

    谢谢你 Nirav

    此致、

    Michael  

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

    你(们)好,Michael

    Frank 是对的、我忽略了、如果您查看数据表、您会看到 HRCAP 最大输入频率为9MHz。

    您的问题答案:

    1、最小输入频率没有限制。 在您的应用中、如果您的输入频率为1-2MHz、您可以使用 eCAP/HRCAP、这两个器件都应该起作用。 在您的应用中、如果您可以使用20ns 分辨率、则可以使用 eCAP。

    2.请参阅技术参考手册,它提供了有关 HRCAP 的更多详细信息。 但是、为了回答您的问题、HRCAP 和 eCAP 是相同的、只有 HRCAP 的不同之处在于它具有高分辨率块来捕获 SYSCLK 周期内的任何边沿。 ECAP/HRCAP 是基于计时器的模块、它将捕获时间戳并根据您的配置方式停止计时器。 但您仍然需要 CPU 来处理捕获的值并计算频率/占空比。

    https://www.ti.com/product/TMS320F280049

    3.我并不完全理解你对延迟的问题,但正如我在第2点所说的那样,HRCAP 将捕获事件并停止计数器,并根据用户的定义生成中断。 之后、CPU 必须读取计时器值以进行进一步处理。 但这不会改变捕获的时间戳、因为计数器将在事件发生后停止。 如果您在连续模式下定义它、而不是在两次捕获之间定义、如果您不读取值、则可能会丢失之前捕获的值。 ECAP 还具有 DMA 访问权限。

    4.如果您想使用 HRCAP、我建议您如前所述使用较新的器件 F280049C。 它在校准电路中有一些改进。 有关任何时序差异的更多详细信息、请参阅数据表。

    此致、

    Nirav  

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

    Nirav、您好!

    弗兰克可能无意中写了相反的字。  

    F28004x 器件上的 HRCAP 需要110ns 的最小脉冲、该脉冲适用于大约9MHz 的信号、因此不适用于您的1MHz 信号。 (1-2 MHz 的信号符合此要求、因为脉宽为500 - 250 ns)。

    根据您的答案和 SPRS945F 、最小脉宽110ns (220ns 1周期)对应于4.54MHz 的最大频率(50%占空比 PWM 信号)是正确的?

    您的第三季度-  

    [引用 userid="445784" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993382/tms320f280049-precise-frequency-measurement-with-hrcap-ecap-eqep/3670312 #3670312"]Q3: 最重要的是、捕获信号和输入数据以便进一步处理之间是否存在任何延迟? 例如、HRCAP 作为软件工作、为其提供独特的分辨率。  [/报价]

    我想知道是否有一些特殊的软件后处理能够为其提供高分辨率、但会增加测量后的延迟。 它看起来不像。  

    为50微秒的频率捕获信号后、MCU 将读取 HRCAP 的寄存器。 我想知道在完成50微秒的测量和 MCU 结果的可访问性之间会有什么延迟? MCU 计算频率的进一步处理时间可能很短(达到几百 ns)。

    谢谢你。

    此致、

    Michael

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

    您好、Michael、

    Nirav 本周已不上班、因此现在将接管这项工作。 正确、我错误地将输入信号要求读作10MHz 而非1MHz。 HRCAP 应该适合您。

    最小脉冲宽度为110ns、工作频率高达9MHz。 但是、您尝试捕获的信号的频率取决于您是测量占空比还是频率。 方波将出现上升->下降->上升以表示一个周期。 要测量频率、您需要捕获上升->上升、这意味着您的频率可以使用 HRCAP 为9MHz、以满足110ns 要求。

    但是、如果您尝试捕获同一信号的占空比、则不起作用、因为上升-下降或下降-上升之间的差值大约为半个110ns。 实际上、如果您要测量占空比、则如您所指出的那样、在50%占空比下、信号的最大值必须为4.5MHz。 针对非50%占空比进行相应调整。 此处的最小脉冲宽度要求仅指2个事件(上升或下降)之间的时间差。

    对于延迟问题、ECAP/HRCAP 没有后处理块、因此在捕获事件后、您需要触发中断并对其进行处理。 此外、只有4个 ECAP 事件、因此如果信号为1MHz (即50个事件)、实际上无法一次性捕获50us 的事件。 在您的情况下、最好使用 DMA。 您可以将 DMA 设置为在50个 ECAP 捕获事件发生在存储器中的某个位置时传输这些事件。 在这50个 DMA 传输完成后、您可以触发中断来处理它们。 请告诉我们这是否不清楚。

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

    您好、Frank、

    是的,我仅测量1-2MHz 方波信号的频率,测量上升->上升。 占空比不是我的关注点。 它们始终为50%。

    我对您的回答有几个问题:

    [引用 userid="146390" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993382/tms320f280049-precise-frequency-measurement-with-hrcap-ecap-eqep/3674955 #3674955"]此外、只有4个 ECAP 事件、因此如果信号为1MHz (即50个事件)、实际上无法一次性捕获50us 的事件。 在您的情况下、最好使用 DMA。 您可以将 DMA 设置为在50个 ECAP 捕获事件发生在存储器中的某个位置时传输这些事件。 在这50个 DMA 传输完成后、您可以触发中断来处理它们。 如果这一点不清楚、请告知我们。

    当您谈论4个 ECAP 事件时、它是否也对应于 HRCAP 事件?  

    在使用 DMA 时、MCU 必须在每个4个事件(4个上升->上升)后从 HRCAP 寄存 器获取值并保存它、因此每1-2微秒间隔必须有 MCU 输入。 由于它是 DMA - HRCAP 可以不间断运行、只有 MCU 每隔几微秒就会从 DMA 中保存值。 50 μ C MCU 将获取所有保存的值并进行处理。

    MCU 应具有足够的时间来保存所有值而不会丢失任何样本、因为它的运行速度比信号快100倍。 对吧?

    这两个进程能否同时运行? 持续捕获数据(无停止)并每50微秒处理一次?  

    即使在 MCU 处理数据期间、MCU 也可能在 处理过程中始终停止、并在 HRCAP 中的新数据可用时从 DMA 保存新数据。 对吧?

    谢谢 Frank、

    此致、

    Michael

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

    您好、Michael、

    好的、如果您只对频率感兴趣、那么9MHz 是您的上限。 您在以下问题的答案:

    1.是的、4个事件也扩展到 HRCAP。 请记住、HRCAP 是 ECAP 的扩展。 TRM 中概述了一些注意事项、但这4个事件也适用。 我认为您的输入信号足够慢、您实际上可能只需使用1个事件即可摆脱这种状态。

    2. DMA 表示设置后无 CPU 干预。 在这种情况下、在每4个事件后、DMA 将把这4个捕获的值传输到 RAM 中的某个位置、而无需 CPU 干预、并一直执行此操作、直到48或52个捕获完成。 之后、DMA 将触发一个中断来为这些捕获提供服务。 这就是 CPU 的用武之地。

    3.如上所述,软件/CPU 发挥作用的唯一一点是当您处理中断中的捕捉时。 至于是否有时间在当前中断中完成处理并等待下一个中断、具体取决于您正在进行的处理。

    4、可以在硬件中同时运行。 ECAP 捕获和 DMA 保存到存储器的操作将在硬件中完全发生。 您只需确保处理时间不会超过中断频率。 本质上、您需要在 DMA 开始从头重新写入表之前完成处理、否则数据将过时。

    5.是的,您可以随时停止此操作。 例如、在接收到中断后、您可以在开始处理数据之前停止 ECAP 再进行捕获、从而不会覆盖捕获表。 完成处理后、您可以重新布设 ECAP、退出中断并等待下一组捕获。

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

    弗兰克、

    完美、这就是我需要知道的。

    1 -您是指使用一个事件而不是4个事件? 我想4将使平均值更好、并提供更高的精度。

    2 - 5 -理想情况下、根据 一个捕获事件中的48-52个事件计算平均值。 则无需停止捕获新数据。 问题是 MCU 是否可以  在一次新的捕获覆盖之前(0.25uec)之前完成此计算、还是应在其他位置复制48-52个捕获、以防止在新的测量周期的下一个50 uec 内通过新的测量和处理覆盖它们?

    我的应用程序对感应到的数据之间的延迟非常敏感、并在后处理后将其转发(平均值、查找表等)。 因此、我不想在处理过程中丢失任何测量数据。

    谢谢、

    Michael  

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

    Michael、

    我的意思是因为你只捕获上升沿、所以你不需要使用全部4个事件、但是用这种方式为4个事件设置 DMA 会稍微有点棘手。 为了简单起见、您只需设置1个事件并一次传输1个 DMA、而不是4个 DMA。 在这种情况下、确保 DMA 的利用率较高、但这一切都发生在硬件中、因此不会给其他任何东西带来负担。 我建议您先了解系统的工作原理、然后再将系统一次增加到4个事件。

    2、如果信号为1MHz、并且您捕获50个周期、那么您的处理总共需要5000个时钟(100MHz)。 但是、在您获得中断以在数据被覆盖之前复制数据后、您有100个 sysclks (1MHz 周期、假设您每次仅捕获1个事件)。 本质上、您有更多的处理时间、但在数据过时之前的时间很短。

    您可以使用2种方法来实现这一目的:您可以在处理中断前立即复制数据、也可以使用 DMA 来实现这一目的。 基本上、在 DMA1完成最初的50次传输后、它不会触发处理中断、而是触发 DMA2将内容复制到缓冲区位置。 第二个副本的速度要快得多、因为它将以 SYSCLK 速率而不是 ECAP 捕获速率发生。 DMA2完成内容缓冲后、它将触发处理中断、该中断适用于缓冲内容、而不是原始传输。 处理中断结束并循环重复。

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

    我测试建议的方法并告知您。

    感谢 Frank 的所有支持。