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.

[参考译文] TMS320F280049C-Q1:ECAP 寄存器读取时间过长的原因

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1634489/tms320f280049c-q1-why-the-ecap-register-read-too-long-time

器件型号: TMS320F280049C-Q1

您好的团队、

我向我的客户询问这个问题。

我的客户希望在 CPU 负载下使用我们的 ECAP 来捕获输入信号周期和脉冲时测量 CPU 负载。

我建议他们使用计时器来获取测量它的时间戳。

但在 I 测试后、ECAP 寄存器读取需要较长的时间(超过 100 个 CPU 时钟)、您能帮助检查其是否合理吗?

image.png

代码可从以下网址下载: ecap_ex2_capture_pwm_loading.zip 

谢谢!

BRS

Shuqing

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

    尊敬的 Shuqing:  

    我 测试了您共享的代码并测量了 ECAP 寄存器读取操作的执行时间。 使用 HWREG (myECAP0_BASE + eCAP_O_CAP1) 读取 ECAP 寄存器的执行时间被发现为 4 个 CPU 周期。
    这项决定如下:
    当两个背对背 CPUTimer_getTimerCount () 调用在没有读取寄存器的情况下执行时、计时器计数的差值为 57 个周期。
    当在两个 CPUTimer_getTimerCount () 调用之间插入 HWREG (myECAP0_BASE + eCAP_O_CAP1) 时、差值增加到 61 个周期。
    这表示 ECAP 寄存器读取操作会增加 4 个周期的开销。
    相比之下、客户正在使用 API eCAP_getEventTimeStamp (myECAP0_BASE、eCAP_EVENT_2)。 此 API 包含其他开销、例如:
     用于事件选择的基址验证检查和 switch-case 语句
    这些额外的操作可能会导致通过 API 观察到的执行时间增加。

    这是使用 HWREG () 时的反汇编视图的图像。

    这是使用 API 时的映像。

    希望这能解答您的疑问。 如有任何疑问、请告诉我。

    谢谢、

    Divesh