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.

[参考译文] TMS320F28384D:ECAP 第一次捕获事件的时间戳不准确

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1349829/tms320f28384d-ecap-inaccurate-timestamp-of-the-first-capture-event

器件型号:TMS320F28384D

尊敬的 TI 社区:

我正在使用 eCAP 模块通过 X-BAR 观察并检查 ePWM 模块生成的信号。 ( 以示例 ecap_ex2_capture_pwm.c 为基础)

设置好所有内容(4个捕获事件以观察 PWM 特性、启用事件计数器复位)并启用中断后、我遇到以下问题:

  • 第一个中断: ECAP_EVENT_1的事件时间戳为 15214、其中所有其他(2-4)都等于 8003 (正如预期的、具有2000的周期计数)
  • 以下中断:  ECAP_EVENT_1的事件时间戳介于8000-8006之间 、其中所有其他(2-4) 仍等于 8003 (如预期)

初始化和设置之后、第一个中断的时间戳值似乎会漂移很多。

但是、为什么 在第一个周期后以及关于捕获事件1的后续所有周期后、当所有其他事件 (2-4)仍然一致8003时、它也不一致?

第一个事件的值的预期最大漂移是多少?

提前感谢!

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

    您好 Jules:

    [quote userid="517981" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1349829/tms320f28384d-ecap-inaccurate-timestamp-of-the-first-capture-event 似乎初始化和设置后第一个中断的时间戳值漂移很多。

    eCAP 是否在 ePWM 之前启动? 如果是、这可能就是第一个中断存在一些偏差的原因。

    [报价 userid="517981" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1349829/tms320f28384d-ecap-inaccurate-timestamp-of-the-first-capture-event "]

    但是、为什么 在第一个周期后以及关于捕获事件1的后续所有周期后、当所有其他事件 (2-4)仍然一致8003时、它也不一致?

    第一个事件的值的预期最大漂移是多少?

    [/报价]

    为了验证、如果您使用默认示例、是否有任何差异? 您在示例中修改了什么、只是修改了 eCAP 的输入吗?

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

    谢谢你的答复。

    eCAP 在 rPWM 之后启动、但第一个周期对我来说不是问题、我可以简单地忽略它。

    除了通过 X-BAR 更改了输入之外、我唯一添加到示例中的是读取第一个事件、因为我要使用4个事件的整个捕获范围。 我觉得第一个事件被从例子中省略了,完全是因为我遇到的同样的原因。

    对我来说,为了能够争论,理解转变来自哪里就足够了。 谢谢!

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

    编辑:分析期间,我注意到它不限于事件1 ,而是其中一个事件4。 例如、在已修改的设置中、计数器模式为递减且有一个额外的比较值、则第二个事件时间戳会漂移、而事件1、3和4的时间戳是 一致的。

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

    您好 Jules:

    我认为我已经发现 其中一个捕捉不同的原因、 这很可能是因为示例本身。 如主 C 文件顶部的注释所述、此示例使用 ePWM、它在 eCAP 中断期间更改其时基周期。 由于周期发生变化、因此所看到的差别可能是 eCAP 捕获此变化的时刻(这不一定总是在第一次捕获事件时发生、但很可能发生在此处)。 我使用一致的 ePWM 信号进行测试、且测试中没有偏差、因此这就是捕获值不一致的原因、这也不是意外行为。

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

    你好 Omer 和谢谢你的回复.

    我快速修改了这个示例、以便能够与您分享。 我还禁用了周期递增。

    在第293行设置断点并观察 cap1Count-cap4Count 会导致 ME 出现所述的行为。 事件1会稍微发生漂移、而所有其他事件都符合预期。

    e2e.ti.com/.../ecap_5F00_ex2_5F00_capture_5F00_pwm.c

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

    您好 Jules:

    我只能复制在对代码使用断点时看到的内容。 如果我正常运行并在"Expressions"窗口中使用"Continuous Refresh"、则这些值保持一致。 这里没有问题、您现在看到的差别可能只是因为您正在设置断点(在某种程度上应该是预期的、因为在独立模式下运行的器件不会期望在 ISR 中间暂停)。

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

    感谢您的帮助、Omer! 断点实际上是我的问题、我对它太深了、忘记了断点的副作用。