器件型号: TMS320F280049C-Q1
您好的团队、
我向我的客户询问这个问题。
我的客户希望在 CPU 负载下使用我们的 ECAP 来捕获输入信号周期和脉冲时测量 CPU 负载。
我建议他们使用计时器来获取测量它的时间戳。
但在 I 测试后、ECAP 寄存器读取需要较长的时间(超过 100 个 CPU 时钟)、您能帮助检查其是否合理吗?

代码可从以下网址下载: ecap_ex2_capture_pwm_loading.zip
谢谢!
BRS
Shuqing
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
您好的团队、
我向我的客户询问这个问题。
我的客户希望在 CPU 负载下使用我们的 ECAP 来捕获输入信号周期和脉冲时测量 CPU 负载。
我建议他们使用计时器来获取测量它的时间戳。
但在 I 测试后、ECAP 寄存器读取需要较长的时间(超过 100 个 CPU 时钟)、您能帮助检查其是否合理吗?

代码可从以下网址下载: 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