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:使用 DCCAP 捕获 PWM 周期问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/962493/tms320f280049c-use-dccap-capture-pwm-period-issue

器件型号:TMS320F280049C

你好、Nima、

问题:DCCAP 无法捕获正确的 PWM 周期。

背景:

(1)当我配置 DCFCTL[EDGEFILT]= 1时、DCCAP 可以捕获正确的周期值。 但是、PWM 可以与 DCEVTFILT 正确同步。  

(2) 当我配置 DCFCTL[EDGEFILT]= 0时、DCCAP 可以捕获正确的周期值。 PWM 可以与 DCEVTFILT 正确同步。  

(3)我配置 CMPSS、XBAR、ePWM 直流子模块、它们应生成如下所示的波形。

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

    背景补编:

    I 设定同步信号周期(DCAEVT1.SYNC) 200kHz

    (1) DCFCTL[EDGEFILT]= 1、表达式中显示的 ePWM.DCCAP 为497~500 (正确)。

    (2) DCFCTL[EDGEFILT]= 0、表达式中显示的 ePWM.DCCAP 为1 (错误)。

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

    是的、很遗憾、CTR =零后消隐窗口不会立即消隐。 消隐窗口需要3个周期才能开始消隐。 我们知道这一点、并将其添加到 ERATTA 中。 F2837xD 器件 eratta 中已经提到了这一点。 也将添加到此器件中。

    NIMA

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

    你好、Nima、

    还有另一个问题。

    (1)由 DCAEVT1.SYNC 生成的 TB 子模块同步信号、仅在上升沿启动 TBCTR 同步? 或者上升沿和下降沿都可以触发 TB 同步?

    (2)直流捕获逻辑块(DCCAP)仅捕获上升沿事件或双边沿事件(将 TBCTR 的值复制到 DCCAP)?

    谢谢!

    -Minghan

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

    问题补充:

    (3)为什么(DCAEVT1 ORed 消隐窗口)通过边沿滤波器的信号流不受消隐窗口的影响? 在我的测试中、DCCAP 可以捕获这种情况下的正确周期。

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

    3) 3)因为信号不是基于边沿的、而是基于电平的。 因此、当您使用边沿滤波器时、您会使其基于边沿并且工作正常。

    2、1)我认为它们基于级别。 用于启用同步的门/用于捕获 DCCAP 值的门都是基于电平的。

    NIMA

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

    非常感谢!

     在边沿滤波器中、边沿传输到电平吗? 我是说、边沿进入边沿滤波器、边沿滤波器的输出从低电平变为高电平?

    但是、当第二个边沿进入 边沿滤波器时、边沿滤波器的输出是什么(如果我设置 DCFCTL[EDGECOUNT]=001、边沿滤波器的处理过程始终是边沿)?

    非常感谢!

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

    另一个问题:

    (1)在我的测试中、为什么只有 DCFCTL[EDGEFILTSEL]=1和 VCAPCTL[EDGEFILTDLYSEL]=1能够捕获几乎正确的值?

    为什么必须设置 VCAPCTL[EDGEFILTDLYSEL]?

    (2)如何向客户解释6个时钟误差? 因为正确的值应为500、但捕获值为506。

    非常感谢!

    -Minghan

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

    后接地补电:

    出于测试目的、我禁用延迟块(通过 VCAPCTL[EDGEFILTDLYSEL]=1进行初始化)、以便它不会向边沿滤波器块选择的边沿添加任何延迟。 (VCAPCTL[VDELAYDIV]=000、HWVDELVAL = SWVDELVA=0、如 TRM 中所示)。

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

    [报价用户="Minghan Dong"]如何向客户解释6个时钟错误? 因为正确的值应为500、但捕获值为506。

    Minghan、

    实际上、您似乎已经找到了一种模式、该模式在某种程度上是我们的消隐窗口 eratta 的权变措施。

    EDGEFILTDLYSEL = 1似乎允许不将消隐窗口问题插入逻辑中。 我不知道为什么这实际上起作用。

    对于506 (额外6)、实际上有一个解释。 因此、您的信号会经过、可能是 GPIO 输入、输入 XBAR、ePWM XBAR、最后是延迟块。 每个 XBAR 都增加了一个1-2周期延迟。 额外的6是由信号链中的延迟引起的。

    NIMA

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

    [引用 USER="Minghan Dong"] 在边沿滤波器中,边沿传输到电平吗? 我是说、边沿进入边沿滤波器、边沿滤波器的输出从低电平变为高电平?[/quot]

    是的、一旦 EDGECOUNT 的边沿数到达、信号就会变为高电平。

    当该值与 EDGECOUNT 匹配时、将生成 TBCLK 宽脉冲、然后该脉冲将输出到 DCEVTFILT 信号上。  

    启用 VCAPCTL[VCAPE]且 VCAPCTL[TRIGSEL]将确定什么复位 EDGECOUNT 计数器。

    NIMA